Every developer should try building games
Why building games and learning game engines have high RoI for learning
As a developer, you try to stay updated by building side projects or learning new technologies. At times., these side projects turn into startups. Or you might be someone who likes the joy of shipping things and solving problems. I argue below that building a game with a game engine should be on top of your list. It will reward you handsomely on learning quests. You wonder why? Read on..
The Cradle of Good Programming Practices
Look at this list of famous and recommended programming practices: good object oriented design, iterative development, program to constraints, co-routine based concurrency, asynchronous evented I/O, message passing. Now compare how some of them are taught using artificial examples: animal or shape analogies in object oriented programming, async programming tutorials which talk nothing but setTimeout
. Each one of them can be learnt better in game development because you would use them practically to solve real problems.
Zen of code vs no-code
No-code is a hotly debated topic as well as the in-thing. We devs say it won’t work for building something big and real. Game engines show you the right balance. Let us try a real example instead of debating theory: Say you want to place enemies on your game map. You might use the GUI (aka no-code) of the game engine to place them manually somewhere, and move on. Then as your project evolves, you might write more complex code for spawning enemies at specific locations for specific levels. Game engines resolve code vs no-code by making both accessible and leaving the choice to you. It shows us a vision of how powerful no-code can be when used as a complement to coding. Instead of being just a vision, it has been around with game engines for a long.
Interesting problems
Let’s accept it. A large part of software development is solving boring problems: moving data around. Even building apps as a side project quickly devolves into the same crud (pun intended!). The fancy algorithms and data structures in interviews are rarely used in a day to day job. Unless you are lucky or a senior developer who gets to work on hairy problems. Making games will let you focus on interesting problems. Bit twiddling, interesting data structures or algorithms to speed up your game are routinely used. Maths, often ignored by the FAANG style interview process, is a staple of gaming, and you’d realise maths is fun.
Workstation like tooling experience
Game engine makers know that adding resources like files to your game, profiling and optimizing the game, and shipping it to multiple types of hardware platforms is a part of the job. They don’t leave you fiddling with different (often incompatible) tools for every part of the build, optimise and ship process. I have shipped enough code to production to see how complex tooling around building and shipping is. Good game engines will show you how liberating the process of shipping something could be fun with the right set of tools. The barrier to entry there is low and tooling is not an afterthought.
They won’t come if you just build it
This again is a personal experience from side projects. Long time spent in tech stack and the likes, only to build a dud and burn out before learning from the user. We developers love to obsess about our languages, stacks, CI/CD and whatnot. This results in a delayed feedback loop: what if no one cares about your product. Good game engines in the market, with their batteries included tooling, help you to just build it and show it to someone. You’d quickly realise that just building a product (game) is not enough. Marketing, selling and convincing people to use it is harder. It is a bitter lesson in a sense. But reaching that stage often increases your odds of success, which is rarely possible with many modern technologies.
Engines and game recommendations
I’ve talked about games and engines in this post. Someone will quickly argue that this is true only for good game engines and they are rare. To answer that: If just starting out, you may pick up something like Pico 8 (with Lua scripting), a fantasy console with carefully chosen constraints that help you to focus on making things. Once you understand the core elements of game making, you may move on to Defold (a solid 2D engine, Lua programming) or Godot (Python-like scripting, solid 2D, great for 3D too).
In terms of games: pick anything that you liked in childhood. A pong game, a platformer like Mario or top-down games. It’s a wonderful world. Let’s go exploring!