I’m really excited about this one, and I’ve been looking forward to writing it for a long time. By now I have enough to talk about with a developers log for Monster Factory. I will attempt to stay relevant to the new version but some parts might sound repeated.
First, I will do a quick recap of how the game has been received by the public up till now, then I will go into the design details a bit deeper, and hopefully wrap up on a positive note. I hope to write more about the game, however limited in scope.
The first version was more of a game jam attempt at a two-week title just to have something under our belt. It was never intended to be a “demo,” it was fully intended to be a full version game. It was released on Itch.io for 2$ without any prior research, and was quickly changed to a free title once it was realized how little the game actually offered players. A repetitive shortened version of Katamari Damacy. It had very little visual prowess, as a first attempt it had no shaders, no particles, no effects. It was primarily colliders in a closed circle of a city that if played right could basically be cheated. The abilities were to help the player get a higher score, and grow large, as fast as possible. One of the abilities ended up being useless, one allowed you to climb buildings that weren’t really worth climbing, and the other gave a speed boost. But combined they didn’t mesh, and the game fell flat. It has received limited fanfare, but all who have played it enjoy the easy flow of just running into things and moving around.
Itch.io, in my opinion, is entirely for demos, small games, mechanic prototypes and general-purpose testing. I don’t think players go to Itch.io to pay for games, and that was my mistake. Anecdotally I see posts on twitter with comments like “I did no advertising and I made this much”. Admittedly I have no idea what “no advertising” means since they have a robust social media presence but I assume it means they didn’t pay for marketing and did it the free way, similar to us. Steam has a much wider base of players looking to spend money, and if your game is 99% bug free, has a story in a genre the player enjoys, they’re likely to pay for your game, if the price is right. So that gives me hope, combined with the similarities to Katamari Damacy, Monster Factory should sell.
Now truth be told we should have just left the game as it was. A first title that didn’t turn out to be anything great, or anything particularly exciting. Just a title to say “We’ve done something with out skills.” How it later became our first real release was an ill-thought-out choice on my part. “We already have half a game” I thought. With the original list of features being cut in favour of time, I guess it was a matter of pride. That I didn’t want my company to even have such a half-baked game. If it was for a game jam, I would have left it, similar to Dad Sim. A title left to the archives of the internet.
I wasn’t proud of what we produced. The company’s first title should be a success. A game people enjoy playing more than once. The first title got a lot of one-time plays, but never any repeat, and that was telling. So without further ado, here is a much deeper look into Monster Factory, its mechanics, and a not too winded explanation of its features.
Every game runs on colliders, whether you’re running into walls, or getting hit by bullets. Those are colliders. How a game object interacts with the World is primarily handled with these physics and these mathematics, and Monster Factory is no different.
Absorbing Mechanic: As the name suggests the entire mechanic is to absorb World assets. Obviously, this isn’t as exciting as airdropping into a fire fight, while scrambling to look for a weapon. But those games are for a different group of people, requiring constant stimulation to stay entertained. Monster Factory slows the game speed down to a manageable level. Not requiring the player in real time to be inputting actions, it has a happier, more relaxed, atmosphere. Simply roll your character into an object and if you’re the correct tier or using the correct ability, you can absorb it to grow bigger, and roll/slide/jump/crawl your way to the next asset for your consumption.
The plan is to add a fun, and funky, way to absorb the objects themselves. How to effectively turn a World asset into a semi believable absorb mechanic. Being one of the prime aspects of the game I have struggled to achieve what I want with this. In my mind I see the object turning into a fluid and being melted down into the player’s body. Which sounds like fluid mechanics, but with my limited understanding of major physics calculations I would struggle to pull something like that off. More realistically at my level a good shader would suffice. A dissolve shader might be the stand in until I find something more suitable or exciting to show players.
We’ve updated the abilities from being a side thought, to being an active requirement and an overall joy to hunt down.
Previously: Abilities were an item pickup. Find one floating on the map, and consume it for a one-time upgrade to your character. No guarantee it was the one you needed for at the time, and without a purpose you never really saw a need for these to fix. The idea worked on a small map because you were never too far away from one of these abilities, and they were placed strategically on the map where required. Jump ability was placed on the ground with a timer of 30s and another was placed on the roof in case it ran out when you got to the top. Making the timer longer seemed like an alternative, but then what is the point of having it be on a timer. If a game is 5 minutes long and 1 minute of it, you’re a single ability it ruins the experience of a balanced play through. The ability to switch through power ups was as simple as standing on the next one to change to that ability. Currently: Now abilities are the best of both Worlds. Located on the map are one time unlocks for abilities. The abilities themselves have a timer roughly between 10-30 seconds, and have a cool down of roughly 10-30s. Once a player unlocks the ability, they can use it at any time respective of the cool downs. In the updated version the ability is locked into the timed use. You are stuck using one ability for its duration, so you can’t quickly spam through all power ups or try to cheat the system by speed running through buildings you’re not large enough to absorb.
Jump: A pretty standard movement function in most games, in ours it is limited to one ability. Once you use it you character is changed into a marching blob that can float and glide from building to building, or scale the sides and balconies to reach the tops of sky scrapers. We made him more floaty and glide-y, by tweaking the gravity slightly it has a more moon like hop.
Speed: Not much changed with him. Didn’t require much change, again a standard movement function is most games, but in ours it’s a short ability. The reason behind keeping it the same was simple. It’s entire purpose it to push the player around the map faster. Nothing fancy.
Tank: Now the tank ability is likely the most impressive and functional ability in our game. Using this ability, the player becomes impervious to damage. In some levels there are cars moving at high rates of speed and getting hit by them will reduce your lives by one out of three, and potentially ending your run. In the last level, the military is actively looking for you and firing explosives in your direction, again potentially killing you. Using this ability the player takes no damage, and if players are the required tier they can absorb these cars and explosives.
Secondly, the tank has the ability to absorb objects one tier higher than itself. Tiers 1-4 are standard and require the player to be above a certain mass threshold, but using the tank they can go one step higher. Tier 5 is inaccessible by unlock and specifically requires the tanks (currentTier +1) ability to absorb. This will be the only place that is mentioned, as the intention is for the player to discover and understand this principle. Obviously, it will be mentioned in the tutorial, but won’t be explicitly mentioned anywhere else again.
Now when players are exploring for donuts, candy, and pizza, they will want to unlock these abilities in their quest to devour the entire landscape.
Movement: Previously controls were a bit clunky. You had one option and that was to go forward or jump when you activated the power up. As a replacement we’ve allowed lateral and backwards movement at a much-reduced cost to do so. You move at 1/4 of regular movement side to side, and half speed backwards. Just enough to get out of a corner without the jarring motion of throwing your camera to the left or right. Just is more reactive when the power up is activated. However, it will constant go upwards even when stuck on objects, so a bit of balance is required and hopefully not too much of a code revisit *cries*.
Through player feedback we learned the player is too confused about what the current state of their player is. Previously your only indicator of whether you could absorb an object or not was based on how big you are compared to it, and in some cases that didn’t line up with the mechanic itself.
This time around the objects mass is indicated in a floating text with the mass added to your own total. Different colours indicate roughly the size of the object, with lighter bright colours being low, and darker hard colours being much higher. White between 1-10 and red for 120+. With this change the player instant knows what the best items to absorb are, and roughly how much mass they added in a single pile, with some quick maths.
A “level up” indicator now tells the player when they are a bigger entity, capable of absorbing objects in a higher tier class. The current tier overhaul was a big change in allowing this to work properly.
Learning new things is one of my favourite parts of a new game, as an indie dev I mostly learn as I go. My core knowledge comes from school, but they don’t teach you how to make shaders, or how to save player stats between games. So, while I’ve been coding for 5 years, I am still learning. Proper naming conventions, new ways to call functions, and even additional insight into GET/SET functions and real difference between private and public variables. One of my biggest challenges has always been dividing scripts into their own compartmentalized components. With Monster Factory I wrote a script solely to handle the text rising and disappearing. In another instance I split 1200 lines into three scripts of roughly 400 each, until those also ballooned with new lines into their roughly 600 each.
Three main scripts, the UI controller, Game controller, and Player controller all combined are roughly 2000 lines of code. For a simple game of “roll into this object and absorb it, and jump around” that’s a lot of script. So half way through production to try and split that all up cost me some time. It would have been more worth forging ahead with what I had and never looking at it again.
As an indie dev that’s not possible. I ALWAYS come back to my most recent scripts and look at how I did something previously. Why write it again if you have access to good code already. If you’ve already overcome a similar problem just adapt that solution into the current one. That’s how I got into using the new Input System, and the Cinemachine in Unity. Big difference those two things have made.
This was honestly a challenge. As of writing this we have three out of four levels in some level of completion, or production. There is one last level that my artist and I are struggling to decide on.
Tutorial: Very small map in comparison to the others. Its primary usage is just to teach the player movement, abilities, and the overall concept and purpose of the game. It opens with a cut scene, as a meteor strikes a farmer’s field. This idea comes from the movie Men in Black when their alien lands in a farmer’s field and wears the farmers skin for most of the movie. It’s a rural community with farm fields, wind power generation, rolling hills and mountains surrounding it, and lots of wind coming off the Ocean. It will mostly consist of farm equipment, housing, agriculture with a bit of city life mixed in.
Level 1 (Undetermined): As it currently has no name, we’ll just call it this. With the pool of assets we currently have and limited drive to make another 100+ for a single level, we’ll likely take what we have and make it a mix of all three, or the best of both Worlds. I won’t go much into what I don’t know, as this level can be the last one we do. Once we get the other three working, we’ll revisit.
Level 2 (Beach): This level is entirely inspired by Koney Island amusement park in the USA, but will overlap with the ocean fronts of California or Miami. A large section of sandy beach with tourist attractions, a boardwalk separating the urban life from the sands, and a sprawling suburb between more beachfront sky scrapers. Towers overlooking the water, shadowing businesses along its shores. The player can go under water, absorb whatever is down there, and find secrets. Cars will be moving past on the busy roadways, while the beach will be fairly quiet since it was evacuated upon news of the players arrival. Everyone is gone, and only their strewn cloths and belongings note they were ever there.
Level 3 (City scape): Our primarily level, the entire game was built here. The first iteration was a city, this version is much larger and 3D. You can climb more vertically to the tops of buildings, get a birds eye view of the entire city and surrounding hills and water ways. Here the military will be ever vigilant. Tanks are out in full force looking for you. After destroying so many populace areas you are their prime target. The map will be harder than the rest. Hopefully not too difficult as to alienate casual players. Compelling enough to find them worth adversaries in your quest to devour the city. Avoid them when you’re small, destroy them once you’re big again. Climb around the map to avoid their gaze, or speed past them in a blur of light. The tank is invulnerable to their attacks, but only lasts a few seconds so best to get the job done quick.
This map was fun to make, being one of the first maps in a professional capacity I took a lot of liberties with what a city would look like. It still contains the parking meters and traffic cones you would find, but the buildings have no doors. It’s not hyper realistic, it’s low poly and non functioning. You’re destroying it anyways; does it matter if it has transparent windows? From our Arist Ian, regarding how he made the new city level:
"Unity has always felt so intimidating to me. My natural habitat is blender and don’t really stray to far from it. Its comfortable and for me, extremely easy to use! So when my counter part asked me to take over map design, I didnt know where to begin. What better than to start at an intersection.
From there I attached a few small straight road pieces together, and another intersection. Eventually a city block was formed, and that was great, but it was flat. A square box you could walk in a circle around. It needed buildings. And what better than a coffee shop? Benches were next, then a little bit of garbage to liven it up! I had the beginnings of a town. Then I needed to find little ways to bring platforming to the new city block I had just formed. A few scaffolding, some stairs to a 2tier building, tables, umbrellas, trees and some streetlights for added scene life. It really started to look like a city! I was immensely impressed with myself and must admit. I took WAY too many screen shots and flooded them into the discord. But I wasn't done yet. Terrain was the next beast to tackle.
I started with a river to get the feel of the terrain tools and A few hundred trees, bushes and fences later I started to notice little details were missing. benches were used to break up some of the repeated chairs and balconies to add variety for climbing. Vehicles were then placed in around the map and houses began to come alive with added tables and backyards, and a beautiful scenic route was formed! Roof tops were a fun challenge, arranging rooftop doors for longer connecting jumps was my main focus! As I want the player to be able to jump around the entire city!"
Well for starters we need more of it, three levels a tutorial, and a main menu’s worth. The sound effects generally work. Currently we have no music designer, so if you’re willing to work let’s get in touch.
Our camera set up used to be a camera locked into the player itself, but felt so unnatural it was off putting. After a few failed attempts to code the camera I finally caved and tried the Cinemachine. My first attempt didn’t turn out well, and I actually caved and disabled it, and moved onto other important attempts. After a few weeks of the crappy version I attempted the Cinemachine again, this time with better results. I looked into how to code it, and how to move a 3rd person follow camera via script. Cinemachine has dampening that makes it feel more realistic of a follow camera, and with little to no code it worked right out of the box. Currently it will dynamically handle collision with objects, and follows the player naturally.
I’ve attempted in the past to make shaders and the amount of coding that goes into one of these is quite daunting. Once you know what goes where it’s a little easier, but either I missed the lesson in college or it’s just too damn hard in general. So I use the shader graph, and it works a lot easier for me. There is a lot of documentation on shader graphs and once I have a better understanding I can look at the code myself again. Water: A GREAT first shader, as it is in almost every game. Whether it’s just a puddle or an open Ocean, there is plenty of other creators making these already so it was easy to take everything they knew and create my own that fit my purpose. I spent a bit of time learning how to do it then created my own, and while it’s not AAA, it is still worthy of being in my games.
Absorb: As mentioned, this one is the prime visual mechanic for the game. Running into something and making it pop out of existence doesn’t really do it for me, nor am I proud of release that. I will have to talk more about this later as currently I haven’t pushed too hard into developing this one. It will have a dissolve shader for the time being.
Perforce & Helix + Azure
As the team grows in size, I want to have proper version control in place and a cloud to operate out of. Using Microsoft’s Azure, we can start simultaneously working on the same maps, instead of having one master copy on one computer that gets worked on. This way both myself and my artist can build the game in the same file. He will have instant access to my scripts and player controls to implement level changes, and I have instant access to maps to test out the mechanics with. Perforce is a great company, in fact I’ve received 3 calls in the first week to make sure it working as intended. Unfortunately for me I tried to implement it in the middle of development and as a result I have no time for it. Azure was pretty easy to set up, as there is lots of documentation online, and Helix is almost as simple as programs I’ve used before so it was pretty simple as well. More will come on how those have integrated into the projects moving forward.
This is the longest blob I’ve written by far, and I’ve been waiting until I had a good amount of things to share about the game. I feel I’ve done that, and I’ve gone into enough detail. I’m excited to talk more about the game in the next installment of our main blog next Monday. Where I will hopefully be closer to complete and I can open the steam page.
If you have any issues, questions, or comments about this post please let me know, you can reach me at email@example.com and I'd be happy to engage in a conversation with you about any of the above. Your time is appreciated! I've also made Monster Factory available for download right here from the website! You can find the game here
Follow us for more instant updates!
Help us grow
Join the discussion Discord