Hello everyone!
I am Jeroen and this was the first time I participated in the compo. It was lots of fun!! :smile:
Writing on a software product is my job and I really love it, but I definitely also love making games... which is why I am here!
So...
Some people have been asking how I did everything for the game in 48 hours. Well, this is how it went...
This time I made a puzzle game...
Fun fact: I forgot to include this level. I made the level during the compo and then forgot to add it to the level list... :dizzy_face:
A game I want to make...
What kind of games do I like to make?
Hmmm... I like to create games that feel "innocent" with preferably very little UI. I also like "atmospheric" games...
"sacrifices must be made" + "innocent" + "no UI" + "atmospheric" = I don't know?
I actually found it quite a challenge to think of a game I would find interesting that fits the theme. I did decide at some point that it would be interesting to have to sacrifice some kind of living things though (but how to keep that innocent? :smile:). After racking my brain for a while I thought: "Well, if I have to make a game where you sacrifice someone, I want to at least make it sometimes feel more like "Oh oops! no! no! no! don't do that! well... that just happened" or maybe not even feel like a sacrifice at all even though it is actually a living thing." Hmmm... :thinking:
Anyway, I feel the game I made ticks all the boxes "atmospheric", "innocent", "sacrifices must be made" so I am quite happy about it.
But you don't have to take my word for it, decide for yourself here: Icy Golems. :wink:
The making of Icy Golems
So, after I had some idea of where I wanted to go I started with the main character. I looked up multiple references on the internet, opened up Blender and quickly modeled some character. The character did not have to be very detailed since you would probably see it from a distance (I was not sure yet at the time). Unwrapped it and created a texture. I started from some flat color and after that I added some dirt by using multiple texture brushes.
After day 1 the main character looked like the one below...
If you are thinking, Huh? That is not how it looks in the game... You are right, it does not... :smile: (see second day)

More assets...
I needed a lot more assets, I had a list. For the puzzle game I wanted to limit the tiles people could put instructions on and I wanted to make this clear in some way. I also wanted to indicate the grid so I needed a texture for that. Next to that I needed some puzzle elements, some arrows, a bubble...
Fun fact: The tile where users would be able to place the instructions ended up being used for something completely different... A compo has limited time so whatever works... :smile:


For the grid I made some very simple texture in Krita + Gimp. The bubble is completely made in Gimp.

Day 1
6 hours of work...
Since I was still sleeping the 5 first hours of the compo :sleeping: at this moment actually 11 of the 48 hours had passed...

11 hours of work...
Five hours later it started looking more like the final result...
Nothing was moving yet though... :smiley:

Day 2
At the start of day 2 you could click a tile and move the camera but that was it. Fun fact: I had actually already rewritten the camera controls twice at this time. :slight_smile:
While I knew I should really start programming some gameplay, instead I changed the grid a bit to have it a bit more "wavy" since it was bothering me. :sweat_smile:
Fun fact: the "wavy" grid is actually happening in code. I wrote some code to apply some random displacement to the vertices in the grid (so, I am actually modifying the mesh).
Tiled!
I could easily change the ground mesh because I actually generated the whole level in Unity with code. The walls are just some prefab I spawn all over the place, the ground is a mesh generated by some code.
For the Level Editor I use Tiled.
Below you can see the last level in Tiled and Unity (recorded after the compo).

Xml for Levels, a good decision.
I think making the levels this way was a very good decision. That way the code that generated the meshes actually also had a complete representation of the level. The code reads all the walls and other things from the xml and puts them in some arrays... This allowed me to handle all the moving logic in one place with just some simple for loops. That code really had a concept of grid and knew how high each tile was.
Golems need to stop before cliffs? No problem! If two golems try to go to the same grid position stop them? No problem!
Yes, I had to write the code to read the level xml and generate the level (spawing some prefabs + making the ground mesh), but I just googled how to read xml in C# and had this code quite quickly.
Next to having a complete representation of the level in a single class the approach had even more advantages... For example, I never had to move walls in Unity by hand. They just appeared when I reran the level reading code. That saved me quite some time...
Making levels in Tiled also allowed me to focus on making interesting puzzles without any distractions. :sunglasses:
Rigging and Animations!
On the second day I also did a second iteration of the main character. I changed the proportions after I got some feedback on the first day that it looked weird (it does, doesn't it?). Anyway, I always planned to do a second iteration to do the rigging and animation. The only effect of changing the character this late still was that the texture got messed up a bit (hard line where the "dirty part" ends) but you cannot really see the texture in the game anyway. :smile:

As part of the second iteration I also redrew the emit texture (the orange spots).

15 hours before the deadline... let's start programming some actual gameplay...
I still had lots of things to do with only 15 hours left. If I remember correctly at that time still nothing was moving yet but I knew I had most of it in place... Animations were ready, I had the complete representation of the level in memory, ... So: coding, testing, fixing, repeat... :smile:
More features
After I got the basics working, I wanted to add some more puzzle elements and some more polish...
Buttons, doors, exits, hills to change level, wait instructions, the ice cube (textures, model and code), "snowflake" instruction, "magic circle" (textures and particle systems), exit effect, idle animations for the golem, icy pose for the golem, restart button, next level button, around eight actual playable levels, choosing a font, end screen, exporting to WebGL, making screenshots, replaying all the levels a couple of times, fixing some last minute bugs, breaking another level... Aaaaaargh!!, not enough time...
Because of some strange Unity behavior around static batching and post processing volume I still adapted the level reading code to work in the Unity editor instead of only when the game starts and ended up having to actually rewrite some of it. Apparently Unity does not serialize 2D arrays, who knew? But since the in memory representation of the level uses those it is definitely a problem if they get lost if you exit edit mode...
Block of Ice
I actually really like how the block of ice turned out. The block of ice is made by combining a model with a transparent darkish blue color and adding an emit texture with details (see below) on top. That is it...

Finished!
While I still had a lot of things to do in the last 15 hours, it somehow worked out in the end... :open_mouth:
The game was uploaded half an hour before the deadline and I am super happy with the end result!
Links...
In case you want to take a peek at the source code, you can find it here.
You can play the game here: Icy Golems.