🧟‍♂️ Software Engineering Postmortem: Zombie Rampage

Victoria - Oct 23 - - Dev Community
  • Project Overview
  • Project Name: Zombie Rampage
  • Project Date: 10/22/24
  • Project Duration: 2 weeks
  • Team Members: Victoria Uriostegui Jr

Zombie Rampage is a first-person shooter where players are tasked with completing quests that fall into three categories: Defend, Eliminate, and Search. Players must fend off waves of zombies, with mutations introduced as the game progresses. By accumulating in-game currency (EXP) from killing zombies, players can purchase perks to aid in their survival.

🗺 Initial Project Goals
The project followed an agile methodology, using a Kanban board in GitHub Projects to track progress. The goals were divided into loose tasks and user stories:

Loose Tasks:

  • Construct the main menu.
  • Create playtesting assets.

User Stories:

  • Player Safe Haven (spawn and rest area).
  • First-Person Shooter Experience.
  • Player Progression (ability to upgrade using in-game currency).
  • Replayability & Persistence (tracking player progress across sessions).

✅ How the Goals Were Met
All the loose tasks and user stories were completed except Replayability & Persistence, which couldn't be implemented within the project's time constraints. The agile methodology helped prioritize tasks, though the velocity and estimated time for each story could have been better managed.

Key tools and processes:

  • Agile milestone iterations for planning.
  • GitHub Projects for tracking milestones and user stories.

🎯 Key Achievements & Milestones
Several important milestones were accomplished throughout the development of Zombie Rampage:

  • First-Person Shooter Character: A blueprint for a first-person shooter character was implemented, including animations and field of view (FOV) setup.
  • Animation Blueprint: Created an animation blueprint with state machines for smooth FPS animation blending.
  • UActorComponents: Configured components like cameras to fit into the FPS skeletal structure, enhancing player immersion.
  • Skeletal Mesh Integration: All animations and skeletal meshes worked seamlessly with a unified skeleton.
  • Blueprint Scripting: Over 50+ UObject blueprints were created, including six for UI (UUserWidgets).
  • Data Table Population: Populated four data tables to organize in-game data for easy reference.
  • Questing System: Integrated the quest system for the three core quest types (Defend, Eliminate, Search).

😓 What Went Wrong
While there were many successes, some challenges arose during the project:

  • Agile Planning: The iteration planning didn’t account for velocity or accurate time estimates for each user story, leading to some goals being pushed beyond the deadline.
  • UI Design Flaws: The UI wasn’t optimized, resulting in redundant code that violated the DRY (Don’t Repeat Yourself) principle. This increased complexity and decreased efficiency.

🛠 Addressing the Challenges

  • Time Management: I accepted the limitations of the 2-week deadline and trimmed any uncompleted features, focusing on refining the core gameplay experience.
  • UI Code Optimization: To eliminate code redundancy, I used the map data structure to connect gun purchase buttons to the corresponding data in the Data Tables. This approach streamlined the UI code and reduced duplication.

🎓 Lessons Learned
This project provided many valuable lessons that I will take forward into future endeavors:

  • Animation Blueprints: I learned how to create complex animation blueprints with multiple state machines that can blend animations, especially useful for characters with intricate skeletons.
  • Data Table Management: I now have a solid grasp of how to organize game data within Data Tables, making my blueprint scripting more organized and maintainable.
  • Hit Detection: I implemented hit detection for a first-person shooter, and this experience will help when creating similar or more advanced systems like melee attacks or area-of-effect damage.

🔮 Applying These Lessons to Future Projects
The lessons I’ve learned from developing Zombie Rampage will be invaluable for future projects:

  • Complex Animations: In future projects, I’ll be better equipped to handle animation blueprints for characters with a high number of bones or complex movements.
  • Efficient Blueprint-Data Table Planning: I will plan blueprints and data tables together from the start, ensuring that they work harmoniously to avoid inefficiencies.
  • Advanced Hit Detection: I’m now ready to tackle more advanced hit detection mechanisms, including melee attacks and area-of-effect damage systems.

💬 Conclusion
Developing Zombie Rampage over the course of two weeks was both challenging and rewarding. Despite a few setbacks, the core goals were accomplished, and I gained invaluable experience with animation blueprints, data tables, and optimizing UI code. These lessons will shape my approach to future game development projects, ensuring that each iteration is more efficient and polished than the last.

. . . . . .
Terabox Video Player