My 20yo Love-Hate Relationship with Game Dev
It is said that sometimes being bored is necessary to cultivate oneself and foster creativity: it certainly was the case for me, as this was why I started programming. I think I was 8 or 9 years old at the time, my family had recently bought a new PS2, and I had plenty of time on my hands. It's sad to think it was almost 20 years ago!
Ironically, what brought me to experience game development for the first time was that I had very few games. As a child, I didn't have access to the Internet or to more knowledgeable gamers, so I mostly went blindfolded while shopping for videogames. Of course, it was difficult to find a quality, lasting title in this way, so I had to play and replay to the bones whatever I already had in my library, all of the while dreaming about a luckier purchase in a few months' time.
In some instances, I got so desperate I fired up the demo disc that came with the PS2 itself, which unfortunately contained only very crappy games (with the exception of the beloved SSX). In such dire conditions, I started to spend increasing amounts of time in an unusual app: a text editor packaged with a BASIC compiler and some sample programs. To this day, I am still surprised that Sony included the IDE with a brand-new PS2 in the early 2000s, maybe as an attempt to brag about the computing capabilities of the black monolith.
Gamers Literally Only Want One Thing And It's... More Games!
Anyway, it is certain that I spent endless hours tinkering with the IDE, naively trying to "unlock" new games with my limited knowledge of computers and English, but instead changing the color scheme (turquoise was my favorite) and the font size. As I didn't have a keyboard or a mouse at home, I had to cope with the tiny joysticks on the controller.
Among some sample procedural graphics programs, the IDE also featured Worm, a copycat of Nibbles, with in turn is a variant of the Snake game. As you can imagine, this surprising new find had very limited gameplay: on the upside, I soon realized that I could open the Worm program in the text editor, and even modify it!
I could do very interesting things with the program. For instance, I could skip entire levels and go directly to the more advanced ones, increase the game difficulty by changing the worm's speed, or even alter the level layouts to display my name. In case you may wonder - yes, it was mostly to my detriment, as it was difficult to catch anything that would spawn inside the "O" of Loris.
Over the course of time, I bought more interesting games and stopped paying visits to my pet worm game. However, TimeSplitters gave me the chance to go back to level design. TS was a wonderful, huge game, created in a golden age when men were men and FPS had offline multiplayer with split-screen, dozens of characters and weapons, variegated arenas, and innovative game modes. As if that wasn't enough, TimeSplitters came with a level editor.
And of course, that editor was crazy: for instance, you could create arenas with multiple floors, change the lighting of every single room, and set the position of players and item spawns. The most incredible feature was the opportunity to program events into the levels that could spawn enemies or unlock a door, set a patrolling route for enemies, unlock a door, activate a trap, and a lot of other stuff. In practice, you could create entire single-player levels from the editor and share them with other creators online. It was awesome!
Grown-ups Don't Play Games
Today, I rarely play games but I often program other stuff. I sometimes think about why I never pursued game dev as a career. There were several reasons for that.
When I decided to attend a BSc in Computer Engineering, I knew from the start that I shouldn't become a game developer, even though I was passionate about games. In fact, it was a terrible career choice from any possible perspective. First of all, I had to move abroad to find a half-decent job position, as all the interesting videogame companies apparently hated my country. Even ignoring that, the salary for game developers is low and the work conditions are usually terrible, especially when compared with those of other software engineers. I had other, more pressing priorities and needs at the time (aka 💰), and the risk of getting pigeonholed into a stagnant career wasn't one I could face. I comforted myself by thinking that by turning a hobby into a job, game development would soon lose its appeal anyway.
After a few years' break, and while in totally different personal circumstances, I started to feel some nostalgia for game design and I fell into the lap of the Unity game engine. I must be honest: I rapidly understood that game dev is hard. I don't believe to be particularly gifted in software engineering, but I am reasonably fast in grasping new concepts and giving birth to new features, fixing bugs, and designing new services. The learning curve in "regular" programming actually gives away many small wins along the way.
To me, learning game dev was like learning to walk again. There are so many new concepts (what's a Rigidbody? and a Quaternion? why game variables are multiplied by this odd "Delta Time" value?), traditional design patterns are not particularly useful, and bewildering antipatterns such as Singleton are king. Don't even get me started on the game engine APIs, oh no: every engine has its own way to deal with user controls, UI, camera, and assets, and on top of that has the habit of changing everything at each iteration. When looking for specific solutions for, let's say, capturing a mouse click on the screen and projecting it to the floor level, the most popular web results are a potpourri of responses ranging from 3 to 5 years in the past, and feature deprecated APIs or stuff that doesn't work well anymore.
I can't hide the fact that it's also my own fault. Since my day job is already about programming, I have little energy left when I turn to game dev in my free time: I want to see results immediately, or I tend to switch to a different project or a different game engine. Instead, what I need are patience and focus time on a simple, clear goal and a single tool. Another issue is that I usually work on it alone: connecting with people with the same interest and maybe complementary skills would help me to progress faster and don't lose focus. Plus, it's much more fun to design the game with another person: you can laugh about all the silly, unexpected glitches that will inevitably happen, and you can share the small victories along the way.
I believe I will go back to Unity sooner or later in a more serious fashion. While it doesn't make sense right now, as I have other interesting projects to cultivate, I always return to game dev: it's the ebb and flow of our relationship.