FURNACE FACTORY SYSTEM
March 2023, 3 weeks | Solo Project | Developer
​​This project was made for an assignment for my Systems & Experience Design class. We were meant to create a system that focused on strategy. I chose to make a management game where the player has to run a blacksmith, making spiky objects by smelting smaller objects together.​
​
​Accomplishments
​​
-
Planned, developed, and delivered a demo of the system within the span of 2 weeks​
​
-
Programmed and refined a system to smelt items in a pool
-
Created a testing survey and accessed feedback
-
Wrote a comprehensive systems design document that covers the projects intent, a summary of research done for the project, mechanics, and a post mortem
​
-
Iterated on the demo with another week of dev time
Overview
Here is a recording I did that gives a quick overview of the system.
Here are the tutorials from the help menu. They are meant to teach the player all they need to know:
-
Controls - Mouse + Left Click
-
Gameplay - Combine objects together in the furnace
-
Goal - Smelt as many spiky balls and ball squares as possible
It does not teach players that objects can be overcooked, which may have been a mistake. However, I hope the explosion noise that plays when objects are burnt and how objects' color approach the color of the lava as they cook will be enough to clue them in.
Early Development
For the documentation on this project, I first came up with the thesis:
"By creating a smelting system, I intend to create a management experience that offers a sense of strategy and enables players to learn to maximize efficiency."
​
In setting out to make Spike Smelter, out the gates I knew I wanted to make a strategy game with physical gameplay that revolved around strategy while including real time elements, rather than a turn or grid based game you often see in games that have a sole focus on strategy.
My first idea was a management game where the player is interfacing with a production line made up of several interconnected machines. However, as I started to get into prototyping, I realized that having so many different machines was over scope for what I could do with the time I had, so I decided to focus on the system that was most essential to my game: the smelter. Here the player would smelt two items into a bigger item, and watch to make sure that the items in the smelter don’t get overcooked or else they will combust.
On the left, you can see the original sketches I made when trying to settle on the game loop. On the right, you can see what ended up in the prototype. You can see I left the models for a cannon, well, and bowl of water in the build as set dressing. I left these mostly with basic materials to try to indicate that they were not implemented, as well as leaving them out of the tutorial page, though looking back I should have made it more explicitly clear that they were only set dressing.
Transparency in Design
After establishing my thesis, I researched strategy game design to guide development. I was able to find a lot of articles that suggested a few general rules that are good to follow when designing strategy games, and I tried to keep them in mind when designing my game.
​
One of the main points that I tried to be conscious of was transparency, meaning making the systems easy to understand for someone who is new to the game.
​
The main way I went about this was making it so the material of an individual object would approach the orange color of the lava and begin to glow as it got hotter to show how long it had been cooking and how close it was to combusting from cooking too long. When an object is about the same color of the lava, that's when you know you should probably take it out of the lava until there is another matching object that has reached its target temperature for merging.
I could have made it clearer when an object was cooked enough to merge with another, but I thought it would be good to require some level of intuition around when objects will merge to offer some tension. After all, players don't need to have two objects reach their target temperature at the exact same time, they just need to ensure one doesn't overcook and combust while the other finishes cooking.
​
I also have a lot of sound effects in the demo to give the player feedback to highlight what happens in game, with there being sounds for objects being created or merged, entering the lava pool, and combusting. I randomly pitch shift sounds that are repeated a lot so players don't have to hear the same exact sounds repeatedly as they play.
Documentation
Here is the full Systems Design Document I made for the original demo, "Spike Smelter" (there were no balls in that one). I summarize a lot of the key points on this webpage, but if you are interested in seeing the real deal, here it is.
There is a substantial section in the documentation that explains the programming for the smelter system, which essentially operates off of two scripts. One script is attached to the smelter and has several lists that keep track of the different kinds of objects in the smelter at any moment, and handles cooking, merging, and combusting them. Another script is attached to each object, and tracks the states and variables for each individual object.
Postmortem
I'm generally happy with the smelting system I was able to make and iterate on. After getting some feedback from testing, I saw that the demo has a few flaws. It turned out that some of the testers were confused by models I left in from the demo's cut content. I probably should have made it more clear the player could not interact with these models if I wanted to keep them in, potentially by moving them further away from the player.
Players also seemed to have trouble telling when an object was close to combustion, which I was a bit disappointed to find after making the dynamic shader material. I think adding a key to explicitly tell players what colors indicate an object is either cooked and what colors indicate an object is close to combusting would help. If that still wasn't enough, I could add some audio cues that indicate an object reaching its target temperature and ques to indicate an object getting close to combusting, though I hesitate to add the sound cues right away as I worry they will make it too easy to manage the smelter.
In my short revisit of the project, I spent a good bit expanding the factory pipeline to include balls, added the cooling bowl by modifying the smelter script, refined the grabbing mechanic, and made a lot of improvements to the visuals. I can still think of more features to add, and I still think I could try adding a sound to clue players in on when things are going to explode, but I am out of time for this project for now.