Originally posted in cohost
i dunno what game i'm cooking honestly i'm just enjoying being in the kitchen

Got a three-day weekend this week thanks to Easter Sunday, so I spend it like all deranged programmers do: basically the same thing we do for our day job, but on a personal work instead of our employer's.

DragonRuby is a pretty fun game engine to tinker around with, mostly because what you'll be tinkering with is your own stuff instead of the engine. It's basically only one step ahead of making your own engine: it lets you display stuff on the screen and read inputs, and basically nothing else. Physics engine? Make one yourself. Collisions? I hope you know your math. UI? Have fun drawing squares on the screen. Basic object management? You decide how that work.

But the things it can do, it does very competently. It's fast. It's tiny. Drawing things on screen is easy. Resized images will generally look good on all size, pixel art or otherwise. Input is always consistent. You don't need to worry about importing assets: just plop your PNGs and OGGs and TTFs in and you'll be set.

So if you actually enjoy the act of programming, like I do, it's pretty fun. Like, I'm reinventing the wheel but reinventing in such a way that suits my need, you know.

The more I work on it, though, the more I'm convinced this is an incredibly very absolutely undeniably terrible engine for beginners. Like, worse than usual. With bigger engines like Godot or RPG Maker or ugghhh Unity, you need to work with the system that the engine has set out for you. Godot has nodes, RPG Maker has tiles, Unity has its scenes and game objects. But those system also gives you an understanding of how data can be structured. In DragonRuby you're entirely on your own. Which is to say, entirely on your own to make the messiest, least reusable, most frustrating-to-use structure there is.

One of DragonRuby's principle is to avoid the "Pit of Success" and instead work with a "Continuity of Design". The Pit of Success is that thing in programming where you need to do a lot of setups first before you can get to the thing you want to do. DragonRuby rejects this and instead wants a continuous progress towards complexity.

It's a pretty good philosophy, except that the Pit of Success is a thing for a reason. One of the things I learned as I get better at programming is that, most of the time, the best way to do things is just to do it right. Don't take shortcuts, don't hack things together and think "I'll fix that later". There will never be a later, there will only be you sobbing at 2 am reading your spaghetti code, trying to figure out where and why things have come to this.

Bigger engines might take a bit to learn, but by taking the time to do that you're also learning how to do things right. I already have some experience with Unity, Unreal, and Godot, so when I hop back into DragonRuby, I have a better idea on how to structure my code. I don't get overwhelmed by all the things I need to set up; I know how to make them right, that they won't haunt me in the eleventh hour of development.

Which is also to say, it feels nice, to see how much I've improved. That I'm making tangible progress with this skill.