Roles & Responsibilities
As the AI/NPC and Weapons Programmer for Gravebound, I headed the development of the entire AI enemy system that powers the game's encounters. My primary focus was architecting a flexible enemy framework using C++/Blueprint Enemy Classes, Data Assets, Behavior Trees, and Animation Blueprints. This system serves as the foundation for all enemies in the game, including base enemies and their multiple variations.
In addition to the enemies, I collaborated with the lead programmer to implement a unique weapons system with numerous upgrades to enhance each weapons' performance. Like the enemies, this system used data assets and multiple interfaces for compatibility across many damageable objects.
The programming team and I managed the Perforce P4V version control server, assisting and ensuring every department could use it without a problem. I also helped set standards across all teams, creating comprehensive technical documentation and a standardized asset naming scheme emphasizing organization, ease of use, and maintainability.
Enemies
The enemy class I developed encompasses four distinct enemy archetypes, each with three specialized variations and a unique boss variant, totaling 16 enemy types. The architecture emphasizes performance optimization through strategic use of inheritance and interfaces, minimizing tick operations through event-driven programming. They are also affected by debuffs handled by a separate component attached to the enemies. Each enemy type features:
- dozens of adjustable fields for stats & visuals through data assets
- Performance-optimized state management system
- debugging tools for designers
- Animation states driven by animation blueprints, ensuring animations blend properly
The enemy system prioritizes maintainability through extensive documentation and clear separation of concerns. Debug visualization tools allow designers to fine-tune crucial parameters such as weak points, explosion radii, and healing radii directly in the editor without adding/removing code.
Designer Tools & Accessibility
The systems I designed all had the designers and other departments in mind. I exposed as many fields and variables as possible within Data Assets so that designers and other developers could easily tweak, adjust, and replace the information in any field they wanted. I worked directly with the systems/level designers, surfacing/VFX artists, and audio producers and made sure it was as easy as possible for them to change things without delving into the code at all.
Learnings
Although this is a year-long project and my team and I have much more work to do, I have gained extensive experience working in a professional game development environment. I have learned how to communicate effectively with my team and every other department to do our work as efficiently as possible. I have also learned how crucial good documentation and developer-accessible systems are.
Development Timeline
September 3: Development Started
November 19: Alpha Build Completed
Early April: Beta Build Complete
Late May: Full Game Release