3D game/engine with networking.
Clip 4, Clip 3, Clip 2, Clip 1, Clip 0
The project started in C (C version before migration) and migrated to jai (jai version after migration) along the way.
git clone [email protected]:fda0/Treasure.git
git submodule update --init --recursive
Building the game, asset preprocessor and libraries (cgltf, SDL dlls).
jai compile.jai - build_all
Generating asset file (data.pie).
cd build
Baker.exe
Launching the game server & client.
cd build
Treasure.exe -server -headless
Treasure.exe
Things I found useful while working on this project.
The game uses the SAT algorithm for collision detection. Two resources I found especially useful when researching its implementation:
- Collision Detection with SAT (Math for Game Developers) by pikuma
- N Tutorial A – Collision Detection and Response
Gaffer on Games articles are great to get an overview of various networking topics.
I used the Handmade Math library as a reference for matrix and quaternion math implementations.
Resources on quaternions:
- Quaternions, Double-cover, and the Rest Pose Neighborhood (2006) by Casey Muratori + video
- Understanding Slerp, Then Not Using It by Jonathan Blow
- https://github.com/jkuhlmann/cgltf - small portable library that parses .gltf files and gives you structs and arrays of data.
- Skeletal animation in glTF - lisyarus blog - the best article on the topic of using animations from .gltf files that I found.
- Shadow maps, shadow volumes, deep shadow maps by Justin Solomon - MIT lecture - a good overview of different shadow rendering techniques.
- Shadow Mapping learnopengl.com - good step by step tutorial for getting shadow maps on the screen. Explains common issues.