top of page
NeilaPoster_1440.png
SkN+ot.jpg
 
Roles:

Systems & UI Programmer

Duration:
Link to Project

8 Weeks

Team Size:

19 People


Tools Used
Grå texturbakgrund
ISO_C++_Logo.svg.png
hd-unreal-engine-white-logo-icon-png-7017516949697958pnkct2kiz.png
JetBrains_Rider_Icon.svg.png
image.png
png-transparent-jira-hd-logo-thumbnail_edited.png
image.png
cartoon-face-discord-logo-0ttqD7nB_t_edited.png

Serving as a Systems & UI Programmer within a 4-man team of programmers in a 19-person multi disciplinary team, this project was a 'trial by fire' transition into Unreal Engine 5. I learned C++ on the fly to build asynchronous level streaming and save subsystems, showcasing my ability to rapidly adapt to new engine frameworks and implement high-performance, background-threaded systems.

  • Challenges:

    • Implementing a persistent game state and save system while learning Unreal Engine C++ and its framework from scratch under tight deadlines.

    • Managing large-scale level loading and NavMesh initialization without causing a significant frame-rate drops or "lag spikes" for the player.​

    • Developing an asynchronous save/load architecture to prevent blocking the main game thread during data-heavy operations.

    Actions:

    • Created a C++ State Machine interface with Game Instance Subsystems to broadcast global events (respawns, UI updates and level transitions).​

    • Created an Asynchronous Save System using a naming convention tied to timestamps (eg., "Autosave - Date") to prevent accidental file overwriting.​

    • Integrated Asynchronous Level Streaming with a custom loading screen to ensure all assets and navigation data were fully initialized before gameplay began.

    Results:

    • Delivered a robust backbone system that successfully managed the transition from Main Menu to gameplay and handled player respawns to the latest checkpoint.​

    • Provided a polished user experience with comprehensive Graphics & Audio settings (VSync, Resolution, Global Illumination) allowing for hardware-specific optimization.

  • Systems Programming:

    • Authored the core C++ State Machine and Game Instance Subsystem for persistent data management.

    UI & UX Logic:

    • Implemented the functionality for the Main Menu, Game Over screens, and detailed Settings pages entirely in C++.

     

    Asynchronous Workflows:

    • Developed the level streaming and save/load logic to ensure smooth, uninterrupted performance.

     

    Cross-Discipline Support:

    • Collaborated with designers to determine which features should remain in C++ versus being exposed to Blueprints for iteration.

  • The Learning Curve:

    • This project was a "trial by fire" in Unreal C++. I learned that building systems while learning the language leads to "technical debt", which I had to balance by refactoring core systems throughout the project.

     

    Version Control & Methodology:

    • Experiencing the "good and bad" of Perforce and Jira taught me that detailed commit messages and logged tasks are as critical as the code itself for team stability.

     

    Optimization First:

    • Encountering flaws in my Initial State Machine taught me to build "robust and consistent" systems from the start, rather than trying to patch new features onto a shaky foundation.

      • ChangeStateSubsystem: Implemented a centralized state machine to manage game-wide transitions (Menu, Gameplay, Loading) using Dynamic Delegates.

      • SaveGameInstanceSubsystem: Developed an asynchronous serialization system to handle player data persistence without blocking the game thread.

      • GameFlowWorldSubsystem: Orchestrated the initialization sequence for manager classes (HUD, GameMode, GameState) to ensure reliable system startup in a multi-level streaming environment.

      Loading Latest Save File
      Load Saved Game - Made with Clipchamp.gif
      Automated Save Files
      Save Files_edited.jpg
    • Global Event Service: Decoupled System Communication to ensure scalability across a large development team, I implemented a Singleton-style Event Manager using Unreal Engine World Subsystems.

      • Decoupled Architecture: Utilized Dynamic Multicast Delegates to allow disparate systems (UI, AI, Gameplay) to communicate without hard-coding dependencies.

      • Centralized UI Events: Created UHUDEventsWorldSubsystem to handle complex UI-to-Logic flows, such as asynchronous save/load requests and real-time stat updates (Health/Stamina).

      • World-State Monitoring: Developed UWorldEventsSubsystem to broadcast critical game-state changes, including player death, checkpoint triggers, and level streaming requests.

      • Performance-First Design: Leveraged TSoftObjectPtr for level loading events to avoid memory overhead and ensure smooth transitions.

bottom of page