A physics based game where you play as a duck destroying various ceramic items. It is intended mainly as a tech demo for my OpenGL renderer, which most of the development time was spent on.
This should work on Linux. You will most likely also have to install some additional dependencies if you get linking errors (e.g. on fedora: sudo dnf install mesa-libGLU-devel alsa-lib-devel).
Building:
git clone https://github.com/snej55/mix_simulator.git
cd mix_simulator
# build it
cmake -S . -B build
cmake --build build/ -j$(nproc)
# to run
./build/mainbrew install zibuyin/duckbowling/duckbowling
duckbowling- Physically based rendering
- IBL (Image Based Lighting)
- Skeletal animation
- GLTF Model loading
- Hybrid renderer (deferred shading / forward rendering)
- HDR (ACES & Khronos PBR Neutral)
- Bloom (PBR)
- SSAO (Screen Space Ambient Occlusion)
- Anti-aliasing (FXAA)
- JSON Scene loading
- Frustum Culling (AABB bounding volumes)
- Freetype2 font rendering
- Physics engine (Jolt)
- Spatial audio (SoLoud)
- Cascading Shadow Maps
- Flow field pathfinding (static quadtree generation)
- ambientcg.com (PBR materials)
- polyhaven.com (HDRI maps)
- Free sfx: kenny.nl, mixkit.co
- cmftStudio: (IBL irradiance maps)
- GLFW (windowing library)
- GLAD (OpenGL bindings)
- GLM (Matrix operations)
- JoltPhysics (Physics engine)
- SoLoud (Spatial audio)
- Assimp (Model loading)
- STB_Image (Texture loading)
- Freetype2 (TTF font rendering)
- nlohmann json (JSON loading)
- mikktspace.h (calculate TBN matrix tangents)
- @zibuyin (MacOS build)
Details
- Finish IBL
- Skeletal animation
- PBR Textures
- PBR Material loading
- Deferred rendering
- Mesh sorting (render opaque meshes deferred and transparent/translucent using forward)
- Duplicate material checks? Batch render meshes using material index vertex data?
- Animate transparent meshes
- Fog
- Implement static entities
- Fix transparent mesh culling
- SSAO
- Add FXAA anti-aliasing
- Global materials
- JSON Scene loading
- Frustum culling
- Space partitioning
- Bounding volume generation
- Main game class
- Level editor
- Add lights to level editor
- Rag dolls?
- Fix arena deletion order (child -> parent -> root)
- Add Jolt Physics
- Point lights
- Add shader compilation test
- Add lens dirt
- Find lens dirt texture
- Area lights
- Optimize static shader uniforms
- Add player character + controls/kinematic body
- Create player models
- Implement freetype2 font rendering
- Screen coordinates shape rendering
- Add UI framebuffer
- Add cascading shadow maps
- Smooth cascade transition
- Add credits
- Make camera follow player
- Add alpha to shape rendering
- Add settings
- Add in game font
- Find new HDRI
- Make some music
- Add physics sfx using jolt contact listeners
- Add sliding sfx
- Add different sfx for different materials
- Generate flow field quadtree
- Paralax mapping with tesselation shader?
- Quad tree generation
- Flow field pathfinding
- Make some models
- Generate shards in blender
- Preload jolt convex hulls
- Shatter logic
- Test shadows with complex shapes
- Flow field generation
- Clean up data folder
- Convex hull preloading (export jolt bodies as binaries)
- Particle vfx
- Load all assets at the start
- Fix sounds
- Fix pathfinding when player is same tile
- Different screen resolutions
- Screenshake
- Variance shadow mapping?
- Add settings page to menu
- Score
- Spikes?
- Star particles?
- Dash
- Collision particles
- Shockwave postprocessing
- Perlin noise fog?
- Make camera scroll change focal length
- Multithreaded assets loading (partially)
- Cloudy skybox
- Different fog intensities
- Add invisible walls around whole thing
- Try some cool post processing fx (cross stitching?)
- Duck puns on first menu
- Level transitions
- Add tonemapping options to settings
- Lens dirt!
- Create decor
- Maze generation?
- Walls around level
- New HDRI
- Limit player flying
- Find rubber duck model
- Particles
- Mug
- Bud vase
- Pot
- Cider jug (remake)
- Wrecking ball
- Pestle
- Anaphora
- Ewer
- Player character (rubber duck)
- Add all the shards
- Polish shadows
- Fix camera jitter when falling
- Fix minimizing bug on Windows
- Fix mouse position scaling with menu button on Windows
- Fix MacOS build
- Centre models around WS origin
- Compile release version
- Test linux build
- Fix window title




