roadrunnertwice: Weedmaster P. Dialogue: "SON OF A DICK. BALL COCKS. NO. FUCKING." (Shitbox (Overcompensating))
[personal profile] roadrunnertwice

I might not have actually talked about this on my journal at all, but, I've spent a bunch of free time in the last couple years learning some video game development skills, working up to building some fun stuff I can share with friends and strangers.

I will tell you true, learning this stuff is a SLOW-MOVING PROJECT. I know how to program, but the types of problems are so different from what I'm used to, there's so much context and knowledge I'm scrambling to catch up with, and the array of adjacent skills needed to be a truly middlin' solo gamedev feels positively infinite. Fuck!! Still, you need some kind of creative outlet, and this is the one that my brain is most willing to saddle up onto at this point in time, so boldly we sally forth. I've been learning a lot, at least.

Anyway, this post isn't a real summary of what I've been up to, it's just an extended tangent about some computer nerd shit.


Based on some prior research,* my first move was to start learning GameMaker Studio 2 (GMS).

I got through maybe 3/4 of Shaun Spalding's Action-RPG Tutorial and learned a ton, but when it came time to start making something of my own, I got cold feet, fled the engine, and started looking for something else to use. After briefly dallying with Godot (at about the worst moment to do so**), I settled on an open-source Rust-based engine called Bevy, which I've been learning and building on for about a year now.

Bevy is roughly the opposite of GMS in terms of difficulty curve, polish, and production-readiness.*** But I'm having a much better time with it, and I expect to actually build some little games of my own in it in the coming year.

I think there's two-ish reasons why the more difficult framework is working better for me; one of them is thoroughly predictable to anyone who knows me, and the other is maybe actually interesting.

The first reason is just that I'm perverse and insist on doing it the hard way. 🤷🏽 I'm driven by a need to know why and how things work, and a lower-level framework really encourages you to dig into those. (Well, more like forces you to.) And in Bevy's case, the engine code is open-source and written in the same language as the game code you're writing, which acts as a massive accelerant to sorting out wtf is going on. (This is explicitly part of their design goals, and stands in stark contrast to GMS and Godot, both of which are C or C++ engines where your game logic is all written in a higher-level scripting language.) So while learning anything takes a lot longer, I have a lot more confidence in anything I do learn.

The second reason, which I only identified recently and am still kind of rolling around in my head, is that maybe different programming languages (and frameworks and coding environments) want different things from you, and those things can clash with what you want or are able to give.

I now think that GameMaker code (by which I mean the whole fabric, including both scripts written in their GML programming language and the editor-managed objects and properties they interact with) loves to be written, is indifferent about being read, and hates to be refactored. And THAT was what gave me the horrors and sent me running.

Rust, on the other hand, actively resists being written. It'll push back at you until you can show you really understand what you're trying to do. But it quite likes being read, and it genuinely loves to be refactored.****

Interestingly, GMS's traits probably come out as a positive for people in other situations! If you don't really know much about programming and are truly just getting started, or if you know what the hell you're doing and can already see the architecture of your game in your head, it'll get out of your way and let you just blast off. But I'm in a funny in-between space, where I'm new to gamedev and its problem space but pretty comfortable with programming in general. So I can already tell that for my process, I'm gonna be spending like 100% of my goddamn time refactoring! And if the tool and I disagree about whether I should be doing that, we're not gonna be able to party.


* GMS is (mostly) batteries-included and reputed to be (relatively) beginner-friendly, while still scaling to serious commercial projects. I know of a double-digit number of games made in it that are fun, ambitious, high-quality, and of a type of game I'm interested in making. (Mostly 2D stuff across a broad spectrum of retro to modern, in a particular cluster of genres.) It's a commercial product, but I have enough of a paycheck that I didn't consider that a deal-breaker (though, more nuance on that later maybe).

** Start of Godot's 4.0alpha series, so one release had the tools you want but didn't fukken work, and another release worked ok but some crucial features like tilemaps were in just an unacceptably primitive state.

*** It's only a couple years old, and it has not launched any ambitious high-quality commercial games of the types I'm drawn to. Batteries are not included. (Well, that's sort of a simplification, but: no level editor, no sprite or model editor, no game object properties editor, no built-in asset-management interface. At this point in time, it is "just" a programming framework.) It requires you to write your game in the Rust programming language, which is famously beginner-unfriendly. And it's balls-to-the-wall committed to a powerful but mind-bending ECS (entities, components, and systems) programming framework, which throws out all of the intuitive object-oriented patterns you see in other engines in favor of a weird database thing and a sort of diffuse mist of disintegrated selfhood. It does not stand out as a compelling choice for someone who is just beginning their hobby gamedev adventure, is what I'm getting at.

**** I could go into more detail about this, but for now just take my word for it: Rust has your back and will actively help you make sure nothing breaks when moving things around, and this is a large part of why people use it.

Depth: 1

Date: 2023-01-28 11:21 am (UTC)
brainwane: My smiling face, including a small gold bindi (Default)
From: [personal profile] brainwane
Best wishes in your endeavor! And thanks for sharing the "they want different things from you" articulation.