Game Engines Project - Prime Engine Modifications
As part of USC’s Game Engines course, I worked extensively in C++ on a custom engine called Prime Engine (developed by Artem Kovalovs of Naughty Dog during his undergrad). The course placed us directly into a large, undocumented codebase where we were challenged to extend and modify the engine itself. Early assignments focused on core engine systems such as physics, bounding volumes, culling, animations, and animation blending, which gave me a strong foundation in how engines handle these features. For the final three milestones, we had the freedom to choose which systems to build and how to approach them. I chose to focus heavily on networking.
My Role: Engine Programmer (C++)
Implemented networking features, transitioning from TCP to UDP for efficiency and handling out-of-order and lost packets.
Built a server spectator camera that could switch between free-cam and following client tanks, complete with camera cycling and state restoration.
Added debug tools including IP/port display and clearer client/server state differentiation.
Improved server management by ensuring only one server instance could run while others defaulted to client mode.
Challenges and Takeaways
Gained experience working in a low-level custom C++ engine, without the support of extensive documentation.
Learned how to quickly adapt to a complex codebase, trace logic across multiple systems, and debug with limited tooling.
Strengthened skills in network programming, physics, and engine architecture, while also practicing how to make design decisions about which features to pursue and how to implement them.
Networking Milestone Videos
Here are three milestone demos that showcase the networking features and engine modifications I implemented in Prime Engine. Each video highlights the progression of my work, from handling packet loss to adding a spectator camera and debug tools. All of the videos are narrated by me, where I explain the systems and walk through the features I built.