The deeper I got into gamedev, the more I realized what I really wanted to do was create worlds, design systems, and come up with new and exciting game mechanics. And we (well, I in particular) had a lot of ideas. Really, a lot.
I had a small text document on my desktop with a list of project ideas. The doc is still there by the way, and growing all the time. Every time I go for a walk, or can’t sleep one night, I’ll come up with another game idea or mechanic to add to the list. It drives my partner nuts – she wants us to pick an idea and make it. If only it was that easy…
Bringing these ideas into life means coding them into existence. My partner was taking care of the art side of things, but the reality was that we wouldn’t be able to afford to hire a programmer, not anytime soon at least. So I was forced to learn how to code. Not just copy code from YouTube tutorials, but write code myself.
By this stage, I’d dabbled in a bit of C# in Unity and I’d done some small exercises on websites like GeeksforGeeks and Exercism but was far from being a programmer. I looked around for ways to learn Python and found some good websites, and there were a few paid Udemy courses that looked ok. In the end, I landed on CS50 which seemed like the stand out option.
CS50 is an Introduction to Computer Science course run through Harvard University, and is available online through edX. It’s around 11 weeks and covers multiple languages – C, Python, SQL – as well as general programming concepts and web development. It is a real (entry-level) university course so it’s genuinely challenging and forces you to solve problems without holding your hand. It also has pretty high production quality, with full lecture recordings and supporting materials.
Perhaps best of all, it was free – sign me up!
Going Back to School
The first few weeks were relatively easy, with small exercises that felt pretty simple. But I also found it pretty overwhelming when we covered concepts like the binary system and manual memory management, which made me question if I’d be able to follow through and finish it. As it turns out, game engines and in this case Godot takes care of so many aspects, though it’s not entirely hands-off. Knowing this helped restore my confidence, but also made me glad that I had done a course that went beyond just coding, as it is important for every game developer to understand how a computer works under the hood. It’s crazy to think of everything you’re reading right now coming down to millions of 1s and 0s, but that’s really all it is!
I also came to like CS50’s AI assistant Duck – though we did have a somewhat love-hate relationship. The Duck is a custom AI assistant that is built into the course and designed to help you with where to look for the info, without explicitly giving you any answers. Before starting this course, I’d been tempted to vibe-code with AI, but decided it was better to understand the code and build some base knowledge first. But this assistant-type AI was really helpful without actually telling me what to do.
Side note: does anyone know how I can find a good AI assistant like this these days? I feel like nowadays AI wants to do way too much, no matter the instructions you give them. I’d really just like AI to refer me to the documentation, but it often takes something from the incorrect outdated documentation instead. Or is it just me?
As the course progressed, the exercises got more complex and more involved. I looked ahead to the final weeks and saw that the big assignment to close the course was to write your own program. This is the point when I’d normally drop out, convincing myself that it was ok to stop here as Python had been covered already and that’s all I’d need for Godot.
Now I’m writing this and thinking about it, this seems like a regular cycle for me in many parts of my life. Basically, once the easy and fun stuff is done, I come up with compelling arguments to convince myself it’s ok to skip the hard and tedious part. There’s the tutorials I abandoned halfway, games I’ve stopped playing midway (I’m looking at you, Assassins Creed), the diets and training plans I didn’t stick out, or abandoning interactive novels in Choicescript when it got too hard. And, a lot of the time, it’s the same in gamedev, which ends with another unfinished project on the list.
I don’t know what made me push through this time, but I did. For the final assignment, I made a simple program that sorted audio files into folders. Super simple, but I wrote every line of code myself, on my own computer. And it worked, although I do have nightmares about formatting my hard disk every time I execute the code for some reason. I’m not afraid to admit that I was pretty proud of myself when I submitted my project, completed the whole course, and got the certificate to boot!
The Whole Gamedev Picture
This was more than just making a simple file-sorting program, or even following through and finishing something when it got hard. The more you know about different aspects of gamedev – programming, 3D modeling, pixel art, etc – you’ll have more of an understanding of what can be done and what is involved in pulling it off. Even if I might never be an expert programmer and we will eventually want to bring other more experienced programmers into the team, especially for specific aspects, having some basic coding knowledge will help me work with them and, more importantly, give me a better understanding on how to bring project scope down. Well, at least when it comes to the programming side, anyway.
Armed with this basic programming knowledge, I could finally execute (some of) the game ideas I was collecting, and this felt good. There was a lot still to learn – I got some game programming pattern books, and continued with practice exercises.
But now I felt like I was a programmer, I believed I could make a game by myself. I was starting to understand that even a simple mechanic may have a lot of code behind it, so it was important to make simpler games, stop mixing complete genres, or change existing game concepts by adding more mechanics. With my new knowledge, I knew there was still a lot to learn when it came to programming, scope creep and picking the right projects.
We’ll get more into that in the coming blogs.

Leave a Reply