Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

[DevLog] Moon Skirmishes Episode XVIII

A topic by internationalfish created Feb 07, 2018 Views: 468 Replies: 15
Viewing posts 1 to 8

OK, so it's not actually the 18th episode. I claim artistic license with precedent.

Premise: You are a firing officer on the super laser main shooty-thing aboard the Death Star Shooty Moon. The Empire Imperium has tracked the last of the Rebel Alliance Mutinous Allegiance to the Outer Rim Inconvenient Zone, and it's up to you and the Imperial Fleet Sky Patrol to take them out!

Gameplay: One Room to Shoot Them All: Your office is firing control, and your coworkers are other firing officers. You are tasked with targeting and destroying the few remaining planets hosting enemy encampments, permanently crippling the mutineers' military capability.

Development: I'm splitting this up into phases. After each one, the game should be incrementally less disappointing, but still releasable should I run out of time before doing everything I want to (which is massively likely).

  1. Initial: Ability to move around the room, target planets with a simple flat UI, destroy them (screen shake, no cutscene), and thus win.
  2. Friendlies: Ability to talk to other operators (pick and implement a plugin for dialogue trees). Opening text crawl.
  3. Enemies: Rebel fleet (unrendered) starts moving towards you on first planet attack, starting a timer. If the timer runs out, you lose. Win/lose text crawls.
  4. Space: Very basic models of space ships arranged for story (separate rendering area and 3D camera with pixelation effect). Simple 3D planet (win) and Shooty Moon (lose) explosion sequences.
  5. Details: Replace flat targeting UI with one based on actual 3D state. Add Star Destroyer Moon Obliterator fleet around Shooty Moon.
  6. Mutiny: Update dialogue trees to allow simple tree-based persuasion. If enough operators are persuaded, add Moon Obliterators as targets instead of planets; add confusion timer before Shooty Moon is destroyed. Basic Moon Obliterator explosion sequence. Alternate lose text roll.
  7. Skirmish: If persuasion is mostly successful and a Moon Obliterator is targeted, prompt a Final Fantasy-style fight with unconvinced operators. Alternate lose animation (thrown down garbage chute in corner of room?) and lose text roll.

I confess that a "functional inventory system" might just not work here... I may end up doing something cheesy like receiving ribbons for destroying planets, or keeping souvenirs when they're blown up. Or I just might accept disqualification. Anyway, that aside, the game should mostly fit the requirements by phase 2; getting through at least phase 3 would be nice, phase 4 ideal. The others probably won't get done, but that's OK. Something to... aim... for?

Technical: I'm working in Unity, and if this actually gets done, it'll be my first game completed and released in the framework. I've previously had various false starts, a few HTML-only web games (long ago), and a native Android game (no longer on the Play store). As a professional web developer with about 18 years of experience... this is embarrassing. The plan is to release for WebGL and Android, since Android is the platform I'm particularly interested in, but there's not much point making something here that maybe half of my fellow jammers could play. :)

I had two hours last night and managed to figure out the basics of the new Tilemap system, which is pretty slick. Hoping to get the main character in there tonight and post at least a screenshot... this weekend will be slow, since I'm hosting a party and have a lot of prep to do Thursday and Friday. Hoping to do some work Saturday morning before the shindig and then Sunday afternoon; will update as I can!

Submitted

I think it's smart of you to have planned out your work and set milestones for yourself. I believe you can do it!

Maybe I'm not getting it, but just wondering - what are Moon Obliterators? I at first thought they were moving enemy targets (as opposed to just stationary enemy camps on the planets that you have to destroy), but since that phase is called Mutiny/Skirmish, are the Moon Obliterators actually part of the Imperium and you can betray the Imperium by siding with the Mutinous Allegiance + taking out the Obliterators? Haha I hope you can clarify this, seems like a neat setting! :)

(1 edit)

Thanks! Software design and development are things I'm fairly good at, so if I fail at this, it at least shouldn't  be because of inadequate planning. ;)

Death Star -> Shooty Moon.

Star Destroyer -> Moon Obliterator.

The idea is you're on the Empire's side, blowing up the last of the Rebels in the Death Star. The Star Destroyers don't really matter much unless you can actually turn rebel yourself, since the Death Star can take out the planets by itself and gets destroyed immediately if the rebel fleet catches it anyway. So yes, the idea is that if it gets that far along, you can turn on the Empire and take out your own fleet.

Submitted

Okay so it really is a (potential) mutiny! That's really exciting - I hope you get that far to implement it!

Me too. Working on it. :D

You're an awesome booster, dude.

Minor update (and, sorry, no screenshots again). Last night I managed to get the character in and moving over the grid. No animation, and no collisions, so that's not ideal, but at least some minor progress was made.

I spent most of my time fighting with Unity. While I really like the framework, and generally find it extremely impressive, it's kind of a dichotomy: On one side you have features like the physics engine that are just baked in and waiting to be used. Ready to go, flexible and extremely useful, easy and intuitive, just all-around impressive.

Then you have things like... moving. While it makes sense that an object's movement through 3D space is not something that generalizes well between scenarios, it's jarring to go from "holy crap, I clicked a button and now my sphere behaves like a physical object" to "now reference the object's position and update its transform with C#."

Which is exactly the experience I had, all in one feature, with the new Tilemaps. It took less than an hour to learn the feature, figure out how to use it, grab some free art, get it sliced, and construct a room.

And then... nothing.

I guess the feature is solely for creating and managing graphical tiles on a grid. Which is great; I'm a Linux guy, I appreciate "do one thing and do it well." But in Unity,  for some reason, I was expecting "OK, now I have a grid in 3D space. I should be able to attach something to it, right? Base an object's movement around it? Wouldn't that be the the primary use case?" Apparently not.

did manage to get a tile's location and use it to position a non-grid sprite... again, though, outside of the grid. And I was really hoping TilemapCollider2D or something related would be intuitive and readily available, but after better than an hour futzing around with the UI, I just have no idea how to use those or whether there's a simple way to make an object moving over the grid interact with them. Pretty sure I'm going to have to sit through at least an hour of tutorial videos to figure out exactly how to implement this; it seems like one of those corners of the framework that ends up a case of "really? I have to instantiate three of these that don't get used anywhere before I can start using this?"

As much as I appreciate the excellent video tutorials Unity provides, I really, really wish they came with text versions. Ah well. Hopefully Saturday morning I can invest some time to watch and learn.

Something meaty! Yay!


Well, not that meaty. And I still need to figure out how to pull off a reasonable screen grab. But hey, at least it's something.

The Unity tutorials on Tilemap basics are... well, pretty important, and predictably informative, despite (also predictably) being built around a side-scroller rather than an overhead environment. Thanks to those, I got my colliders working reasonably well, and altered my movement script to handle them with a raycast. There's no real animation, and I might just skip that in the interest of actual functionality, but at least there's an environment to move around in.

I threw in a very temporary text field with one of Kenney's pixel fonts just to test grabbing dialogue from the right source (and invoking the control panel correctly for when you can actually use this thing to blow up planets).

So next -- hopefully meaning tomorrow morning -- I'll be starting on targeting and eliminating those damnable Mutinous scum. I'm honestly looking forward to dialogue trees more than the actual targeting and destruction, but I must stick to the roadmap. The roadmap is good; the roadmap is wise. Do not deviate from the roadmap.

(+1)

Biggest takeaway from the long weekend: I need to do some refactoring. The cause for this being that while I'm quite good at planning data-backed web apps, I have a lot to learn about planning Unity development.

On the plus side, I'm actually to the point where you can select a planet and destroy it! You can even do this repeatedly. I settled on the first four planets in our solar system, just to have recognizable names and landmarks... it works well enough, and it'll be enough to finish the game, but it probably comes with some disappointment.

There's a lot I'd have loved to do, but I think refactoring what's there, getting dialogue trees worked out and integrated, and adding some basic sounds and music is about all I'll get to for this one. Which, hey, I can certainly live with.

Screencap when I can, which will hopefully be in the next couple days.

Refactoring, fortunately, took less time than I expected; about two hours, I think, and now things just sort of make a lot more sense. :)

I introduced a Laser (I know, slipping back into canon, dangerous!) object and script that controls... the shooty thing. It also tracks the planets, which are their own game objects, and instantiates UI buttons for each one; this way it doesn't matter how many there are or how they change.

The player script also got a change; it was controlling too much UI, and now just handles the arrow keys and delegates control to the Laser when its control panel is invoked. It'll also delegate to whatever ends up controlling dialogue once that's implemented, so this model makes more sense than what I had, which was basically stream-of-consciousness programming.

I'm still fighting with programs trying to get decent video capture and gif conversion... this one isn't great by any means, but it's better than the last one.


Submitted

Love the laser destruction animation of Venus. Poor planet never had a chance!

Also congrats on getting the refactoring done, it's a great feeling to have clean code where you can clearly outline how the scripts all interact with each other. :)

Thanks! I actually got the opening and ending text crawls (Star Wars style, naturally) working pretty well after I posted this, which is exciting. Mostly just sound and dialogue left, so hopefully I have enough time left to do a good job with those.

(+1)

Hoping to put in some time on this today after I get my contract work done (hooray for Sunday), but as an update on scope...

What works now:

  • Movement (though it's pretty much superfluous)
  • Destroying planets though a control panel UI
  • Opening and closing text crawls

What will additionally work by the end of the jam:

  • Dialogue

So... it's definitely not what I wanted it to be, and even the premise has changed a bit, because I'm going to leave it the way it is (destroying Mercury, Venus, Earth, and Mars rather than anything in-universe). But I'm OK with that; I've learned a fair bit about Unity, and this has pushed me to actually use it more, which is great.

Hoping to get some fun dialogue in, since that should be relatively simple once the dialogue system is in place.

Oh yeah, also intending to get some basic sound in there. But with a major emergency project that has to be done in the next week, it's hard to say what I'll have time for.

So... it's hard to say at this point whether I'll have a submission. The dialogue needs to go in but I haven't had time to figure it out; both libraries I had picked ended up being really obtuse, and I haven't managed to figure either one out well enough to actually do anything. Which really sucks.

Guess we'll see.

Submitted

You are using Unity, right? I don't know if you actually need specific libraries to make a dialogue system. I looked at these three tutorials on dialogue boxes to get me started. The first two are ~15 mins each:

I wish you the best! I hope to play what you have since I know you've spent a lot of time on it already.

Yep, I'm using Unity. Thanks for the references! Unfortunately, I'm really stuck. I have two websites to transition to new servers by the end of the month (so... uh... tomorrow), and they haven't been tested nearly enough by the client. Even if they were rock solid, the transition is going to take all of my time for the next couple days; since they're not, it'll probably be more like the rest of the week plus the weekend.

I'll at least get a video of what I have before it hits the cutting room floor (there's really not much to play). Hoping this gig quiets down in time for me to take another shot at the 7DRL; got the planning for that in place before the excrement hit the wind machine.