GERTRUDE is my entry for the Learn You a Game Jam hosted by The Captain Coder. The theme for this jam was “Only 1 Inventory Slot”, but the intention of the jam is to push entrants to learn something new.
If you are interested in playing the game, you can find it on Itch.io.
My plan for the game was to make a 3D platformer in the vein of PS1-era games like Spyro the Dragon, and Medievil. My plan for learning something new was to open Unreal Engine for the first time in my life and try to use it.
Fate had other plans.
The Game
Sticking with the 3D platformer, I decided to make my game about a small robot that exists in a post-human world. Humanity is gone (either extinct or evacuated) and Earth is populated by the machines they left behind.
The player takes on the role of one such machine—a menial labour robot—whose friend is in need of a part to stay alive. In order to find the part, our hero must venture out into the world.
My interpretation of the theme took the shape of the robot having a solitary “feature module” slot, allowing them to gain additional features by using feature modules, but only one at a time. Features would include things like double jump, flying, dashing, etc. The player would have to use these feature modules to navigate the levels.
Learning Unreal
My experience with Unreal got off to a rocky start and failed to improve. I initially found that I was unable to load the engine at all if DirectX 12 was enabled, forcing me to edit a config file to get the engine running. This also meant some nice Direct X 12 features in Unreal would be unsupported.
Once in the engine itself, I found it slow and unstable. It would crash every 5-15 minutes, take impractically long periods of time to perform simple actions, and provide a generally infuriating user experience.
During my first stream attempting to use the engine, Unreal developer Aug16th offered to walk me through some basics and, despite the pain and suffering, we were able to get a basic 3D platformer up and running in around 2 and a half hours.
Unfortunately, Unreal proved to be too unstable to use.
After establishing that my computer was more than powerful enough to run the engine, I spent around 5 hours trying to figure out why Unreal and my computer wouldn’t get along, but to no avail.
Unreal Postmortem
As someone who comes for a more code-based branch of game development, I can see the appeal of Unreal to people who do not know how to code. The Blueprints system is fairly intuitive and Unreal does a lot of things that you would have to do yourself in other engines.
In fact, Unreal not working may have been a blessing in disguise. The scope of my game was essentially completed in that 2-3 hour period of working with Aug16th due to how much is already done for you in Unreal.
Ultimately, while I see the appeal, I don’t think Unreal is an engine I will be coming back to for game development. I am by no means an expert coder, but I prefer to get my hands dirty, so to speak.
Learn You a Game Take 2: Godot and Blender
With a day of the jam already wasted, I needed something new to learn. I considered picking up a different new engine but decided to go with Godot in 3D. I have a couple of months of experience with Godot, but I have never done anything in 3D.
This didn’t feel like enough, however, so I decided the main thrust of my learning journey would be learning to model, rig, and animate my main character in Blender.
3D Platforming in Godot
While I had not done 3D in Godot before, I felt as though I had a solid enough grasp of the engine and enough experience working with 3D in other engines that I should be able to pick this part up relatively easily.
I was…partially correct.
Thanks to Godot’s CharacterBody3D class, getting a working character up and running was relatively painless. Once I started setting up the third-person camera, I began to miss Unity, where there seem to be far more in-built functions for things like manipulating the rotation of a transform than there are in Godot.
But Godot was not the main focus of my experience, so I wrapped up the character controller, added the ability to pick up feature modules, and moved on to Blender.
Character Conceptualising
A little brainstorming with Twitch chat resulted in the name GERTRUDE, an acronym for General Errand Robot Tasked with Reducing Unwanted Duties Efficiently. GERTRUDE would be a small, cute robot that was originally designed for tackling small household chores.
A fancy Roomba, essentially.
I got to work sketching how GERTRUDE would look and, because I was already using Godot and Blender, I decided to find myself some FOSS art software to sketch in and downloaded Krita. A short sketch later and I had my main character!
Modelling
The process of modelling GERTRUDE went relatively smoothly. I have used Blender in a basic capacity before so I was able to fumble my way around some parts and, with the help of chat and Google, figure out the rest. I used modifiers for the first time and to get creative with UV mapping, this process was relatively painless.
Rigging
This is where things started to get tricky. I have never rigged or animated anything, so I would need some help. Surprisingly, the only resource (other than Google) that I used during this process was a 3-minute video on rigging by Royal Skies.
This video was far from comprehensive, but it showed me enough to get going, and everything it didn’t show I was either able to solve with a quick Google search or with help from Twitch chat.
The process of rigging was mostly intuitive, though I struggled somewhat with understanding how Blender handles multiple “objects” attached to a single armature.
Animating
The animation process was very straightforward. I have used timelines and keyframes in other types of applications, so that part was very intuitive to me. What was not intuitive was the Blender UI.
Specifically around the animation process, the UI felt clunky and needlessly complex. On one occasion I accidentally deleted an animation and created a new empty animation. I still do not know how, I assume it was an accidental shortcut key. The annoying part is that I wasn’t even working on an animation when it happened.
I consciously decided to create a character that did not have legs to simplify the animation process. Knowing that I would be learning to rig and animate from scratch, I didn’t want to heap more work onto my plate by rigging dozens of extra bones and more complex animations. Now that the project is over, I am confident I made the right decision. I now have the technical skills to make a more complex animation like a bipedal walk, I would just need to study videos of people walking.
Final Thoughts
Though I certainly do not consider myself to be an expert at Blender or Godot, I now feel confident that if I had to make and animate something in Blender or build something in Godot 3D, I could do it. The skills I have acquired are foundational, and while they don’t cover everything, they have given me enough of an understanding of the concepts that I would at least know where to start for the things I don’t know.
That being said, having acquired these skills, I do not suddenly feel the need to use them.
I did not get the same ratio of effort to satisfaction that working things out in code or creating pixel art provides, and given the time it takes to go through the modelling, rigging, and blending progress, it is unlikely I will ever decide to take on a project that involves substantial 3D modelling.
I am glad I have learned these skills, and I’m sure they will not be wasted in the many, many, many projects I decide to work on, but my future as a game developer lies more in the realm of code, 2D, and using assets or working with people who enjoy 3D modelling.