Back to all projects

Gameplay Programmer & Level Designer

Wild Angles

I designed and implemented the core movement systems and level scripting tools. The objective was to create expressive player control with high skill ceiling while preserving approachability for first-time players.

UnityC#ScriptableObjectsCinemachineFMOD

Duration

5 months

Team

3 developers

Engine

Unity

Platforms

PC, Web Build

Gameplay Pillars

  • >Momentum as the main skill expression
  • >Clear visual language for puzzle affordances
  • >Fast restart loops for level mastery

My Responsibilities

  • >Implemented movement stack: wall jump, coyote time, jump buffering, and slope handling.
  • >Built modular puzzle triggers with reusable ScriptableObject behaviors.
  • >Authored benchmark levels and telemetry checkpoints for progression balancing.
  • >Designed camera zones that preserve trajectory readability in tight spaces.

Systems Breakdown

Momentum-Aware Controller

Horizontal speed and airborne control are tuned from a shared movement curve profile.

Impact: Improved consistency between early and late levels while keeping advanced tech routes viable.

Scriptable Puzzle Nodes

Puzzle logic assembled by data assets instead of one-off MonoBehaviours.

Impact: Cut level scripting iteration time and reduced duplicated puzzle logic bugs.

Instant Retry Workflow

Snapshot-based respawn system resets dynamic puzzle objects in under one frame.

Impact: Maintained flow state during difficult segments and improved completion rates.

Media Gallery

Screenshots and clips from gameplay, debug tools, and iteration passes.

Wild Angles puzzle platform level

Late-game route featuring chained wall jumps and gravity switch timing.

Custom Unity editor tools

Internal level-authoring tools for puzzle nodes and checkpoint links.

Movement tech demo: coyote + buffered jump + wall redirect combo.

Video Walkthroughs

Focused clips showing implementation outcomes, tuning passes, and polished gameplay moments.

Level 3 Speed Route

One-take run used to validate route readability and checkpoint placement.

Code Snippets

Practical samples from gameplay systems and runtime tools used in production.

Coyote Time + Jump Buffer

PlayerMovementController.cs | csharp

Combines coyote time and jump buffering for responsive platforming inputs.

private float coyoteTimer;
private float jumpBufferTimer;

private void UpdateJumpTimers(float deltaTime)
{
    coyoteTimer = IsGrounded ? coyoteTime : Mathf.Max(0f, coyoteTimer - deltaTime);
    jumpBufferTimer = jumpPressedThisFrame
        ? jumpBufferDuration
        : Mathf.Max(0f, jumpBufferTimer - deltaTime);
}

private void TryConsumeJump()
{
    if (jumpBufferTimer <= 0f || coyoteTimer <= 0f)
    {
        return;
    }

    velocity.y = jumpVelocity;
    coyoteTimer = 0f;
    jumpBufferTimer = 0f;
}

Puzzle Node Event Dispatch

PuzzleNodeController.cs | csharp

Data-driven puzzle actions triggered by node activation rules.

public void ActivateNode(string triggerId)
{
    foreach (PuzzleAction action in nodeData.actions)
    {
        if (!action.triggerIds.Contains(triggerId))
        {
            continue;
        }

        actionExecutor.Execute(action);
    }
}

Production Outcomes

  • >Players reached advanced movement mastery earlier thanks to onboarding tweaks.
  • >Checkpoint retry friction dropped significantly after snapshot respawn integration.
  • >Puzzle scripting bugs were reduced through data-driven node actions.
Discuss this project