Eat. Sleep. Indie. Portfolio

Professional Freelance Game Design

I recently decided to start keeping a devlog for my personal projects. Here you can find progress updates for my current projects and also check out any new mechanics I've been playing around with in my spare time.

Bait

March 11th

I've been spending a lot of time on project clean-up today, mostly removing the parts of asset packages that I won't need while keeping the parts I do need in tact. This work is being done in preparation for the switch from the demo version of this FPS package to the full-version.

While working I decided to whip up some zombie bait, which is really just an extension of the grenade system minus the explosion. When the bait's trigger comes into contact with a zombie, the zombie will chase down the bait until the bait is gone, which is currently set to a 15 second timer. I'll likely expand on this in the future, but for now it serves as a nice way to get out of a jam quickly.


Before (left) and after (right)
 

Safety First

March 10th

One of the four new zombies I've added was selected specifically for one of its features, in that the road worker came complete with a helmet. In fact, there are numerous attachments for these zombies that came with the asset package, but I wanted to start with this one since the goal was to incorporate the helmet into the gameplay, and both the mesh of the zombie and the helmet were going to be fairly easy to work with given their simpler geometry.

This zombie has been set up so that his helmet deflects the first several headshots, meaning the player must maintain consistent fire for a period of time to land a single headshot on any road worker zombies. I am leaning heavily towards counting headshots as some sort of in-game currency, most likely for earning skill points that can be spent on things like auto-reload, reload speed, etc. The idea here is that the more difficult headshots help you progress quicker, but the time required to land them successively may put the player in a position where they need to mow down an approacing group of undead quickly, at which point they resort to body shots for a quick and easy way to make some room. This puts them in a position of constantly managing whether they need quick kills to survive or whether they have time to favor precision for the sake of earning headshots that hold more value. This is not set in stone by any means, but it is a feature that I think would work really well with the current game mechanics.

 

New Zombies to Torture!

March 10th

After yesterday's devlog update I decided that I really needed to put my pipeline through some tests to ensure that I could, in fact, extend all of the work done thus far to other zombies. The package I purchased includes about 50 unique zombie meshes to work with, and while I likely won't be using every single one of them, I do intend to use most. I decided that I'd bump up the project to include a total of 5 unique zombie meshes total for now, and proceeded fire up Blender to begin the painstaking dismemberment process of not only adding in the new ones, but also to run the prisoner (that was alraedy setup and working) through the refined process in an effort to maintain consistency.

I started this work late last night and did not finish until shortly after 5 AM this morning. I estimate the total time to go from package-asset to a zombie I can dismember in-game to come in at around 90 minutes per zombie. I not only need to cut the mesh up into pieces, but I then need to create duplicates of all of the various parts, each separate from the original mesh, and then rig up colliders and custom joints in Unity; these sections are what falls to the ground when the original limb is hidden upon severing. I enjoy tedious work when I'm in the mood to half-watch some Mythbusters episodes while I work on a side project, so it's very likely that new zombies will be added intermittently as I progress.

The process involves spearating out the limbs and head from the torso and exporting that to Unity for ragdoll setup. The torso and limbs all need to have any open gaps that result from this dismemberment filled in, and from there I usually extrude out a small piece of bone and then re-map UVs to appropriate colors. I then duplicate every section and remote it from the rig entirely; these are then setup with their own armatures before being exported so that the arms and legs will bend in a realistic way when colliding with other objects in the game itself. When done, I have one complete, rigged zombie with limbs separated from the torso as well as a rigged mesh for each individual limb. The result is a zombie that can have any of its limbs hidden in an instant and a physics-ready limb for each arm and leg, and when these are all combined and working in tandem with my scripts, you end up with a zombie that can be de-limbed with just about anything. If you're like me then you may be thinking "chainsaw", and yes, I would absolutely love to add a chainsaw melee weapon in the future.

This isn't how I would normally tackle this problem since I could likely get fairly decent results via code alone, but the goal here is to become increasingly comfortable with Blender so as to round out my game development process. I enjoy just about every aspect of game development, but there are still a ton of areas that I need a lot of practice with, and becoming more familiar with Blender 2.8 is at the top of my list. There have been a lot of freelance gigs in the past where my (admittedly limited) knowledge of Blender was of great use to my client, and as a full-time freelancer I am always looking for ways that I can expand my skill sets and deliver more for my clients than they might expect from me.


Before (left) and after (right)
 

Exploding Barrels

March 9th

I've been adding polish here and there to my setup, and recently incorporated exploding barrels into the mix. Below is a video of current progress; there's not much to say here since most of this work has been spent tweaking scripts here and there for a better overall feel to the gameplay. I did also implement randomly selected skins for when the zombies spawn, which will be extended to the various other zombie meshes once I get around to them. I'm not entirely sure where I'm going with this yet, but I like the direction it is heading.


 

FPS Update

March 8th

After taking a look at recent gameplay video early this morning, I decided to switch things up a bit. I wasn't sure that third-person perspective was going to suit the game as well as a first-person one, and then I remembered a package I had seen on the Asset Store a while back but never took the time to play around with. So, after finishing a meeting I had scheduled earlier today, I grabbed the demo and went to work. The video below is the result of what I would call my first-draft, brute-force, "get it to work no matter how messy just so I can play it" version. Granted, I did start this project so that I would end up with an improved third-person controller, but I can't help but feel that this perspective fits the zombie-carnage-filled type of game I set out to create. This project has taken on a life of its own.

Implementation went fairly smooth, and it didn't take me too long to get everything setup in a way that suited this project and my workflow; I basically swapped in cInput controls and then played around with their code responsible for bullet physics until I had the desired result, then did the same for the grenade. The assault rifle is as accurate as a sniper rifle at the moment, but I'll be adding some updates to send off bullets with just a bit of randomness, at least for the assault rifle. I will definintely be purchasing the full version of this first-person package in the near future and, given that most of my work thus far has been purely on the zombies reactions to weapon-fire and explosions, nearly all of my earlier work is in tact and seems to be working in tandem with this new package without issue.


 

First Vehicle Test

March 8th

I'm in the process of implementing yet another way to mess with these zombies, this time in the form of a speeding vehicle. Same ol' song and dance as before; this is essentially an explosive device without any explosion effects slightly modified for when colliding with the buggy. It'll need some polish for sure, but I'll worry about that after I get a mechanic for entering/exiting the vehicle in place - and the transition to vehicle controls after that.

This is a short one. Time to get back to it.


As a wise Mythbuster once said: "When in doubt, C4."
 

Detonations

March 7th

My zombie torturing adventure continues as I've just completed the first stages of triggered explosives. This setup was fairly easy to do since I scoped for it when programming bullet collisions; I'm essentially using an overlap sphere to detect zombies within range, ragodlling them the same as I do when they are shot in the head, and applying explosive forces to send everything flying. Add in a particle system prefab that came with the Synty package, and I'm much closer to my vision of maximum zombie carnage.

It likely seems as though I'm all over the place with this, at least in regards of what I say I'll work on next versus what actually gets done, and that's because I am all over the place; I'm pretty much working on whatever keeps me motivated at the time as I play around with ideas and test some mechanics. I'll make get a second zombie rigged up for these as I've said I would, just as soon as I hit point where I'm in the mood for some Blender work. Until then, I'm in the mood to program chaos.


As a wise Mythbuster once said: "When in doubt, C4."
 

First Stress Test

March 7th

I figured I'd share results from my first stress test; I saw now reduction in my framerate of 60 FPS until 200 zombies were in the scene. The video below was recorded with 100 zombies total (to ensure vsync while recording gameplay), all ready and waiting to be ragdolled and dismembered, and all casting real-time shadows while avoiding obstacles and each other. This project is already performing better than I had expected, even at this stage, and there are a ton of places to improve performance when the time comes for some optimzation.

Lastly, I think I will tentatively and affectionately refer to this project as "Bite Me".


 

First Gameplay Test

March 7th

I spent the remainder of my day yesterday updating this portfolio site so that it is more mobile-friendly, and with that completed I decided to incorporate some pathfinding into this zombie shooter. Below is the first gameplay video, and while it still looks very odd that the character isn't even holding a weapon, I'm glad to see that all this work is coming together in a way that is fun to play. I'm really enjoying instances in which zombies are clustered together and I can easily land multiple headshots one after the other.

The pathfinding system does incorporate local avoidance, which allows for large clusters of zombies that will never share the same space. I'll likely do some quick stress tests soon to see just how many zombies I can get away with while my scene is still incredibly simplistic, and after that will likely swap in a low-poly terrain so that the zombies are not always on the same vertical plane. I'll also add in some more props and obstacles to make this little prototype feel a bit more like a game-in-progress.

Later tonight I am hoping to put in some time playing around with different animations so that I can add a weapon to the player character and have them move properly when aiming. The setup featured in this video is what will eventually be the pistol; the assault rifle and rocket launcher that I have planned will step up the carnage expontentially.


 

Dismemberment!

March 6th

The final steps for dismemberment have been completed and I am very happy with the results. It will need some polish in the future, but I am more than confident with pushing forward on this game's design. I'm going to replicate these results for a second zombie model just to solidify the process in my mind before I turn my attention to other things. I expect this second zombie to come together much faster than the first now that I have a pipeline in place, and I'll likely choose another character with a relatively simple mesh to work with again before expanding this system to work with all the zombies I have at my disposal.

I am admittedly anxious to begin animating my player character so that they are holding a gun and aim properly, but at some point between setting up zombie #2 and animating for weapons I am going to give this portfolio site a much-needed layout update to make it more mobile-compatible. This is something I have been putting off for years, but given that 50% of my web traffic is now via mobile devices, it's way past time I got this done. I haven't decided just how much overhaul I am aiming for yet, but the more I consider the fact that this website hasn't been updated properly in several years, the more I feel like this should have been done months ago.

So, pending updates to this website, this project is (very) temporarily on hold for the next few hours at the least. It's not something I'm particulary excited about, but it will definitely be worth the effort when it's done.


A bit o' zombie surgery
 

Spare Parts

March 6th

I have just completed the next-to-last step in this process by creating jointed limbs that interact with the game world via colliders and rigidbodies. These are the sections of the zombie's body that I will be spawning in place of the renderers that are currently being disabled when shot. The idea is to simply swap in one of these prefabs as I hide the limb and then let physics take over, and with any luck the end result will equate to the player being able to shoot off whatever limbs they choose before finishing off the zombie with a headshot.

So far things are going better than expected, and I am really happy with the results I've gotten thus far and also feel confident that the end result is going to be very close to my original plan. There was a point recently during development in which I created a script named "SeveredLimb" and couldn't help but chuckle a bit at the idea of programming such a thing; I've programmed aliens with lasers, warriors with swords, and hunters with bows, but I've never programmed a game that was deliberately gory - certainly not one that was comical and involved prep work that is akin to amputating zombies in Blender. I am honestly not sure what I can do with the mechanic of leaving a zombie limbless beyond amusement for amusement's sake, but maybe there is a way to tie the mechanic into game progression more by providing rewards for de-limbing zombies, or by having a timed combo system in which targeting limbs would net you a higher combo level per each zombie. It's definitely something I will keep simmering in the back of my mind as I progress, since it would make all the work I've put into this little side project worth it and then some.

I'll likely work for a bit longer and get some prep work in place to lighten the load for tomorrow. I am very much looking forward to getting this working over my morning coffee, and with any luck I'll have some limb-severing gameplay video to share by day's end.


Inspired by all of the DOTS videos I see on Reddit, even though this isn't using DOTS
 

Vanishing Limbs

March 5th

I decided to go back into Blender and get a bit more work done on the zombie mesh, mainly adding polys to the severed joints for bones and to select a more appropriate red color for the flesh. I would eventually like to go back in and split the arms and legs in half again at the elbow and knee, but for now I'm going to move forward with this to see how everything comes together.

The next step was to start detecting when the player shoots a limb versus the head, and from there sever the limb so that it falls to the ground. The first half of this process was fairly easy given that I am just hiding the renderer of the hit limb, which will be "replaced" with a separate prefab of just the arm itself. From there I will likely start with severing the arms first since I'll eventually want the zombie to have more of a reaction when they lose a leg, at which point they may need to stand differently, they may fall to the ground, etc. I have animations ready for crawling zombies, the lingering question is how to go from a zombie with both legs to one that is now on the floor and crawling towards the player, and to do so in a way that looks believable. I think watching a few zombie movies while I work tonight is definitely in order. Maybe some World War Z followed by Dawn of the Dead, finishing up with 28 Days and 28 Weeks Later.

I'll admit, the process of updating this devlog is taking about as much time as working on the project itself is taking, but I'm enjoying what is a rare opportunity for me to write in such a way that I don't need to worry about whether it compiles correctly or not. I'm sure an English major would be able to turn my writing red with ink easily, but I'm finding the process of sharing progress to be enjoyable. I'm definitely glad I decided to write about the entire process, even if it means it will take me twice as long to reach the finish line.


Progress is progress
 

Fragmented Skulls

March 5th

Moving on to adding an effect for bits of skull, I've opted to hold off on creating blood that pools on the floor since after finishing skull fragments, I'm already feeling I need a break from the tedium of particle effects. What I've done for skull explosions is to take the original head mesh and separate a few individual pieces. I then extruded these faces to give the mesh three dimensions and finished up by mapping my verticies to skull and blood colors where appropriate.

With these new meshes imported into Unity, I once again duplicated the blood splatter affect that Synty was kind enough to include in their package and made the necessary tweaks. Gone are billboard particles, replaced instead with my skull fragment meshes. A few changes to initial speed and spawn counts, etc. and I had a decent-looking head explosion in the works. Having done a few quick playthroughs I am already liking how this plays, in no small part due to skull fragments occasionally flying at the camera, which provides a bit more immersion as you walk around and rid this scene of the undead.

In hindsight, I should have selected more than one face when separating these meshes out to give the fragments a bit more shape, but that's a polish item that will likely sit in my backlog for a while. With my headshot mechanics in place enough to continue, it's time to move on to arms and legs.

 

Poppin' Heads

March 5th

Alright, headshots are in place and the zombies head disappears. It's looking pretty decent already if I may say so myself, and as satisfying as the disappearing head feels when you land a headshot, I want carnage. I want a head that explodes into pieces and gives me that over-the-top horror movie effect of cranium that was filled with black powder. I figured I would let ideas for how to accomplish this rattle around in the ol' noggin' while I added a simpler form of satisfying feedback: blood streaming into the sky from the neck.

The Synty package I am using came with a blood splatter particle system included but it did not contain one for the effect I am trying to create, so I duplicated their splatter effect and made some adjustments to how and when the particles spawn. I added some code to stop the effect after a random amount of time, and the results are already looking pretty decent. Just one thing missing: I want blood to pool on the floor for a bit so that when the player has taken out numerous zombies and bodies lie strewn about the scene, there will be plenty of red covering the floor from all the carnage.

Readers with a keen eye may have noticed in my eariler post that my Animator -> Rigidbody transition was not working properly in the gif I shared, and that has been fixed as well. This was just an oversight on my part - mostly due to the number of hours I have been working recently - in which I forgot to swap the isKinimatic state of my ragdoll's rigidbodies when the headshot occurred. This fix, coupled with the neck now spewing blood as though this were a Tarantino film, and I feel like my vision of carnage and mayhem is really starting to come together.


Before (left) and after (right)
 

Zombie Surgery

March 5th

I decided to choose one zombie to start working with and opted for the prisoner since its mesh seemed the simplest to work with out of all of my options. I have never had much luck importing rigged models from Asset Store packages into Blender while keeping the weighting and rig in tact, so the first step was to redo the rig and then export it back to Unity for testing. I wanted to ensure that there were no differences between the way my rigged version of the zombie behaved versus the one that is included in the package and was already working with my mechanics.

With that accomplished, the next step was to start dividing the zombie into sections. Given that I've never done dismemberment using this method before, I opted for the obvious: head, two arms, two legs, and a torso. If it works out well I will likely expand on this setup considerably since the ultimate goal with this project is fast-paced zombie mayhem with ridiculous weapons that result in zombie parts flying everywhere. Separating everything from the torso was fairly easy to do and was also right inside my wheelhouse as far as my skill sets with Blender.

I basically just separated the limbs and the head and then capped any open areas created as a result. For now I've just mapped these new caps to render as a randomly chosen red; I'll play around with details once I've got the limb-severing system in place and I can see a rough outline of the end-result. With my character now cut up into pieces, I exported back into Unity, setup the ragdoll and other components, and again tested to ensure my results were the same as they were with the original zombie mesh. With that done, I immediately felt as though this process was going to be well worth my time. I am already enjoying the gameplay and, when considering how it is already coming together along with what I have planned for it, I think this could end up being an entertaining demo.

For now, it's time for some shut-eye.

 

Blood & Ragdolls

March 4th

I wanted a break from the complexity of my WebGL MMO project so I decided to work on something simpler that I would hopefully be able to use time and time again in the future. I quickly realized that if I focused on my third-person controller, whatever updates I made could be easily implemented into the MMO once they were complete and I'd have a third-person controller package that worked exactly the way I wanted at my disposal for any future projects. I enjoy working with Synty assets for a lot of reasons, one of which is that, although I am capable of creating low-poly meshes, I am not capable of creating them at the quality that they do. I'd like to get to that point one day but for now I find working with their assets in Blender to be both a huge inspiration as well as a great learning tool.

So, I've set out to create another WebGL demo for my portfolio using a more-polished version of my third-person controller; the goal here (beyond having another demo for potential clients to play) is to improve my skills in Blender and to leverage the program to do some things that I would normally do via code; specifically, I'll be shooting the heads and limbs off of zombies, and rather than writing code to separate the mesh and cap any open areas, I'm going to work with the meshes themselves.

I've added a bit more polish to my third-person camera so that the aiming mechanic feels more natural as well as removing the slight jitter I was experiencing in complex areas of certain scenes. I've also imported and setup my favorite input management package - cInput - and was very happy to find out that once I had my XBox controller configured correctly in the editor, it worked with WebGL builds right out of the box. I was honestly expecting some resistance there, but the ease of implementation allowed me to progress forward knowing that if I created a decent zombie shooter, visitors on this website would be able to grab a controller and play it directly in the browser.

For my money, there's no better place to start when making a zombie shooter than immediately implementing blood effects and ragdoll deaths. Things like blood effects and ragdolls really help make the shooting mechanic feel much more tactile, and this in turn makes the prototype feel like a game long before there is anything resembling progression, which subsequently makes play-testing over and over again a much less tedious endeavor right off the bat.

Nothing too fancy here - in fact, my player character does nothing but sit idle while aiming - but it's a working mechanic with acceptable results. Time to move onto exploding heads and dismembered limbs.