THE SAGA OF WINTERLAND
In November 2020, I went on a journey of building my first game – Winterland. Below is a series of blogs written during that time, along with a post mortem.
Nov 19, 2020: Unity
While designing my first vector image yesterday, I realised that I actually really do want to learn animations. Part of animations is designing the “asset”, which was alright, I think, for a first attempt, but I was more keen on animating it and having a storyline.
I found out about Unity Learn on Tuesday, but I didn’t know that you could get certificates for free too! So, I will be working on their first course, aimed at beginners, and hopefully come back with some updates soon!
Unity LEGO Game Jam & My FIRST UNITY GAME!
So, turns out, there was actually a livestream game jam going on TODAY for the LEGO mini game…and I was building my first LEGO game today! What are the odds?
I am truly inspired by the livestream and the different games the hosts came up with.
So, I will customise my game a bit more, then publish it, hopefully soon, as there will be another livestream showcasing the best LEGO games made with Unity on the 17th December. I really want to be featured!!! 😅
Screenshot from the Unity LEGO Game Jam livestream today
After much tinkering with BrickLink Studio 2.0, I managed to come up with this, and I’ve got to say, I actually like it…I’ve nicknamed it:
The Evil Winter Creature
Nov 20, 2020: Jingle All The Way
As far as I am concerned, ’tis officially the season to be jolly. I am truly enjoying creating characters for my upcoming Unity game and I have found THE perfect hero for my game.
I present to you:
(I wanted to add a tiny mask on his face, but alas it was either the beard or the mask, and what’s Santa without his iconic snowy beard?)
And this time, I tinkered a bit more on studio 2 and came up with this mini animation:
Nov 21, 2020: All Gone Wrong
Yesterday was an great day for many reasons.
- I was mentioned by Unity(!) and the hosts of the previous Unity Game Jam on Twitter for the character design of the enemy in my first game.
- I spoke to some wonderful people from the game dev community which really inspired me to push forward.
- I was invited as a player on Dribbble by someone, so I can now publicly publish my shots. It was so unexpected and I was so happy to receive that invite out of the blue.
- I designed Santa Claus as the protagonist of my game.
Don’t mess with this enemy. “Yule” be sorry 🎄❄️⛄️
— Unity (@unity3d) November 20, 2020
…AND THEN SH*T HAPPENED
Gingerbread House Gone Wrong
After designing Santa, I decided to move on to making a gingerbread house for the game finale.
I googled LEGO houses, and found one that was quite nice. After spending literally HOURS at it, I didn’t finish it and started getting notices from Bricklink to pay for the different LEGO pieces (although it allowed me to export and upload on Unity? 🤔)
I felt like I was in an unbreakable loop so, at that point, I decided to take a break from designing and go to developing.
The Evil Winter Creature Fell Apart
You will just have to take my word for it as it was too painful to add it here: My enemy’s model was breaking apart as soon as I put animations on it. I tried re-uploading the model but no luck.
I thought, “Hmm, maybe it’s got too many pieces and I didn’t build it properly”, so I tried to upload Santa onto Unity.
I exported my Santa from BrickLink Studio 2.0 and imported it to Unity as explained in this tutorial….and he lost his face and torso.
So, I did some research and found that Blender works well in creating custom LEGO, as demonstrated by DitzelGames on Youtube.
I also received some suggestions by some helpful people from Twitter as I fell asleep…
My santa seems to have lost his torso and face when importing his model to Unity…I’m sorry this is so funny 😂🤣
— Shivani Rambaran is vaccinated (@shivanishawr) November 20, 2020
Taking A Step Back
…which brings us to today. What did I do today, you ask?
Nothing. At least not coding related.
After the series of unfortunate events yesterday, I started feeling like the Baudelaire siblings, and to be honest, quite overwhelmed.
I have a tendency to overthink, and oh, did I overthink. For example:
- Am I cut out to design and develop stuff?
- How am I not getting this, am I dumb?
- Everything is falling apart, I will never release this game before Christmas!
- Omg, I am such a fraud, trying to build a game, I am not a game developer!
At that point, I decided to take a step back and pull down the wallpapers in my bathroom (I am in the middle of a DIY renovation of my bathroom so no, I didn’t tear down my bathroom out of game dev frustrations, but let’s be serious, has this happened before? 😳).
And that’s it. I did that the whole day long. At the end, I realised that I should look into my game dev issues like I have been doing with my bathroom: a step at a time.
So, I didn’t build anything today. Debugging starts tomorrow.
Nov 23, 2020: Gingerbread House
Gingerbread House Done!
After two days at it (which is why there wasn’t any posts yesterday) and 1217 legos later, my gingerbread house is done! I have added weapons, owls, plants and a disco floor, among others.
Nov 24, 2020: The Curious Case of the Door
The curious case of the door
I am feeling pretty good today. I managed to fix the issue of my gingerbread house door opening on its center pivot (which is the standard on Unity) and make it open at the hinge like a normal door. The solution was staring at me the whole time: Just add the animations to a small circle tile and pop the tile on top of the door.
Sneak-peek inside the gingerbread house
Another issue I had was, although I could go inside the house, I could not actually see the interior of the house. That was promptly resolved by changing the layer of the model to “environment”, which kind of makes sense since it is part of the environment!
Finding solutions on the internet
As the LEGO minigame is a recent creation in Unity, not much support is present apart from the official mods. This kind of made it harder to understand the finer mechanics of Unity. For example, I only found out how to get into the gingerbread house by trial and error and applying some logic.
As a first-timer to game dev, this experience has been a roller-coaster till present, and surprisingly, I still haven’t lost my patience! 😂 😅
May 7, 2021: The Aftermath
Adding logic to the game
The main arc of the game, so to speak, required the player to collect all the presents to be able to collect Santa’s bag from the Yule’s mouth (thus destroying the Yule in an epic explosion and opening the treasure chest in the gingerbread house), then using the reindeer cart to fly to the gingerbread house. The player then had to go inside the house, climb the stairs, and jump to the roof to collect the key from a treasure chest. On the roof, Santa Claus would be locked in a cage, so the player would use the key to unlock the cage and win the game.
Changes were made
I tried really hard to add Santa Claus as a minifig into the game, but the looming deadline made me scrap that idea, and instead use a minifig (Astronaut Girl) provided in the template assets as the main character.
Version 1.0 of the Yule was also scrapped for a more terrifying Yule with an open mouth (so the player could jump into the mouth to collect Santa’s bag). Also, about halfway through the game, I tried to export the game into WebGL and assets started going missing, so I had to recreate the game using the assets I made, taking me longer than expected to finish the game.
Publishing the game
Sometimes, you just need to know when to let go. Was I completely happy with it? No, but I managed to create the main bits. Unfortunately, I was not aware that you were supposed to optimise a game, and since it was working fine on my PC, I figured it would work fine for others. By the time I realised this, I did not have enough time to research and find out how to optimise the game, so I made a game thumbnail, published it, and hoped for the best.
So, I got so excited for my first game that I created a thumbnail for it 😅🎅🎄⛄️❄️🎁
— Shivani Rambaran is vaccinated (@shivanishawr) December 14, 2020
"Winterland" LEGO game is FINALLY out on @unity3d! I went through a roller-coaster of emotions to get it done before the December submissions deadline! Can't wait for the next #legogamejam livestream😁@askaliceplease @avashly @atholm @minionsart https://t.co/9AVq2mbq2B pic.twitter.com/Rbhx3iEjc3— Shivani Rambaran is vaccinated (@shivanishawr) December 13, 2020
Lessons learnt and going full circle
WInterland was my first experience making a game. Looking back now, although it was not optimised and cannot be played (unless you have a super powerful computer), I was introduced to so many concepts, both in Unity and 3D modelling.
I did some research after releasing the game, and realised that the meshes of each individual brick for the models were imported, instead of a combined mesh. I am pretty sure that’s the reason for the lagging (The gingerbread house alone had over 1200 LEGO bricks in it!), together with not culling to limit what was rendered. I might revisit the game at a later time to sort that out.
This experience left me feeling incredibly empowered, enough to apply for a game design course ran by The Prince’s Trust, but that’s for another post.
Although I didn’t win the contest, I was featured in the Unity livestream on 17.12.2020!
You can view the part they mentioned Winterland here: https://www.twitch.tv/videos/842063277?t=01h09m39s