Simple 2D Game Engine (2017)
Source
Thread-safe Memory Management System:
- Provides a variable size allocator with byte alignment & defragmentation
- Provides a fixed size allocator for quick allocations with low overhead
- Provides overwrite detection by guardbanding memory for debug builds
- Provides a smart pointer suite, complete with implementation for shared, weak & unique pointers
- Provides usage statistics with respect to count and size of incoming allocations
Multi-threaded Job System:
- Provides multiple job queues, each with multiple workers
- Each worker contains an std::thread and waits for jobs to be posted in the corresponding queue
- Any kind and amount of jobs can be added to the job system.
Timer and Time-based Events:
- An updater that manages broadcasting the tick to all entities that need it
- The updater also maintains a list of timer events and broadcasts them
- A timer event contains a function object. It invokes this function object after a specified duration either once, multiple times or till it is destroyed
2D Collision System:
- Provides 2D collision detection using a swept separating axis collision test
- Provides classification of physics objects and collision filtering using bit masks
- Provides default collision response using reflection
- Provides callbacks on collision detection
Miscellaneous:
- A logging and asserting utility
- A pooled and hashed strings utility for efficient handling of strings
- A primer for a game object with corresponding geometry & *very* simple physics
- A set of optimized geometry classes using Intel SSE instructions
- A lua-parser for data driven development
- A thread-safe file caching utility
Thread-safe Memory Management System:
- Provides a variable size allocator with byte alignment & defragmentation
- Provides a fixed size allocator for quick allocations with low overhead
- Provides overwrite detection by guardbanding memory for debug builds
- Provides a smart pointer suite, complete with implementation for shared, weak & unique pointers
- Provides usage statistics with respect to count and size of incoming allocations
Multi-threaded Job System:
- Provides multiple job queues, each with multiple workers
- Each worker contains an std::thread and waits for jobs to be posted in the corresponding queue
- Any kind and amount of jobs can be added to the job system.
Timer and Time-based Events:
- An updater that manages broadcasting the tick to all entities that need it
- The updater also maintains a list of timer events and broadcasts them
- A timer event contains a function object. It invokes this function object after a specified duration either once, multiple times or till it is destroyed
2D Collision System:
- Provides 2D collision detection using a swept separating axis collision test
- Provides classification of physics objects and collision filtering using bit masks
- Provides default collision response using reflection
- Provides callbacks on collision detection
Miscellaneous:
- A logging and asserting utility
- A pooled and hashed strings utility for efficient handling of strings
- A primer for a game object with corresponding geometry & *very* simple physics
- A set of optimized geometry classes using Intel SSE instructions
- A lua-parser for data driven development
- A thread-safe file caching utility