For the first term at Level 6 of my Computer Games Programming (BSc) degree at University of Staffordshire, I had a Low-Level Platform Optimisation module where I was tasked with implementing custom memory management features and optimising a physics collision system. This was all coded in C++ and the framework provided utilised fixed-function OpenGL to render with freeglut as the windowing library.
The supplied framework had functional rendering and collision code and the task involved implementing these features:
- Debug only heap memory allocation tracking by overriding global new and delete.
- Walking-the-heap to detect buffer overflows.
- Memory pooling to optimise run-time allocation.
- In particular I implemented both static memory pools with free lists, and dynamic memory pools where allocated memory can span multiple contiguous memory blocks
- Spatial partitioning to optimise collision tests, in this assignment it took the form of octrees.
- The octrees were multi-threaded with a custom thread pool with mutexes and proper lock optimisations to speed up the collision testing.
- Performance profiling done through visual studio’s in built profiling tools and using chrono to measure overall frame performance.
Should I take this project further in the future, more collision optimisations and a variety of spatial partitioning techniques could be tested as research done throughout found potentially more suitable methods.
Group Part
Also in the same module there was a team task where, in a team of 3 people, we had to port the PC framework over to the PS4. This was implemented well with good structured teamwork aided by a Trello board. A foundation in working on platform specific code was built and have been noted as a skill to improve further in the future.