About the Tech
I have developped my own engine for the needs of Ancestral Players. The main reason for this choice is because that is what I like to do :). Here is a list of features, I won’t go into great details at the moment.
Update: Screenshots are completely outdated, this post is intended for curious devs.
Chapters
Core

- Prebuild pass for type information generation (reflection)
- Automatic UI (using reflection)
- Automatic serialisation (with backward compatibility, except rare edge cases)
- Audio (fmod), maths (glm), engine gui (dear imgui)
- No stl, many kinds of array, allocators
- Integrated profiler (always on)
- Logs, asserts, callstack trace, crash logs, crash reporter
- Data: bin/txt, packing/encryption, export only used data.
Graphics

- DX11 Forward renderer (with depth prepass), anti-alias: MSAA only
- Shader hot reload, shader compile cache, shader JIT compile (optionnal)
- Async texture loading
- Skinning, Instancing, Morphing
- Skeletal animations (with merging/blending)
- PBR, Bloom, Gaussian blur, Tonemapping, Skybox, Fog, Outlines
- Cascaded shadow maps
- Global Illumination : lightmaps + regular probe grid (baked in engine, software gpu bvh, + oidn denoiser)
- Pathtracer (partial implementation)
- Character accessories, cloths colorisation, eye expressions

- Terrain material blending, triplanar projection
- Water (reflections disabled in practice)
- Day/Night moods
- Lava
- Gpu particle system
- Metaballs (real time marching cubes)
- World persistent paint map
- First person viewpoint render mode
- Mirrors, portals (not used in game)
Simulation

- Collison broadphase: bvh & box prunning
- Collison narrow phase: most shapes are supported, code ripped from physx/bullet
- Solver: homemade impulse based iterative solver
- Dynamic objects
- Weapons & bullets (projectile / melee / hitscan)
- Characters
- Powers
- Skill tree, leveling system.
- Lava/water
- Multiple game modes
- Team or FFA
- Immediate mode debug draw
- Path finding (using recast/detour lib)
Netcode
- Deterministic 100 tick/sec simulation (server: linux&gcc / client: windows&msvc)
- Authoritative server, initial state replication then input-only synchronisation. (devil in the details)
- Udp only
- Client side prediction
- Lag compensation (100 ms for everyone)
- Game replays available (init state + inputs)
Note: I spent time making tools to easily detect desynchronisation issues.
Backend Infrastructure (WIP)
- master server
- dedicated servers: one ‘server_manager’ per machine, spawning game servers
- server browser
- private server (with join codes) (one instance per client max)
- P2P with Steam Relay Network
- Tournament servers that spawn subservers, handle tournament progression (players auto dispatch/elimination)
- Simple load balancing
- steam account authentication
- I can run a local backend infra in the developer build to check everything is fine in one exe. (easier debuging)
- It works also in LAN so I can organize automated tournaments in LAN wich is handy.
Must have / Misc
- Split Screen support
- Lobby
- Score table, notifications feed
- Chat
- Remappable controls
- Xbox gamepad support
- Localisation (parse source code & data to extract english version)
- object icon / map thumbnail automatic generation
- Asset importer (using assimp)
- Bots
- Map editor
- Spectator mode
- Bug reporter
- Replays + (replay editor WIP)
- Video shooter (ffmpeg)
User interface
Here is a collection of (outdated) interfaces I made for my game. Just to remind other fellow devs that UI can be a lot of unanticipated work. Some menus UI still uses imgui (options), all ingame UI are homemade.

Futur work
todo: ship the game.
Thank you for reading!