< More Posts

Indie Games: A Trail of Tools

Published 23 May 2021 at Yours, Kewbish. 2887 words. Subscribe via RSS.


Introduction

I think I’ve mentioned it before, but ironically, the platform that hooked me into programming was low- and no-code tools. Specifically, I had a bit of a phase in which I fancied myself a game developer, while exclusively relying on drag-and-drop engines and scripting-free tools. I think game dev was my first real foray into any sort of programming (unless those endless rounds of Lightbot in elementary school computer class counted). I recall it being surprisingly easy to get started: there’s a wealth of game-making tools available that don’t require any coding and are specifically targeted at kids: from the ubiquitous Scratch, to Roblox, the addicting launcher and editor that supplied many an hour of obbying fun1. While I no longer have original files2 for most of these projects, I thought it’d be interesting to take a dive into the tools and engines that, well, ‘raised’ me as a programmer - at least until I found out what web development was.

I used to play quite a few games as a kid - I think I started with the first versions of the Dora games (where an oddly grown-up version of the title character would go around with her gang of friends and rescue puppies). There was also the Build-a-Bear Bearville universe, which I can no longer find any archives of, and apparently shut down in early 2015. I was very intrigued by seeing my physical teddy bear pixellated on a screen, and I think I spent way too long on customizing my in-game house. It was odd how accurate my character was, and trying to figure out how the game magically copy-pasted my toy directly into the Cub Condo was an interesting thought experiment for six year old me. Moshi Monsters was another super fun game - though also now deprecated due to Flash requirements. I remember spending ages trying to figure out all the puzzles and quests, and inevitably falling into the YouTube clickhole of walkthroughs and clues. When I got a bit older, I went into a pretty heavy grind with Club Penguin, and I used to meet up with friends to do the PSA Secret Missions. There are tonnes more Flash and (pseudo-)educational games I used to spend my free time on, and I credit the experience of these engaging game mechanics with sparking my interests in game development.

Somwhere along the way, I got the idea that I could replicate or extend some of my favourite games, so I started Googling around for ‘how to make games no code’. It’s interesting to note that I even understood the concept of code, and that I didn’t have the skills to write it, in the first place. I think it’s kind of poetic that what ended up drawing me to development were such low-code (and low-effort) tools. Most of the games I get nostalgic over are the bubbly, vibrant, slightly buggy Flash games that popped up in the early 2010s, and back then, that was all I wanted to replicate. Game-mechanics-wise, my projects weren’t much more than drag and drop world builders, or side-scrolling puzzle platformers. But I saw something in the process of building each of these game worlds, from the carefully crafted quests and characters to the infinitely customizable housing systems in many of the games. That something was enough to encourage me to jump (well, attempt to awkwardly stumble) into the world of game development, and it’s brought me, through a very disjointed and meandering path, to where I am today.

In the process of writing this post, I realized I had a lot more to reminisce about than I’d initially thought, so I’ll split this post into two. This post will cover the tools that I used, and how each of them shaped my development journey. The next post, whenever that comes out, will tackle more about the projects I worked on and the impacts game development and indie game culture have had on my experiences to date.

The GameMaker Era

GameMaker wasn’t the first programming experience I had - that honour goes to the battered copy of ‘Javascript for Dummies’ I picked up at the local library sometime in third grade. It taught the basics of console logging3, and eventually got into how to bodge together HTML5 games. I can’t remember what exactly led me to download GameMaker on the first old Toshiba laptop I had essential free reign over, but I remember being spontaneously inspired to see if I could make JS games without programming. Oh, the naivete of little me - though I guess it’s sort of funny that even 9 year old me was already frustrated by programming.

I don’t think that GameMaker was even paid when I installed it, but I recall being very intimidated by all its buttons and menus. GameMaker games can be put together with GameMaker Language, the proprietary scripting system, though I was nowhere near prepared enough for that. Even the visual drag and drop systems were a bit overwhelming. I doubt that’s a fault of GameMaker’s - I was glancing through a couple tutorials earlier, and it’s comparable to Unity. But what can I say: I was probably 9 or 10, and I simply was unprepared for the wild world of ‘actual programming’, even though I guess GML is more visual scripting than anything. After discounting GameMaker as a viable tool (because I could not for the life of me understand it, and the concept of Googling niche websites for tutorials had not revealed itself yet), I delved into a search for another engine: something that might be less feature-heavy, but that would be more comprehensible.

‘Hacking’ GDevelop

That tool ended up being GDevelop, which actually did spark a lot of small creations and my first couple finished games. GDevelop has a custom event-based scripting system that’s pretty advanced for its child-friendly interfaces. I probably didn’t make use of half the features available, but I think this was roughly when I started to think about proper mechanics and ideas - I was no longer too handicapped by my lack of programming skills, so I could focus on what I really wanted to make. (Not that I had any original ideas, but it was definitely rewarding to see the actual playable fruits of my efforts.) Exporting was also super simple, so I started to be able to actually play my games and show them off to my classmates. (I think this was also the point when I made an itch.io account as well.)

I’ll talk a bit more about some of my projects in the other post, but the first couple experiments I made in GDevelop were definitely platformers. I had a thing for the genre (probably due to a minor dinosaur game addiction), so I spent a lot of time drafting up rudimentary ‘AI’ (if-statements) in the editor. No matter what scuffed little projects I worked on - the important thing was that I could actually make things now. Whatever ideas I had - I could (probably) bodge together a solution, and that freedom was pretty addicting as a kid.

Bitsy

Sometime vaguely concurrent with my GDevelop escapades was my foray into Bitsy, a little story game maker that’s decently popular in the indie game community. There was a charming painting pane where I could pixel-art whatever characters I wanted to build, a tile editor to lay out my story, and a few rudimentary animation and item settings. Things were dead simple to rig together, and while the editor certainly had its limitations (which were intentional design features, I’m sure), I found the restrictions more freeing than anything. Instead of making proper shooters or scripting complex game behaviours, I could focus on writing my storyline, and improve my world-building skills.

Dialog and drawing out the worlds were the key pillars of the whole Bitsy experience, and while I didn’t come up with any cinematic masterpieces, the whole retro + limited aesthetic has made a lasting impression on my content preferences. It’s built a very niche, indie community, and I value that while it might not be the choice for a fast-paced action interaction, the experiences people have worked Bitsy into are very impressive and inspiring. I might take a stab at another few Bitsy games in my spare time (not that I have any at this point, but I can dream), just because they’re so cute and fun to make.

Climbing the Social Ladder

I can’t think back about my game development phase without mentioning Roblox. At first, I didn’t even know I’d installed the editor, since it was just bundled in with the default installer. I only opened it after trawling through Windows Appdata folders looking for something, but once I opened it, I immediately started playing around with the modelling and setup tools. Roblox itself was an amazing, engaging game environment, and since I’d been playing a bunch of the various games with my friends, I had references and inspiration to draw ideas from. Roblox’s editor was definitely a step up from the simplicity of GDevelop, but the basics were simple enough: drag and drop models from this pane, make your own over here, and fiddle with object settings in this one. It’s surprisingly comparable to Unity, though the scripting is done in Lua instead. I remember spending ages scrolling through Roblox tutorials on YouTube - AlvinBlox was one of my favourites. I had no idea how to get anything new done, since I was copying code directly over from video courses, but it was still something.

Given the odd section title, you’re probably thinking some dramatic backstory happened with grade 5 me. I’ve mentioned this a couple times before in other posts, but my Roblox shenanigans involved making little games for my classmates to show off my tried-and-true hackerman skills. This was sort of an expansion of my experience with GDevelop and Bitsy, but Roblox also offered a platform to share my experiments on, and one that my friends were already spending way too much time on. In a way, I guess Roblox shares a similar vein with TikTok in that remixing and sharing content is super easy, and this low barrier of creation lends itself nicely to the empire of content both apps have been building. As well, seeing how my classmates played my team games led to new feature ideas, which then fed my need to learn programming, so by the end of my Roblox journey, I’d developed a decent understanding of how ‘real’ game engines worked.

Pixelpad and Unity

This came in handy, since by this point, my parents had picked up on my whole programming spiel and wanted me to learn ‘properly’. That meant shipping me off to coding classes once a week, where I sat in an overly bright schoolroom and copied code directly from what the instructor was writing out. No shade at all - in later classes they tried to get us to build our own functions first, but thinking back, one of the main reasons I stopped was because it felt very repetitive and, frankly, boring to be essentially regurgitating lines of script. There wasn’t much creative thinking involved, and since each session was oriented around making similar versions of the curriculum project, I felt a bit shackled by all the restrictions of fitting to a pre-built game. (However, this did end up expanding my actual programming skills quite nicely, so while I maybe lacked freedom in my gamedev, I certainly ended up making more polished and playable final products.)

My first year there involved working with Pixelpad, a Python-based web interface. It has a pretty detailed core library that makes programming in it very different from vanilla Python, but it was easy enough to hack away at. I took away none of the Python syntax and had only scratched the surface of what it was capable of, but Pixelpad was my first instructor-led look into properly scripted games. While I didn’t really grasp the library well other than what was used in classes, I’d learned the basics of thinking in a game loop and started thinking about possible recipes that I could reuse in other languages and engines.

Once I’d started to fancy myself an actual game developer graduated to the next module of the program, I started working with Unity. (This continued for a couple years before I finally decided making websites was more attractive and quit.) Unity was certainly a step and a half up above Pixelpad, so while not being able to control exactly what I was making, having an instructor guide me through what was going on helped cement the scripting system better than if I’d tried to tackle it on my own. A lot of the maths concepts (vectors used for jumping and 3D world space movement) went completely over my head, and it honestly wasn’t until last year when I revisited Unity (for an unrelated project) that I finally understood them. Despite its challenging interface and complex starting point, Unity’s been what I turn to for any small game development for school projects now - it’s a nicely popular, full-featured engine that I have enough experience in to bodge games together with.

Conclusion

It’s been a fun trip to navigate through what I have left of old projects and memories of when I was getting started - I should do this more often. What’s been most interesting to personally note as I’ve charted my journey through a minefield of various engines is how my annoyances and frustrations with each tool logically lead for a search for the next. Following the trail somehow leads all the way to where I am now - I think each of the tools I’ve mentioned above has changed my approach to programming in a significant, though perhaps minor, way. Game dev was where I got started with real, applicable programming, and that makes it something I’d like to at least consider dabbling around with in the future.

I’ve fallen pretty far out of from game development now - the last time I touched it was for a school project, and before that, I hadn’t even kept Unity downloaded on my system for ages. However, I think the cultures and communities that I somewhat illicitly joined (I was definitely under 13 when I made an itch.io, but we’ll keep that one to ourselves) certainly made an impact - not just on my programming ability and game design skills, but also on my aesthetic, and the types of content I find appealing today. Or maybe it goes vice versa - perhaps the whole indie aesthetic drew me to the collaborative, close-knit sphere of game development. I could go on for ages about this, but I’ll keep my discussion about my projects and inspirations to another post. I’m excited to expand more on some of my old experiments, so look forward to that story when it comes out.


  1. We used to have to share laptops in grade 6, so while most people would fight over their assigned partner to finagle the most screen time, my friend and I agreed to use one computer and play together. Oddly more democratic and a lot less chaotic than most other arrangements, but that’s besides the point. We were both into obbies, or glorified 3D platformers that generally had elaborate level design and often story levels, though our favourite, which I think was called Wipeout, was a pretty straightforward obby in terms of mechanics. One of us used to control the WASD keys, and the other would deal with jumping. To be honest, it was a lot more efficient than most teamwork I had since then, which might either say something about the sheer focus put into making precarious jumps, or something about effective organization. ↩︎

  2. Well, I technically do have an archive of all of my work dating back roughly to 2019, which is when I just took all the work previously and zipped it up. However, I don’t think half the project files would load properly with recent versions of the tools, and I can’t be bothered to deal with the hassle of trying to find old releases and fix everything up for a few screenshots. ↩︎

  3. Oh dear - I can tell this will be a footnote heavy post, but there are a lot of tangents I want to reminisce about, but I suppose you can skip these if you’d like. Before picking up Javascript for Kids or Dummies or whatever it was, we used to use Internet Explorer at home, while the old clunky laptops at school were slowly transitioning to Chrome. Well, to get that spicy console inspector, the book directed me to download a copy of Chrome, which I remember thinking was the absolute coolest thing ever. I was installing my very own web browser - in short, I may as well have been in sunglasses and an oversized black hoodie: I was a hacker. The next time we used the laptops, I pulled out my new alert() and console.log() magic to prank all my friends. I think the moment when they realized that no, the FBI was not, in fact, watching them was one of the most inspiring moments for 9-year-old me - my first computer science clout. ↩︎

- Yours, Kewbish


< More Posts