
Jesper Elmtoft
Engine & Tools programmer student


Acting as both Scrum Master and Lead Programmer for the 4-man code team, I created a robust C++ GameFlow Subsystem using a Finite State Machine. This project highlights my ability to bridge complex backend architecture with designer-friendly Blueprint tools while managing technical standards and debt for a 9-person multi-disciplinary group.
Challenges:
-
Implementing a global game state manager (Main Menu, Game-play, Pause, Game Over) that is decoupled from individual levels and easily accessible by designers.
-
Developing a data-driven event system for "paranormal hauntings" that allows for unique house behaviors using complex structs and enums.
Actions:
-
Created a C++ Game Instance Subsystem utilizing a Finite State Machine (FSM) pattern with strict transition rules to ensure state safety.
-
Created a base State class derived from UObject to allow for modular, expendable game logic.
-
Bridged the C++ back-end with Blueprint-accessible functions, enabling designers to trigger state changes and check game status without code changes.
Results:
-
Achieved a clean, centralized system for UI management, ambience transitions, and level loading.
-
Reduced iteration time for designers by providing an intuitive, "black-box" subsystem for game flow control.
-
Engine Architecture:
-
Developed a persistent Game-Flow-Subsystem in C++ for global state management.
Lead Programmer:
-
Managed technical debt, conducted code reviews, and unblocked the team by providing Perforce and Visual Studio IT support.
Scrum Master:
-
Established Jira ticketing standards and led 4-week sprint planning sessions to maintain team velocity.
Systems Design:
-
Created an Actor-based event system using custom structs to drive varied paranormal interactions in-game.
-
Balancing Roles:
-
This project taught me the complexity of dual-hatting as a Lead Programmer and Scrum Master. While I successfully implemented the core systems, I learned that dedicated technical leadership requires a fine balance between administrative Jira management and "hands-on" coding time.
Technical Growth:
-
I gained significant experience in bridging C++ logic with Blueprint components, specifically in handing references within custom actor classes to create flexible, data-driven game-play systems.
Team Collaboration:
-
Navigating the challenges of a 10-person team underscored the importance of clear version control (Perforce) protocols and consistent communication to avoid integration bottlenecks.
-
-
Modular State Logic: Implemented an abstract UFSM_GameFlow_Base class using BlueprintNativeEvent, allowing core logic to stay in C++ while giving designers the flexibility to extend functionality via Blueprints.
-
Persistent Subsystem: Leveraged the UGameInstanceSubsystem to ensure the state machine persists through level transitions and remains globally accessible.
-
State-Driven Automation: Automated critical tasks during state transitions, such as asynchronous level loading, UI widget management, and audio ambience switching through centralized events.
-
Defensive State Transitions: Engineered a transition validation system that enforces strict rules on state changes, preventing logical errors and ensuring system stability.
-
Developed a data-driven Paranormal Event System in C++ that utilized custom structs and enums to allow designers to author complex haunting sequences without further code intervention








