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 firstname.lastname@example.org
- What went well?
- What didn't go so well?
- What did I learn from it?
- Screenshots, GIFs, and Videos
- Demo Builds
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
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.
⚙️ 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
⚙️ 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.