So I’m currently looking to move my game design project(s) over to Rust because I do truly like the language (albeit being frustrated when I tried using it the last time, but I think that was because I let things get complicated without blackboxing them). However, I’m looking for a good framework or engine before diving in with OpenGL/Vulkan and getting my hands dirty with that system (which is what I was using initially).
For the record, one of my games is going to be in the style of Octopath Traveler and the other I’m looking at either doing the same or doing a voxel game. Game 1 is a JRPG and Game 2 is gonna be a combo Tactics/Puzzle game.
I’ve bounced back and forth a bit with both game engines in Rust but also just implementations for this project in general (Game 1, that is). I’ve moved from C to C++ to Unreal Engine to Rust back to C, then to C++ then now back to Rust again. Within Rust specifically, like I said, I did use I believe it was glium and egui to for my OpenGL calls and GUI respectively, but this time around, I’ve looked at specifically Bevy and Fyrox, but I’m not too settled on either. Fyrox seems like a lot to deal with for the projects I’m going for (which is one of the reasons I switched off of Unreal Engine), but Bevy is a little bit difficult to get a handle on with my project (Game 1).
Does anyone have any advice for me on how to go about this? Thanks in advance!
Edit: Per this comment, I do agree that it’s a good idea to find something to work with and stick with it to make something good. I like Bevy and its modular plugin system but outside of the tutorials (which are quite small and focused) and examples from plugins, I don’t really know how the engine works. I also don’t really have any idea how to combine these plugins (e.g. I have a plugin for embedding assets in my executable, a plugin for animating sprites from a sprite sheet, a plugin for loading 2D sprites into a 3D scene, etc.) into what I want to do. I’ll try to do some more reading, but if anyone has a better option, let me know.
I’m saying this because I’ve done the exact same mistake - if during your game development you are debating switching your game engines/programming languages - you’re not in the right mindset. Making a game is not about having the perfect language or the perfect engine or the perfect library. It’s about pipelining whatever you have available to make something fun. Make something viable first - something your friends can play and say “This is slow and stutters and has a ton of bugs but I’m having fun playing it”. You can do that in terminal if you want (see dwarf fortress). And once it’s in a fun playable state then you can decide technical aspects for it like what language/library/engine to use.
You do make a good point, but to be fair, Game 1 is a fan game for something.
Edit: on that same coin, I do have the know-how to make a game in Minecraft.
I can’t help you, but I can maybe make your decision a bit harder… what do you think about Go? If you have no hard feelings against it, Ebiten engine could be to your liking.
I’ve heard of Go but I haven’t really looked into it. Also, Ebitengine only works with 2D games, so I wouldn’t be able to use it for either project I’m working on.
Isn’t Octopath Traveler or many JRPGs 2(.5)D?
Edit: basically this, which is developed using Ebitengine.
Octopath Traveler is 2.5D, sort of. It’s more like Paper Mario, I think.
In my opinion restarting with rust is currently not the best idea. There are a lot of more polished tools available for other languages. But if you are sure about using rust, you can check out arewegameyet. It lists a lot of tools and crates to start game development with rust. I tried out bevy once, but couldn’t really figure it out in a time I was happy with. Doing stuff like this in rust includes a lot of reading (auto generated) documentations and just trying stuff out again, again and again.
I believe the first time I used Rust, it was because I wanted to practice the language I had just learned but this time, I think it’s spurred on by seeing the development of Veloren.
I am a big fan of Godot, but using Rust with Godot 4 through Gdextension is not in a very stable place yet, and I haven’t been able to figure it out yet. Godot 3 with Rust Gdnative bindings was workable but a bit painful to set up.
I spent some time a few weeks back to figure this out, and I’ve got a bare-bones repo that uses rust through gdext to create a custom player node in rust:
https://github.com/drhaynes/godot-gdext-rust-example
Might be useful as a reference or starting point for further exploration.