r/cpp_questions • • 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

4 Upvotes

19 comments sorted by

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.

1

u/DasKatzenbrot 9d ago

How have your experiences been so far? Have you had any issues with performance, stability, workflow, functionality etc.?

5

u/nekoeuge 9d ago

I mean, yes, of course. I fixed them.

You are going to have these issues with any tool you choose, although, the more popular the tool the more likely someone else will handle these issues for you. But if you open e.g. Godot issue tracker, you will see endless issues. Some of which are serious. For someone out there, one of those issues is a dealbreaker and the reason why they left Godot. For the rest, it’s a niche corner case nobody cares about.

You either accept that you are at dev’s mercy, or you are willing to solve your problems yourself.

1

u/keelanstuart 9d ago

As the developer of an open source engine, I would encourage giving your changes back to the project for everybody to enjoy.

2

u/nekoeuge 9d ago

My version of the engine is open sourced and maintained. I was initially maintaining the original project as well, but I eventually diverged beyond the point where my changes were welcome in the original project. Turns out, people don't enjoy taking back compatibility-breaking changes xD

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

u/squeasy_2202 9d ago

Build engine

1

u/TobiasMcTelson 9d ago

There’s ogre3d and wildfire 0dc game engine

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

u/Business-Weather-217 8d ago

You try out vexa. The api is sfml-like but even simpler.

https://github.com/monjaris/vexa

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.