Making Of... Moo Blaster!


I wanted to have a place to document some of the progress of Moo Blaster over the course of it's development.  Typically I'm pretty bad about sharing a lot of pictures on social media early on in a project, but with MB I didn't post anything to Twitter.  Most of the following screenshots and GIFs are from Discord servers where I shared progress.  So let's take a look at each stage of development and how the game evolved from a prototype (see next picture) to the final state of the game.

Moo Blaster initial prototype

I think the initial idea came from a joke I made about doing a game jam game that was a cow dating sim.  I kept thinking about that but it ended up just making me think about UFO's and cow abductions.  I thought that would be a cool mechanic to prototype so I started making what you see above.  I knew that I wanted it set in a farmyard where cows would patrol around and you would control a UFO that would abduct them.  In the above screenshot, the flat cylinder is the UFO, the ball is a cow (that didn't move at the time), and the long white boxes are the farmyard fences/boundaries.  The main mechanic of abducting existed at this point, allowing the player to press a button and the ball would get sucked up into the disc.  It was a good prototype to show the basic mechanic.  I don't think the UFO even respected those boundaries in this screenshot and you could just drive off the screen.

First Blender model in Moo Blaster

One aspect of developing MB that I wanted to do was work on modeling my on models.  I've done it in the past but spent a lot more time in this project doing that (even though I eventually use some model assets from the store).  In the screen above, I modeled the UFO and changed the ground from a green to red.  Fun fact: I changed the ground color because I always wanted the UFO to have green in it but I didn't want it to conflict with the background, and red both helped make the UFO stand out and unintentionally define the game world as Mars.  I think in this screen the UFO was now limited to within the boundaries of the white boxes.

Fences added!

A little more work in Blender in the screenshot above, modeled some trees and some fences.  This screenshot shows the flat coloring I was originally planning to go with, no textures but lots of single colored materials.  At this point lighting was all dynamic and there was a lot of emissive set on the fences and trees.  The simple post processing I had added gave the fences a glow I still like but I've gotten into the mindset that overly using emissives is kind of a hack for devs who don't understand or work with their lighting.  You'll see lighting change a lot in MB development since this is the first project I've shipped that uses baked lighting.

First pass at adding cow models and custom AI

Cows!  Above, the new additions include a cow model, sludge well (with particles), updated lighting/coloring, and more trees populating the edges.  The cows were picked up on sale as part of the Cute Pet asset (link below).  I started modeling a cow myself but because I'm a beginner with Blender I got frustrated and just wanted something quickly.  In general I'm happy with the assets I've picked up and used for this project, I feel like I used them in a way that supports MB and doesn't look too out of place.  With the cows I changed the material they used and gave them some emission just to pull their color up a bit.  In this screenshot, the cows are using a custom AI I wrote that randomly found spots in the map mathematically and had the cows move to them.  I'm not a great AI programmer so eventually I replaced this with Emerald AI.

One other interesting change is the shadow of the UFO, which up to this point had been a plane that just followed under the player.  However, with the addition of the sludge well, the shadow would appear floating above the well.  The solution here was using Unity's Standard Assets and the shadow projection effect.  I always liked the harsh flat solid black colored shadow even though the shadows baked by directional lights were a lot softer.  This shadow was a simple way of providing a targeting method so the player knew when they were above an object. 

Splattin' moos

The GIF above shows the Abductor beam and the Heat beam in action.  Other changes include much stronger post processing, cow 'splats' when you blast them, the first implementation of Emerald AI wandering logic, changes to particle systems, and changes to the well.  The cow splats are pretty straightforward, just a plane with a few triggered particle systems.  Originally the heat beam took a lot longer to cook a cow but speeding it up really made it a lot more dangerous and feel more impactful.  The beam graphics went through a lot of iterations but the end goal was always the same: create a volume that's partially translucent, with a related particle system, and have the UFO side color reflect the change in beam.  The UFO side color also pulses via a script that lerps the color back and forth.

Other minor notes: The well particle has changed from squares to a fog-like particle.  The whole scene has those same particles but much larger flowing through the scene to simulate dust moving from the left to right.  It's hard to see unless you watch for it when the GIF loops but it's more apparent in the next GIF.  Also the plane that is the top of the sludge rocks back and forth so if you look close you can see it moving (this was done with a simple random rotation script and some speed tweaking).  Also the ground now has a texture instead of just a color.

I think the GIF above really shows one of the largest leaps in visual quality during the development of MB.  First, there's clearly a UI on the right that shows the current amount of sludge the player has sucked up (which is a mechanic added in this GIF) and the count of cows that have been abducted.  Second, there's a big space marine standing in the middle of the farmyard.  The plan with this space 'farmer' was to provide a way for the player to lose the game, or some kind of pressure to avoid areas of the map.  This farmer was supposed to patrol the map and shoot/chase the player upon noticing them (more about the farmer later).

Other additions: The fences now have textures, and the dust particles in the air are a lot more noticeable due to their color.  The ground texture and the fence textures were part of the Hand Painted Texture Mega Bundle (link below) and modified to brighten them up considerably for the scene.  Flowers now pop up after a certain amount of time after a splat is placed.  And the biggest other new addition is the modeled farmhouse and entrance for the cows.  The cows spawn in the back of the farmhouse and their AI is given a specific waypoint to run to (using a nav mesh link to cross from the outside of the arena to the inside).  Once inside the arena, there are a whole bunch of invisible points they use to try to spread out before they begin wandering again.  You'll see how I made this suck less in future parts.

Camera Panning

The only change in this GIF was the addition of a script that pans the camera to follow the UFO.  I didn't originally plan for this, but the camera used in the posts above had an issue where the UFO would get cut off if they went too far towards the top of the screen.  This panning camera determines where to place itself based on the camera's predefined boundaries and a math equation calculating that against the player position.  The reason I'm including this GIF is because the addition of the panning logic didn't take much time, but the effect dramatically improves the look and feel of the game in my opinion.

Growth

Now that the game is starting to look a lot like the final version, the remaining work was implementing an actual game loop (start, gameplay, ending, repeat).  I knew I wanted this risk/reward loop of the player blasting cows that turn into plants, that then need to be 'watered' with the same beam that can accidentally vaporize other cows (with a lot of cows in play that could pose some challenge).  I wasn't getting what I wanted from the farmer AI so at this point I decided to cut him and focus solely on the cow/plant loop and getting the highest score possible.  This GIF shows the start of the plant growth and cow attraction/growth logic.  Also, there's a second farm added to the bottom right of the arena, which really helped distribute the spawning of cows and prevent the player from basically 'spawn camping'.

At this point there aren't many more screens or GIFs showing more development because the rest of it felt like a lot of polish or implementing things like menus that are pretty simple.  I did a lot of stuff like testing Xbox and PS4 controller support, fixing a few bugs, polishing particles and animations, and just generally putting the whole thing together.

All in all I'm happy with this project, and thanks to a combinations of effort and asset store support I think it's the best looking thing I've ever made solo.  There's definitely a lot more polish and stuff I could add, but as much as this was an effort in creation, it was an effort in tracking my work (thanks Trello) and limiting my scope.  The burnout and boredom with the project hit hard and sudden (after the farmer was tossed) and I wouldn't have been willing to finish it without the support of my friends and family.  In the end it's not only about learning how to make post processing look nice, or write gameplay systems, but learning about yourself and the important people around you that help keep you motivated and happy.  

Now go splat some moos.

Quick Moo Blaster Postmortem Facts:

Development Time: About 25 days

Assets used:

Get Moo Blaster

Leave a comment

Log in with itch.io to leave a comment.