A New Beginning - 0.1
I'm excited to take you on this journey as I dive into the world of game creation. In this series, we'll be following the ups and downs of my attempt to build an online coop zombie hoard shooter. Whether you're a fellow aspiring game dev or just curious about the process, I hope you'll join me as I learn, struggle, and hopefully create something awesome along the way.
I am calling this game “Guide Us Virgil” and it is centered around 4 player characters as they delve into the depths of hell. Now, there are already a lot of games on the market that do this concept and do it well. Think: Doom Eternal, Call of Duty Zombies, or the Fatshark Warhammer games. So, my twist on the genre is a PvP extraction mechanic. The extraction mechanic is for a later post but what I have to show off today is some core game loop stuff.
I plan to have 4 characters at launch. For today’s post we have Vengeance.
Now, enemies are where I plan to really show of my skillset. Rendering tons of enemies at once, syncing them across the network, and all the blood effects and stuff is tricky to do. Part of how I plan to pull this off is rolling my own netcode rather than using Unity’s built in netcode solutions and services. You can check out my sailboat video on my channel to see a prototype of my netcode at work but Guide Us Virgil is going to get a complete overhaul in this area.
Now lets move on to game design. What do you do in this game? You and three friends play as a small roster of characters who have to put their heads together to kill satan. Players will have to survive a total of 30 waves and 3 bosses. Players can choose from a variety of perks to equip and level up after each wave. Enemies get progressively more challenging and hoards get larger with each wave and each level. If players get overwhelmed, they can extract to keep their character’s progress and try another run. However, if your team fails to extract, your characters are gone forever. That's the concept. Now lets get into the design behind Guide Us Virgil.
There is a 2012 dice keynote youtube video I have probably watched 1000x. Its Todd Howard at his peak, fresh off of Skyrim’s release and he talks about designing a game that hooks players. He keeps coming back to feel, challenge, and the player’s journey from noob to pro. I actually watched this video the year that it was posted (I was 12 lol) and it really resonated with me because I feel like he really colored in for me what makes a game fun to play.
Feel - lets talk about that one some more. I think animations are big part of “feel”. I spent a lot of time on Vengeance’s animations and how the demons approach the player, how they die, what it looks like to run around, that sort of thing. I want my combat to feel good. Fatshark is a studio that has mastered this I think. When you hit a zombie in one of their games you feel the inertia behind your weapon. Bodies pile up around you and they turn on the boss music… its awesome. I think animation feel is a huge part of the enjoyment I get out of games. Call of duty has really clean animations too. Everything feels tactile and sharp. I want that sort of thing in my game. My approach has to do with speed. When I’m iterating on my animation design I often like move the keyframes around to see how the animation feels. Like when Vengeance reloads, its not a soft thing. He knows this gun and he’s a full time killer so when he puts the magazine in, its snappy. When he hits the charging handle he fucking slaps it into place. Little pauses between quick actions also make animations way more satisfying to play. There’s another video of one of the Call of Duty animators talking about their transition from these like pretty smooth animations to this quick snappy feel for MW 2019.
The katana was a good opportunity to add a sense of style to the game. When Vengeance pulls it out, it plays this animation which I think looks really clean. I only plan for characters to have a melee weapon and a firearm. Also each character’s kit is their kit so like Vengeance is the only character that has vengeance’s katana. I had this one project I gave up on two years ago because I tried to do like 10 guns for each character. Positioning the gun and then animating it with all of the event triggers and everything was just alot. And then you have to have some way to to equip all of the weapons which means you need like onscreen elements and an inventory management system and it just became like what is the point of this? I would rather have like two weapons that feel awesome to use rather than distributing my time across a ton of them.
Okay so more design stuff. Fatshark and Valve have this concept in their hoard shooters called a Game Director. This is not in my game currently. The director is supposed to look a the gamestate, the player’s health, position, etc, and then like turn up the heat and dial back the action when appropriate so that players feel challenged but not overwhelmed. I think I am going to do something similar but much more simple. I have 3 categories of demons: lesser demons, greater demons, and then major demons. The demons you see in this video are the lesser demons. I think my plan around action is to have lesser demons spawn proportional to the players. So each player has x number of lesser demons chasing them all of the time. Because they spawn out of player’s visibility and then they have to navigate to the player, players shouldn’t really be able to tell like “oh those are my 4 demons or whatever.” I also plan to make these things like super fragile so its really more of a power fantasy for the player. The player should just cut through these things. Later in development, I am also considering adding like glory kills like they have in doom eternal or in dishonored 2 where a set of random fixed animations play when the player swings the sword. The greater demons are going to be the demons with more health and where the challenge piece is going to come from.
Okay the last thing I want to touch on for this 0.1 build is character abilities. I have this whole design doc on Notion where I’ve detailed out my entire game concept, road map, etc. I had this whole idea that there would be 4 abilities per character and they could like set these things off to heal or do an aoe effect, whatever. So I made two for this Vengeance character: a dash and then a ground pound aoe effect. And I’ve gotta say, either im terrible at pulling off the abilities or they just dont fit with this game. Like when you’re swinging the katana or shooting the gun it just totally breaks the pace of the entire thing. For the ground pound its like “oh let me stop and do this thing.” Like if your out of bullets and surrounded, its helpful, sure but it doesnt knock back the other demons or reload your gun or anything. The dash is more useful because you can keep from getting cornered and you sort of sprint everywhere so there is no “go even faster” movement mechanic so having it to get out of tight spots is helpful to a limited extent. The abilities just feel out of place and I am thinking about either cutting the abilities altogether or reducing from four to two or something. Let me know what you think in the comments. I am thinking about doing something like having floating buffs like call of duty or tools like in darktide to heal or whatever. I didnt even implement the other two abilites for Vengeance because of how I felt about the first two. The other two were going to be like a teleport slash and then his ult was going to be an everything buff so like speed, health, damage, fire rate, everything.
That’s all I am going to say about this for now. I’ll get into the pvp extraction stuff, the other characters, and stuff at a later date.
Game Dev Journey
Okay so I got started learning Unity during lockdown in 2020. I have yet to ship a real game. I put a mobile game on the Appstores (it got taken down bc I didn’t renew my appstore memberships) but aside from that, not a whole lot else. That said, I have been trying to ship a game every year since 2020. I just get to a point every time where the game just isnt playble or my concept just doesnt feel fun or the polish just isnt at a level that I think people would pay money for and then I give up.
I am sort of fed up with my inability to just finish something and so I am going to do a few things different. The main thing I am doing different is the road map. I actually plan to post it on my website and update it with the progress I make. This I think solves a lot of problems I have run into in the past. Firstly, I can see the bridge. What do I mean by that? I sometimes feel like I am building a bridge and I get half way through building it and go “damn, the bridge needs to go 3 ft to the left” and then I just feel completely destroyed because I feel like I have to start over and then its like well I might as well make a whole new game. Part of avoiding this is that I made sure that every step on the roadmap is something I can actually do. In the past, I was still learning Unity as I went so I would just get stuck or find out I can do it but my execution was kind of shit so I gave up. See the bridge- thats the first part. Another thing that is good about writing everything out beforehand is that you can have an idea one day, but then 6 months later you kind of forget the details around the original plan and so my memory is fuzzy about the general moment to moment of the game and I end up just making a completely different game than what I originally intended to make because scope changed or some system is missing because I didn’t write it down.
The last thing I want to cover in this section is that I’m not really an artist. I think the route to indie game dev is typically: be an artist first, and then learn how to achieve your vision and if that means learning how to script game mechanics then they do that. I think this is why visual scripting like Unreal’s blueprints is so popular. I am coming at this from the opposite angle. Its not that I don’t care about art I just suck at it. With all of the assets on the asset stores online, I think I can make a game that’s visually compelling and give players something they haven't experienced before. I kind of see this as giving me a license to flex my own engineering muscles more than I would otherwise. Like i plant to roll my own netcode and have tons of enemies onsceen at once by simplifying alot of the networking stack.
I really feel like I am at a point where I can make any game I want with Unity given enough time. I also feel like I have outgrown it. Not to go on a tangent here but multithreading in Unity is basically a non-starter. Their animation system has a pretty big learning curve but once you learn it, its pretty good. I really want to learn a new engine. I think Unity being this closed source thing is one problem but even if I was working a source-available engine like Unreal, I would still struggle to get what I want in the engine. I think these “everything engines” are kind of a blessing and a curse. They let you learn one toolset and then you can build anything but the flip side of that is that everything is in there so they’re insanely complicated.
I think the old school game dev approach where your engine sort of is the game and is purpose built for that game is conceptually a better approach for me. Like its easier to get up and running with Unity where you have a whole animation rigging package and a whole terrain system out of the box. This is great if you don’t care about the implementation and you’re willing to commit to doing things the “Unity Way” or the “Unreal Way.” I kind of just want a level editor to place things around and then build the runtime from source. When you run a stack trace through unity’s runtime there's just so much happening and I have zero control over any of it.
Wicked Engine looks cool but I couldn’t get past a few bugs specific to my setup. I also think frameworks like raylib look cool, I just think thats probably too little of an abstraction for a 3d game.
Explaining the series
So I plan to do 10 videos minimum. On my roadmap I have different game builds I want to hit. So on the road to 1.0 I should have 10 youtube videos with 10 polished demos to put somewhere. I might make more videos in between that are more bitesize but I kind of have tunnel vision when I am working on stuff so 10 is all I am willing to commit to for now.
The next video
The next build is going to be focused around netcode. Like i said earlier in the video, netcode is going to be my big contribution in terms of originality. I plan to do all of this cool smoke and mirrors to get stuff to run fast and for matchmaking and stuff.