We were amazed at how well this project went and were immensely proud of what we acheived in 7 days. We're a two man team of a programmer (former C#/Unity professional) and an artist (Blender/Substance Painter guru). We also roped in my daughter to help us play test the game during the week. That was invaluable as well as she saw things that we just didn't notice like typos, graphical glitches and she played the levels without taking any shortcuts that we do while testing, like removing all the enemies to test the level flow.
Game Design Document
This was the plan we put together the week before the jam so when we started we were effectively working from a list of things we'd already decided to do. Essential to remove decision dilemma and prevent too much procrastination. There were quite a few items we didn't get to and we ended up dropping the oxygen stat entirely during the jam week and just going with Health and Battery:
Unity Asset Store
We didn't start with a completely from scratch though and we wouldn't have been able to make this without these amazing Unity Asset Store assets that I've bought over the years (whenever a sale is on). OK some aren't so amazing (I'm looking at you Party Hat):
- Zombie [free] - The star of the show. The textures are great, the animations are simple but all you need and the skinned meshes come in 3 flavours. You can even break the body parts apart (a stretch goal we never got to).
- Shiny SSRR 2 - Screen Space Raytraced Reflections - An absolute must for URP developers. I can't understate how important this was to the look of the game, especially with metallic floors, walls and robots.
- Ultimate Hat: Party [free] - When you fail in a level we wanted the Zombie to celebrate. What better way than with a Party Hat. can really didn't like it but there wasn't enough time to swap it out.
- Mouse & Keyboard Icons Pack - To improve the HUD, which is just a TextMeshProUGUI object we wanted to show keys for keys and symbols for the mice. I bought this the week of the jam, hoping it would go on sale in the Spring Sale, but it didn't. Still well worth it though.
- Toilet [free] - The rest room needed a toilet. The asset store delivers. The lid doesn't open but we had other things to worry about.
- Sci-Fi Arsenal - Buy it now. All the projectiles and laser effects were straight out of this asset, almost completely unchanged. The effect is amazing. If you get to the last level and pick up the Rocket Luncher (that's the name of the asset but I think it was a typo from the author) and fire it it's just so satisfying
- Sprite Camera Maker [deprecated] - It may be deprecated but it's still my goto tool for producing top down images from Unity for use in the Tiled Map Editor.
- Animated Loading Icons [free] - If things go really well you'll never see them but if the map takes a bit of time to load then you'll briefly see one on a black screen. Just what we needed and free.
- FinalIK- This is only use for the AimIK on the start screen. Behind the camera a sphere moves up and down in time with the music volume, move if the volume is higher, less if lower. The Zombie uses AimIK to follow at this sphere which makes it look like he's banging his head to the beat. Yes I spent 3 hours on this and it probably wasn't worth it but it was good fun.
- Space Graphics Toolkit - A bit gratuitous to use this to be honest but we needed a good looking picture of the Earth for the end game screen(s) and I knew this had it via a free downloadable pack. This increased the download size for little gain but it looks good when you see it.
- GUI PRO Kit - Sci-Fi - Great for those Sci-Fi panel borders and used on the keypads, door location signs and menu buttons.
- Sci-fi Weapons Arsenal - Just incredible looking 3D guns. They even have animations, although we didn't use them. The grenade was used as our Intel asset that you pick up on the last level.
- Ultimate SFX & Music Bundle - Everything Bundle - All the music and almost all of the sound effects come from this package, including all the zombie noises. I kept looking at other sound packages but cam back to this one every time. It has almost everything you would need for a game.
- [Graphy] - Ultimate FPS Counter - Stats Monitor & Debugger [free] - If you press CTRL-ALT-G you see a frames per second counter. Keep pressing it and you see memory stats, audio usage and a whole host of useful diagnostics. This is the first thing I drop into any new Unity project. Why would you use anything else?
- Random From Distributions: Statistical Distributions Random Number Generator [free] - I prefer my randomness to be shaped and this provides a very simple to use set of functions for applying normal distributions to Unity's random number generator.
- SpaceNavigator Driver [free] - You've never been as productive as when you're moving around a Unity scene (and now Substance Painter) with a 3DConnexion SpaceMouse. They're not cheap but I used to use one for CAD and they're just so much more intuitive than using a mouse.
Software Libraries
- TiledCS [free] - I forked this on github a while back and used it to develop a tiled->prefab loader for a game we're working on. This is the backbone of the Robots and Zombies game. It allowed us to concentrate on creating the levels in the Tiled editor, which is much more restrictive than Unity but with that restriction comes control. There are no rogues MonoBehaviours that you added in that you forgot about. You have a set of well tested prefabs and the corresponding PNG in the TileSet.
- DOTween [free] - I tend to use a lot of Unity animations (in Legacy mode) to do simple things. The drone robot (Zeek) is just a very simple movement (and then rotation added by Dan). Then again sometimes you just need a quick animation that you can wait on in a Coroutine easily and DOTween is perfect for that. The Zombie Jaw shake was the out of the box DOTween DOShakeRotation.
Sound Assets
Freesound is my go to place for sound assets if I can't find it on the asset store and these guys deserve the attribution for their efforts. Many thanks guys:
Font Assets
I have a love of typography and Google Fonts is my go to place for free to use fonts for games. There are two fonts used in the game, the main one is Teko, which is also used on the itch.io pages and Permanent Marker, which is used for the decals on the walls that reveal the codes needed to open doors.
Tools Used
- Excel - We managed one round of game balancing on the last jam night using a quick Excel spreadsheet to make sure the guns on each level scaled roughly linearly with respect to damage per second, even though they each did different amounts of damage per shot and had different fire rates. You may also notice that you walk slower with heavier weapons. We had 3 enemy types, the Zombie which could only attack when he was on an adjacent square, a drone (Zeek) which could attack at any distance as long as they were in line with the player and the big/slow robot Chunk which could attack with a devastating flame thrower when you were within 3 squares of it.
Assets That Existed Before The Jam
These assets weren't created for this game but part of the reason we did this particular game jam is that we had these assets made for a top down strategy game we're working on. We weren't sure how they'd look in first person so this Jam gave us a chance to experiment with exactly that.
- The starting Tiled Tileset (not the map files) had the walls in and a few other things that you won't see in the game because they're part of the other game we're working on.
- The Drone robot (Zeek) and the Large Dalek style robot (Chunk) were created for our top down strategy game, although Dan did tweak the textures in Substance painter as the week went on to get the lights to appear in the dark.
- The walls/doors/windows, floor tiles and ceiling tiles were all taken from the top down strategy game we're working on, however they are incredibly low poly (each wall is 12 vertices) and we combine the individual prefab meshes into a larger mesh when we load the tile map in so it renders very quickly. The walls and furniture all use a single trim sheet texture as well.
- The C# code to use TiledCS and swap out tiles for prefabs of the same name (255 lines). We may open source this as it's really simple but very powerful.
Assets Created During The Jam
Creating artwork is not easy and everyone takes it for granted how much time it takes to make something looking good. Kudos to those asset store publishers who do such an amazing job with this kind of thing. Anyway, here's a list of what Dan made:
- All 5 Tiled maps - roughly one per day. Dan did all these and the game design with them while I coded the prefabs.
- Tiled Tileset Extras - Zombie, Keypads, Door Locations, MiniMaps, Entry/Exit lifts, Terminals, TV, etc.
- Inside Helmet - This was a 3D model Dan made in Blender and then raytraced in Cycles before using it as an overlay for the player.
- Cracked Visor - We wanted to represent the damage a player had received without using blood splats (they give you a mature rating for that kind of thing these days). Dan created a broken glass texture with Photoshop layers that we fade in using AlphaClipping.
- Visor Distortion - This is just a one of the six faces of the default cube in blender when you distort it to almost be a circle. This mesh had its UVs set and onto that we rendered the HUD to a rendertexture and put that as a material on the player UI to give the distorted glass look. We got the idea from see this SpaceX/IronMan mockup image and Dan said he could do that really easily:
- TV Distortion shader - Random whit noise on the TV screens, all generated procedurally in Shader Graph.
- Animations - all the animations for the robots, doors, UI effects, screens, etc. were created in Unity's Animation Editor.
- Cursor, EXE Icon, Splashscreen - All the little things that say we dotted the i's and crossed the t's.
- Game Screens - Main Menu, Pause, Level Completed, Level Failed, Game Complete (with two alternate endings with different graphics and sound)
- Minimaps - Just an orthographic camera taking a screenshot of the map from above, with ambient occlusion turned up and no post processing, and then putting UGUI red and blue dots on it that represent the positions of the player and the enemy.
- 62 C# files - The code that makes it all happen. According to Visual Studio there are 1,458 lines of code in those files.
Child Labour
I persuaded my daughter (with pocket money and easter eggs) to be our tester for the week and she did a great job. She was the third member of the team and although she wasn't full time she put in quite a few hours. All the videos you see, including the trailer and play through, were made using OBS. The Trailer is actually a series of test videos she made to show us what had gone wrong and we cut them just before the bug happened - zombies walking through doors, drones firing lasers through walls, etc.
Time
Adam (Arlorean) is a retired programmer (30+ years of C++/C# development) who has a lot of time on his hands but really pushed the boat out and burnt the midnight oil on this one. Dan (Carodan) is a full time artist (30 years+) but was willing to spend a week working on this game so we could see what we could deliver in 7 days. We previously did an Asteroids clone called Viroids but it wasn't for a Jam, it was just to see if we could work well together and finish a project.
We probably each spent at least 12-16 hours a day for the full 7 days on this project. Many nights I counted 5 hours sleep. It's unsustainable in the long term but for a short sprint like this is was doable, although I slept for a long time on Friday/Saturday before we started playing everyone's games. They're all great BTW.
Thanks
We hope you liked our game. If you have any questions, feel free to reply to this post or DM us directly.
Thanks,
Adam & Dan
Bonus Update
We just did a MacOS build for any diehards out there who refuse to use Windows:
MacOS Build (Allow apps from Anywhere to run as it's not signed)