top of page

Macrae Smith

Introduction

Burn rubber across futuristic cityscapes on twisting gravity defying tracks with customizable karts in this competitive arcade racer!

Duration: February 2025 - May 2025
Technologies: Unreal Engine
Team Size: 54 (14 programmers)
Role: Tools and Gameplay Programmer

Responsibilities

  • Developed 3D dynamic camera system

  • Integrated VFX with gameplay logic

  • Managed game performance profiling and optimization

  • Facilitated source control and Steam integration

  • Managed asset integration with artists and designers

3D Camera

In most games, the camera is the primary lens through which the player experiences everything. A well-designed camera quietly reinforces the game’s core pillars. In HardDriverz, a fast-paced arcade racer, that meant amplifying speed and maintaining clarity through extreme track geometry.


Speed and Acceleration
One of our core pillars was speed and adrenaline. I tied the camera’s follow behavior directly to the kart’s acceleration. As velocity increased, the camera introduced additional positional lag, increasing visual distance and exaggerating the sense of speed. Boosts and acceleration spikes dynamically influenced this offset, making momentum feel more intense without altering actual gameplay physics.


Corkscrews and Multi-Directional Gravity
Our tracks featured corkscrews, loops, and shifting gravity vectors. The camera needed to highlight these transitions without causing motion sickness. I used easing curves and spherical interpolation to smoothly blend the camera’s orientation toward the kart’s rotation over time. This allowed the camera to lag slightly behind rapid orientation changes, emphasizing track shape while maintaining visual stability.


Loop Handling and Gimbal Lock
Full vertical loops introduced edge cases with Euler angle thresholds, leading to abrupt rotational flips. To resolve this, I added specialized easing logic during loop detection that tightened the camera’s rotational alignment to the player, preventing discontinuities and eliminating gimbal-related snapping.


Track Visibility and Framing
During vertical climbs, it was easy for the track to disappear from view. I dynamically adjusted camera pitch and offset during loops to preserve forward visibility, while performing collision checks to prevent clipping against track geometry.

The result was a camera system that reinforced speed and scale while remaining stable, readable, and comfortable at high velocity.

VFX

In addition to the camera system, I implemented a large portion of the game’s VFX pipeline. Working closely with our artists, I helped author effects and integrate them directly into gameplay systems.


I connected VFX triggers to in-game events such as drifting, collisions, pickups, and speed boosts, ensuring effects responded dynamically to player state rather than playing as static animations. This allowed visual feedback to reinforce gameplay mechanics and improve moment-to-moment clarity.

Integration and Tools

One of my largest contributions to this project was managing system integration and the technical infrastructure that kept production moving.

As new systems were added, I became the primary point of contact for compatibility testing, asset integration, and connecting gameplay logic to designer-built levels. I regularly worked between disciplines, ensuring features built by one team integrated cleanly with the workflows of another.


With artists, designers, and programmers all building in parallel, many of the hardest problems lived at the boundaries between systems. I focused on identifying integration risks early, testing compatibility across features, and resolving conflicts before they slowed production. This required a strong understanding of how each system interacted, not just how it functioned in isolation.


On the engineering side, I took ownership of performance profiling and optimization. This required deep familiarity with nearly every major system in the game. I worked closely with each programmer to diagnose bottlenecks, resolve cross-system conflicts, and ensure features cooperated rather than competed.


I also helped manage our Steam release pipeline, including SteamWorks API integration, milestone builds, and our automated build machine. When issues surfaced, I was often among the first to investigate and resolve them, allowing the rest of the team to stay focused on content creation.

Our team was ethnically diverse, with members bringing different cultural backgrounds, communication styles, and expectations around collaboration. Working in that environment taught me to be intentional and adaptable in how I communicated technical ideas.


I learned to adjust how I presented information depending on context, whether that meant being more direct and structured in some conversations, or more iterative and discussion-based in others. I made a point to clarify assumptions, confirm shared understanding, and document decisions clearly to avoid misalignment.

bottom of page