🔫

Untitled Guns and Drones: Retrospective

📖
This prototype was built with a Unity sponsored hackathon time limit in mind. Though I designed a much larger platform for me to plug this into, the final project was too complex for this simple module, so I opted to continue my learning on other prototypes. If you have any questions about what I did here, or if you would like to collaborate on a project, please reach out to mark+gunsndrones@digitaldragonslayers.com

What went well?

I really enjoyed designing with light to guide the player through all the rooms and to the goals of the level. It meant that I didn't have to bludgeon the player with way points and silly "kill 10 drones at this marker" kinds of quests.

Also, for this fps tutorial, I added my favorite spawn mechanic: the gauntlet style spawner represented by a large, brightly lit totem with hitpoints and loot of its own. The only way to not be overwhelmed by attacking evil bots was to strategically take out the enemy spawners, gather resources, and run back to your own spawners to apply those resources to buying more of your own troops.

Also, I got some excellent feedback that anything which can take damage should make it obvious in the ui, so I added health bars to all my crates and barrels (crates for resources and barrels for weapon and equipment upgrades).

Also, as this was a Collab with another creator, we set up kinematic soup's Scene Fusion and had a lot of fun working on scene design elements multi-user in editor. I didn't know at the time that most developers and content creators just worked in silos, so I wanted to find a way to make it feel more like my collaborator and I were in the same room, and Scene Fusion helped achieve that to some degree.

Lastly, I spent a lot of time tweaking all the ai states, increased the aggressiveness and fire rates of all enemies while keeping friendly bots as damage sponges more than DPS. This ensured that the player has to run around and complete the level, as the enemy bots will always overpower the friendly ones.

I had future plans to allow the player to choose which kinds of bots to spawn to customize and lead his army instead of just sending them dumb down a path, but the goal of that project was to submit by a deadline, so I wrapped it up there and moved onto my next framework for learning.

What didn't go so well?

I felt like the framework was too complex for a quick run and gun game, but since it was meant to be a complete FPS framework for learning, I can appreciate that they probably built it that way to encourage some best practice I just don't have a name for yet.

Since this was initially meant to be a two person collaboration for a weekend hackathon, our chosen real time collaboration tool of Scene Fusion required Unity Collab, but we didn't sort that out before the event, so we spent too much time figuring out Unity Collab in 2018.4, and then how to bring it up to real time in Scene Fusion.

Also, from a lights standpoint, baking lights takes dozens of hours on my 4 core, 8 thread 4ghz cpu. I was able to cut that down in half by baking on my gpu, but that was still experimental in 2018 LTS (where this project was built), so that is less than ideal as well. And enlighten (the third option) is deprecated in 2018, so no need for me to learn it. I will have to add "learning how to optimize my light baking" to my self defined curriculum.

Lastly, level design still feels clunky, even with snaps and the provided runtime mesh merging. When I wanted to make a room full of dynamic things, placing, lighting, and making sure that navmeshes worked was a ton of overhead, where I really just wanted to make the room feel challenging and be pleasing to the eye.

What did I learn from it?

If I had it all to do again, I would have much simpler map geometry (not the basic unity snaps recommended for the hackathon), as I imagine that large count of unique parts impacted my light baking a lot and it did not really help me design a robust level quickly. In future projects, I will be leaning more on programmatic randomization for objects and rooms, and designing levels with rules instead of placing blocks and lights by hand.

I also learned a lot of ins and outs on building a shipping on a deadline. Picking the music, placing my level geometry, baking, getting my adrenaline pumping music changes (for tbe boss battles) timed just right... It was all a lot to wrap up by the 2am deadline.

Next time I do a weekend hackathon, I will also get more solid commitments from my teammates so that we can divide and conquer the work with each capable creator focused on their task to free me up to do just the mechanics and elements I find the most joy in building and playing.

Lastly, I learned to spend less time on setting up tools and writing a design doc and more time hacking code. For reference this is the design doc which when printed would be 8 pages long. Less than half of the design was completed during the hackathon.

Screenshots, GIFs, and Videos

Picking up some metal and spawning creeps while defending base.
Picking up some metal and spawning creeps while defending base.

Spawning Friendly Creeps and watching them do their job.  I also had some friendly fire and had one of the friendly drones come back to say "hey, stop that!", but then he noticed other enemies and went back to work soaking up bullets.
Spawning Friendly Creeps and watching them do their job. I also had some friendly fire and had one of the friendly drones come back to say "hey, stop that!", but then he noticed other enemies and went back to work soaking up bullets.

Animation of the player icking up weapons, jetpack, and meta-metal — followed by some combat and helping out some friendly drones.
Animation of the player icking up weapons, jetpack, and meta-metal — followed by some combat and helping out some friendly drones.
The player spawn unit has a green aura around it to indicate it is a healing sphere.  The Goal indicators in the top left give the player instructions on how to further use the friendly spawn unit.  Under its own power, it generates a set amount of meta-metal every second and eventually would spawn a friendly drone, but you can inject meta-metal into it by stepping close to it and holding F — allowing it to spawn friendly drones at a accelerated rate.
The player spawn unit has a green aura around it to indicate it is a healing sphere. The Goal indicators in the top left give the player instructions on how to further use the friendly spawn unit. Under its own power, it generates a set amount of meta-metal every second and eventually would spawn a friendly drone, but you can inject meta-metal into it by stepping close to it and holding F — allowing it to spawn friendly drones at a accelerated rate.

All of the spawned resources (called meta-metal in this prototype) glow gold to make their value obvious and the pickups easy to see.
All of the spawned resources (called meta-metal in this prototype) glow gold to make their value obvious and the pickups easy to see.

Multi-level dungeon.  One hostile (orange) blip is on a level above me, and some number of blue pickups.  There are a few friendly green dots on the same level as me along with a lot of blue pickups, and the most of the orange enemies are in the level below me.
Multi-level dungeon. One hostile (orange) blip is on a level above me, and some number of blue pickups. There are a few friendly green dots on the same level as me along with a lot of blue pickups, and the most of the orange enemies are in the level below me.

Leading the player from point to point on the map with light indicators at doors and passageways.
Leading the player from point to point on the map with light indicators at doors and passageways.

For everything that can take damage, it gets a health bar after one shot.
For everything that can take damage, it gets a health bar after one shot.

When inside of the green dome of the player spawn, you will automatically heal and you can transfer metal from your inventory to the spawn block so that it can spawn more friendly drones.
When inside of the green dome of the player spawn, you will automatically heal and you can transfer metal from your inventory to the spawn block so that it can spawn more friendly drones.

When a crate is destroyed, a random count (within a range) of metal is spawned.
When a crate is destroyed, a random count (within a range) of metal is spawned.

Still capturing the player's attention with light.
Still capturing the player's attention with light.

Enlighten is being sunsetted, but I wanted to see it in action.
Enlighten is being sunsetted, but I wanted to see it in action.

GPU Lightmap baking
GPU Lightmap baking

CPU Lightmap baking (not enlighten)
CPU Lightmap baking (not enlighten)

Final run of the boss after I'd cleared all the evil drones. You will notice a bit of lag when there is too much meta-metal on the screen at once, which is aligned with what I expected with all real time lights attached to rigidbody objects.
♥️
NOTE: for these dev builds, I have the player's health set to 1000 where for release, it would likely be closer to 100 at start. There is also an option to set yourself to invulnerable in the pause menu.

Demo Builds

⚙️ Build 0.1

This is the initial release build 0.1 for windows (32).

  • It includes 1 level
  • all of the game play mechanics highlighted above.
  • two types of enemies
  • four types of player guns
  • one player upgrade
  • one type of resources
Untitled Gunes and Drones Game build-0.1.zip69086.9KB

⚙️ Build 0.2

An update I created as I was writing this retrospective which fixes a few issues.

  • fixed a few lighting issues
  • removed the resolution menu on launch.
  • Goes strait to matching resolution of desktop with exclusive fullscreen now.
Untitled Gunes and Drones Game build-0.2.zip52629.0KB