
Jesper Elmtoft
Engine & Tools programmer student


As Lead Programmer for the programming department within a 16-person project, I pivoted the project from Rigidbody physics to a custom-tuned Character Controller to solve complex 3D orbital camera interactions. This project demonstrates my proficiency in C# systems architecture, polymorphism, and the implementation of decoupled event service for optimizing CPU overhead by ensuring systems only update when specific game state changes occur.

Challenges:
-
Developing a stable 3D player movement system that avoid "slingshot" physics bugs when combining Rigidbody components with a 360-degree rotating camera.
-
Creating a flexible Player State Machine that maintains consistent input directions (eg., "Right" is always "Right") regardless of the camera's orbital angle.
-
Implementing a decoupled event system to manage complex interactions in a large 15-person team without relying on fragile Inspector references.
Actions:
-
Pivoted from Rigidbody physics to the Unity Character Controller component, learning its API to implement custom ground checks and collision logic.
-
Build a Player state Machine utilizing Polymorphism, protected read-only fields, and sealed classes for high encapsulation and code safety.
-
Developed a Custom Event Service using delegates with varying parameter counts (0, 1 and 2) to facilitate clean, subscription-based communication between scripts.
-
Implemented Unity's New Input System from scratch to support seamless controller and keyboard switching.
Results:
-
Delivered a polished, responsive 3D character controller that handled 460-degree camera rotation without movement drift.
-
Created a robust, bug-resistant codebase that allowed 15 team members to work simultaneously without losing scene references in Perforce.
-
Standardized the project's technical architecture through strict naming conventions and centralized even handling.
-
Lead Programmer:
-
Oversaw a team of programmers, established naming conventions, and helped manage the Unity versioning/Perforce workflow.
Advanced Player Logic:
-
Authored the Player Controller, Orbital Camera system, and a ScriptableObject-based Player Stats system for easy designer balancing.
Systems Architecture:
-
Implemented a Custom Event Service to reduce code coupling and improve project stability during Perforce merges.
Optimization & UI:
-
Developed a Graphics Settings menu featuring Nvidia DLSS, Anti-aliasing, and texture quality controls to improve performance on varying hardware.
Tooling for Designers:
-
Integrated the Input System and serialized variables with [Range] sliders to allow designers to tune the player "feel" in real-time.
-
Technical Adaptability:
-
This project forced me to step out of my comfort zone with Rigidbody physics and learning the Character Controller API and Quaternion/Vector3 math. Spending 9 days on camera-relative movement was a massive learning curve that solidified my 3D math skills.
Architecture vs. Administration:
-
As Lead Programmer, I balanced high-level system design with the administrative task of unblocking other disciplines. I learned that clear documentation (like summary comments in code) is vital for team-wide systems.
Optimization Mindset:
-
Implementing DLSS and graphics settings late in the project showed me that optimization logic should be considered from day one, rather than as a final "add-on" feature.
Encapsulation:
-
By using sealed classes and read-only fields in my State Machine, I learned how to "defend" my code against unintended modifications by other programmers.
-
Player Camera

Player Controller

Player Stats Scriptable-Object
Event Service
Video Settings









