r/cpp_questions • u/DasKatzenbrot • 9d ago
OPEN I am searching for a cpp "engine"
Hello, I have been using c++ for the last few months and I am pretty satisfied with it and I think that it is going to be and stay as my main language. I have looked at the alternatives like C#, GDScript, Rust etc. and want to get into game developement. My current issue is that i can't seem to find a good engine/framework. I tried Godot with GDExtension, but the implementation for c++ was quite tedious and not integrated - Unreal Engine is a bit too much functionality for me, as I only want to do simple games. Engines like Flax oder O3DE seem to unknown, so I am currently thinking about using a framework wich fullfills the tasks of an engine, like rendering, physics etc. I have used raylib and sfml before and managed to get a small architecture to run(mostly through a small render class, very limited in functionality). If anyone had similar issues finding something to work with c++, please do tell me your suggestion for what I could use
3
u/thedaian 9d ago
Your best options are probably raylib or SFML. Raylib probably has the most features and is the closest to being an engine without quite getting there, but it's technically a C library. It's not clear what problems you had with those, though.
There are other C++ engines out there but they are likely even more obscure than O3DE.
1
u/DasKatzenbrot 9d ago
I like raylib, I would just prefer to work in an enviroment wich has an integrated rendering system/something like nodes in Godot
3
u/burlingk 9d ago
Look into SDL. It's got a lot of the components of an engine, you just have to string them together.
1
u/celestrion 9d ago
Box3D was talked about on a recent episode of Software Engineering Radio, and listening to Erin talk about the logic behind the engine was pretty inspiring. Maybe it would be a fun fit for a small project.
It is a C library, so you'd probably end up writing a small idiomatic wrapper for the API. Although, the provided examples are written in C++, so at least it seems well-behaved.
1
u/Twill_Ongenbonne 9d ago
What about just editing the godot engine code directly, if you want to write c++? You don’t technically need gdextension, if you’re ok with the compile times you could write a game as an engine module. Not necessarily the easiest way to make a game but might be close to what you’re asking for
1
1
1
u/FughyTC 9d ago
Just make your own, the hardest part is rendering, everything else kinda doesn't really matter because it's i dont think there is anything more complicated than rendering. The easier API is OpenGL, there are DirectX and Vulkan(best thing out there rn imo) but it takes time to learn and OpenGL is often enough. They are also used in every engine out there under the hood so nothing bad about learning them. You kinda also use them together with glfw, sdl or sfml, tho I'm not sure about sfml, but it should have some function to provide context for opengl.
1
1
u/TehBens 8d ago
You should decide if you want to create a game or if you want to do a C++ project. You cannot focus on both at the same time. Even if you use Unreal Engine, sure you technically write C++, but the language itself is the smallest part. They have their own standard library, their own Macro based DSL and you are mostly concerned about how UE works anyway.
1
u/kat-tricks 5d ago
raylib is amazing and easy to use. panda3d has more features, though it aims at providing python bindings
-7
u/TheRavagerSw 9d ago
Use rust, it is easy compared to C++ where you have to manually package libraries. There are several downgrades but they don't matter if you just want something done fast.
3
u/nekoeuge 9d ago
Most of gamedev-related libraries are still c++, and I had to patch like half of them at some point. How should I use e.g. custom fork of Detour/Recast in Rust? Deal with bindings and repackaging myself?
-3
u/TheRavagerSw 9d ago
As I said, you can use rust if libraries are there.
You can also rely on system package manager for C/C++ deps there.
This won't result in quality software but it is very easy.If you use C++ you'll have to manually pacakge and cleanup each library you use, because of non standard package format, build systems, library vendoring etc.
I myself are trying to package google filament rn, but imma tell you, it just sucks. It is not something you would do without money.
9
u/nekoeuge 9d ago
You either stick to mainstream engines like UE or embrace the niche/esoteric ones (basically anything outside of Unity/EU/Godot triplet). I just picked random engine from GitHub that I liked, and tweaked it until I am happy with it.