DEV Community

Victoria
Victoria

Posted on

๐ŸŽฎ Software Engineering Postmortem: Project Shooter

  1. Project Overview

Project Shooter is a first-person shooter (FPS) game created as an extension of the First Person Template in Unreal Engine 5 (UE5). Built entirely using Blueprints Visual Scripting, the project delivers an immersive FPS experience where players engage in endless rounds of combat. As players progress, the difficulty increases with each level, challenging them to eliminate more enemies. The goal of the project was to enhance the player experience by introducing new gameplay mechanics and improving the core functionality of UE5's template through the integration of a custom tutorial system and various user interface (UI) elements.

  1. Initial Project Goals

The project was heavily inspired by the lessons learned from a technical guide, and the primary goal was to build upon the foundational material provided in the book. The main objectives of Project Shooter were:

  • Create an engaging tutorial that guides new players through the original mechanics of the First Person Template, while also introducing new features.

  • Develop a custom HUD (Heads-Up Display) to track important in-game information such as health, ammo, and progress, binding variables to update dynamically.

  • Enhance level design by incrementally increasing difficulty, ensuring players face a progressively harder set of enemies with each round.

  1. How Goals Were Met

The initial project goals were achieved through:

  • Blueprint Programming: Leveraging UE5โ€™s Blueprints system, I extended the game by adding a fully functional tutorial. I used the level blueprint to control the flow of the game and duplicated UI widgets to display tutorial messages dynamically during gameplay.

  • HUD Development: Binding variables in the HUD allowed for real-time updates of player statistics, which significantly improved the user experience by offering clear and timely information on the game state.

  1. What Went Well

One of the key successes of the project was the integration of the tutorial system. I was able to identify and resolve input-related bugs caused by incorrectly used blueprint nodes. By troubleshooting and refining the tutorial, I ensured smooth user interaction and a more polished player onboarding experience.

Additionally, the HUD implementation was a success, as it allowed players to easily track important stats like health and ammo, providing an intuitive interface for in-game information.

  1. What Went Wrong

However, not everything went according to plan. There were two notable challenges:

  • User Input Bugs: After some tutorial messages failed to display correctly, user input was disabled unexpectedly. This was due to conflicting input modes between the game UI and player controls.

  • Level Design Flaws: Certain aspects of the level design did not perform as expected. For instance, targets that were not meant to be shot at were accidentally included in the shooting range, which disrupted the intended game flow.

  1. How Challenges Were Addressed

To tackle these challenges:

  • I utilized ChatGPT to analyze and troubleshoot the user input issue. The problem was traced back to the input mode being set to "UI Only" during the tutorial, which conflicted with the game's InputAction states. After diagnosing the issue, I was able to switch the input mode back to "Game and UI," resolving the bug and restoring player controls.

  • Regarding level design, I revisited and restructured the environment, ensuring that only the appropriate targets were interactive during combat sequences. This adjustment enhanced the overall player experience and restored the intended gameplay dynamics.

  1. Lessons Learned

During the development of Project Shooter, I learned several important technical skills that will benefit future projects:

  • Macro Functions in Blueprints: I discovered the importance of using macro functions to encapsulate specific code within individual blueprints. This approach adheres to the Single Responsibility Principle by ensuring each blueprint only handles its relevant tasks. This makes the project more modular and maintainable, which is crucial in professional game development.

  • SaveGame Class: The SaveGame class in Unreal Engine became a pivotal part of data persistence. By implementing the SaveGame functionality, I ensured that player progress, such as completed levels and earned upgrades, could be saved and retrieved across different gaming sessions. This is critical for maintaining player progression and enhancing replayability.

  • Artificial Intelligence (AI) Implementation: Although AI wasnโ€™t a primary focus of this project, I began exploring UE5โ€™s AI system, including behavior trees and AI controllers. Mastering AI in Unreal Engine will be essential for creating dynamic enemy behavior and interactive NPCs in future projects, allowing for more engaging gameplay.

  1. Future Recommendations

Looking forward, I recommend continuing to use Kanban boards and Agile iteration planning for organizing tasks and tracking progress. Even though Project Shooter was built on top of lessons from a technical guide, following Agile methodologies ensures structured development and the ability to quickly adapt to changing priorities or challenges.

  1. Conclusion

In conclusion, Project Shooter is a successful extension of Unreal Engine 5โ€™s First Person Template. The project was guided by lessons from a technical guide, and I was able to implement key features such as a custom tutorial system, level design progression, and player stat tracking through a custom HUD. Additionally, I resolved challenges related to user input and level design with the help of debugging tools and problem-solving approaches.

The experience gained from building Project Shooter has deepened my understanding of Blueprints Visual Scripting, UI implementation, and game state persistence using the SaveGame class. These skills will be invaluable in future game development projects as I continue to refine my technical expertise and broaden my knowledge of Unreal Engine.

Top comments (0)