Replace Raw Pointers with Smart Pointers in a Game-Engine Module
Overview
What this challenge is about.
Audit the 18k-line module for raw-pointer ownership patterns (owning, borrowing, shared). Refactor in 4 phases: (1) introduce unique_ptr for clearly-owning sites, (2) shared_ptr where reference-counting is justified, (3) replace owning raw pointers in containers, (4) document remaining intentional raw-pointer borrows. Add clang-tidy + cppcheck in CI with the cppcoreguidelines + modernize checks. Run a 4-hour playtest before/after, measuring leaked allocations (via heaptrack) and binary size. Deliver: refactor in 8-12 PRs, CI config, before/after report (6 pages), and a 1-page memo on which raw pointers should stay raw and why.
The Brief
What you'll do, and what you'll demonstrate.
Refactor an 18k-line C++ ECS module from raw pointers to C++17 smart pointers in 4 phases without breaking the 4 shipping games it powers.
Earning criteria — what you'll demonstrate
- Distinguish owning, borrowing, and shared pointer semantics in real C++ code
- Refactor C++ codebases incrementally without breaking shipping consumers
- Configure clang-tidy and cppcheck for ongoing memory-safety enforcement
- Measure refactor impact honestly (leaks, binary size, build time)
Program Fit
Where this fits in your program.
Sharpens the same skills your degree expects you to demonstrate.
Skills
Skills you'll demonstrate.
Each one shows up on your verified credential.
Careers
Roles this prepares you for.
Real titles. Real skill bridges. Pick the one closest to your trajectory.
Career mappings coming soon.