- cross-posted to:
- programming@programming.dev
- cross-posted to:
- programming@programming.dev
Recently re-discovered this gem of a blog post, written in 2018 by Nikita Propokov, about his disenchantment with the state of modern software. Do you think it's still relevant today (perhaps more/less so than it was when it was written)?
I was just thinking about something similar in regards to gamedev.
For the past few years since college, we've been working on a 2D game in our spare time, running on Unity. And for the past few months I've been mostly working on performace, and it's still mind-boggling to me how is it possible that we're having troubles with performance. It's a 2D game, and we're not even doing that much with it. That said, I know it's mostly my fault, being the lead programmer, and since most of the core system were written when I wasn't really an experienced programmer, it shows, but still. It shouldn't be that hard.
Is the engine overkill for what we need? Probably. Especially since it's 2D, writing our own would probably be better - we don't use most of the features anyway. The only problem would be tooling for scene building, but that's also something that shouldn't be that hard.
The blog post is inspiring, just yesterday I was looking into what would I need to get a basic rendering done in Rust, I may actually give it a try and see if I can make a basic 2D engine from scratch, it would definitely be an amazing learning experience. And I don't really need that many features, right? Rendering, audio, sprite animation, collisions and scene editor should be sufficient, and I have a vague idea about how would I write each of those features in 2D.
Hmm. I wonder what would be the performance difference if I got an MVP working.
Unity is trash and I'll just leave that alone.
Using Rust for a game engine with wgpu, unless you already know Rust intimately and have used the Vulkan API before, is going to be difficult for you. I recommend you give it a try, but last I checked wgpu expected you to be familiar with Vulkan and is missing comments on most crate types and functions.
You might have better luck with something like macroquad or miniquad, but you'll probably hit a wall and realize you want to do something that the developer didn't think to expose an API to make possible. You're also on your own for sound. Bevy has many components and I know it's popular, but I don't know if it has rendering. Maybe macroquad is the missing piece? Oh, and then text rendering. That's a tough one.
I recommend a couple options: browse lib.rs or AreWeGameYet for game engines that aim to provide a complete package.
For non-rust, recently Relogic gave a bunch of money to Godot and FNA, so I would check those out. That's going to be your quickest start (towards minimalism and performance) that isn't unity.