denyskryvytskyi / ElvenEngine

2D/3D game engine from scratch
MIT License
32 stars 5 forks source link

Suggestion: Add 3D physics support using Jolt Physics #35

Open MrOnlineCoder opened 2 weeks ago

MrOnlineCoder commented 2 weeks ago

Although I am not sure on your exact plans for the project and whether 3D-based games would be the main target for the Elven, I would suggest experimenting adding a 3D Physics engine at some point of time, aside from Box2D for 2D.

And for that I would suggest: Jolt Physics which is open-source C++ physics engine with a ton of features. Initially it was created as in-house engine for Horizon: Forbidden West, which I think is a good marker too.

I have personally created simple simulations with it and enjoyed it a lot, a bit more compared to Bullet or PhysX. Aside from built-in multithreaded support, it also supports double-precision simulations and even determinstic simulations. The documentation is fine and even if something is missing - the maintainer helps you quite fast in the Discussions section.

I understand that this can be a pretty broad and complex feature, but here I am just suggesting one of possible solutions to consider in future. Feel free to share your opinion on that.

denyskryvytskyi commented 2 weeks ago

I've started developing Elven for learning purposes and improving my knowledge and skills almost 5 years ago. But, I strongly believe that an actual game should be the main objective behind the game engine. As you see, I've developed some games to test the 2D part of the engine.

I'm more focused on computer graphics and multithreading for now and my personal plans for the near future are Rendering (Shadows, Deferred Rendering, PBR, etc.) and Job System. Then Vulkan support for future plans.

So, It would be great if you integrate physics and experiment with it in the context of Elven Engine. I appreciate your effort :)

Jolt Physics library looks great to integrate! Approved :)

I've also considered Box2D for 2D physics. By the way, there is a task for this already. You may integrate a 2D one within it.

Some points about working on Elven Engine: