A handmade, cross-platform, minimalistic game engine for experiments using C++, SDL3, OpenGL, and Bullet Physics.
- Hybrid Actor/Entity Component System
- Iterate over system components horizontally or per actor vertically.
- Mesh Component Auto-Instancing
- Duplicated meshes are collected into an attribute buffer and drawn with a single instanced call.
- Bullet Physics BVH and Raycasting
- Utilize Bullet Physics with Bounding Volume Hierarchy (BVH) and efficient raycasting.
- Mesh Collision Auto-Generation
- Generate collisions for any imported 3D mesh (GLTF, FBX, OBJ, etc.).
- Debug Tools
- Integrated ImGUI interfaces for debugging.
- Declarative Level Design
- Define levels using JSON (e.g.,
Array<{ ...Actor, components: Array<Component> }>
).
- Define levels using JSON (e.g.,
- Player Movement Physics
- Health and Gun/Projectile Components
DescentLike is a prototype inspired by the feel of Descent (1994)—a gravity-free, orientation-challenging shooter with drone-like movement.
WASD
- MoveQE
- Up/DownMouse
- Look AroundShift + MouseX
- RollSpace
- ShootTab
- Boost MovementH
- Toggle Debug Menu
- Windows: VCPKG
- Run
vcpkg integrate install
and thenvcpkg install
in the project folder.
- Run
- MacOS: Homebrew
- Run
brew install bullet assimp
.
- Run
- CMake
- VS Code (optional)
cd build
cmake ..
./bin/iam-engine