Since i’m using fixed point math (Q20.12) in physics engine i had some issues with keeping all the calculations in the range −524288 to 524798.999. This range seems like a lot, but belive me, it’t not…
The solution for the limited range in the physics engine is to introduce world streaming tech. World is divided into chunks, each chunk has it’s own physics system and keeps all the positions relative to that chunk. Bodies can collide inside of the same chunk along with the chunks that are adjacent to that chunk. While comparing/colliding bodies that are in two separate, but adjacent chunks you just shift them to the same origin and BOOM – NO MORE MULTIPLICATION OVERFLOWS!
Similar solution is used with floats due to limited precision far from the origin. You can read more about this issue in paper called Using a Floating Origin to Improve Fidelity and Performance of
Large, Distributed Virtual Worlds by Chris Thorne.
I have been fascinated by the old school id tech engines (DooM, Quake 1) and always wanted to make something similar in spirit for that age. Even i didn’t know anything about 3d graphics at that time i sat down 3 years ago (yeah, shit takes time) and started crafting my doom-quake love hybrid.
I wondered how would tech between DooM and Quake 1 looked like? Something like a mixture of low screen resolution (fuck yeah chunky pixels!), limited color palette, sector based levels (much more advanced system compared to DooM), billboard sprites mixed with 3d models? I guess that’s my general guideline.
O yeah, also decided to throw in physics engine and some other goodies never seen in these two games, just to add more flavor.
not sure yet how it’s gonna workout, but i’m having fun coding this bad boy. That’s all that matters in the end, right?
- basic cross-platform framework
- fixed point math library
- terrain rendering
- sector based level structure with portal rendering
- level editor
- physics engine (soft and rigid bodies)
- entity component system (scriptable)
- steering behaviors
- vehicle physics (in progress)
- procedural locomotion/animation system(in progress)