Project Sulphur is a general purpose game engine, built from the ground up by students from NHTV Breda for both Windows and PS4. It comes with an editor built in .Net WPF and a unique feature named "Sulphur Rewinder", which allows the developer to rewind the game in real-time. Other core features include a data driven entity component system, multiple graphics APIs (DX11, DX12, GLM), Lua scripting, networking, and support for multiple physics libraries.
In the preproduction phase of the project, I contributed to the research and design for the physics interface. As we opted to support both PhysX and Bullet, we required a layer of abstraction suitable for both implementations, without needing additional effort to switch between them. Research included determining a common denominator between the physics libraries, and analysing common features and approaches used in existing engines.
In the production phase I implemented this design with my peer and was initially responsible for the PhysX implementation. Later in the project, I took over responsibility for Bullet. During this time I communicated closely with my peers to ensure their required features were prioritised, and that the physics simulation was stable and bug-free.
In some cases, certain features we aimed to implement in our engine had limited support by the physics library, in which case I created custom implementations for them.
At the end of the project, our physics system supported the following: Various colliders (primitives, convex/concave meshes, compounds), physics materials, callbacks, collision filtering, raycasting, and constraints.
Due to the licensing for PhysX 3.4, only the Bullet implementation is available on Github.