Selected work
Game · UnityC# · Unity 2019.4 · URP

Desdoble

A 3D action platformer where you control a human and a spirit form simultaneously, swapping between bodies to solve puzzles and survive combat.

A full-featured 3D action platformer built in Unity where the core mechanic is managing a dual-body system—your human and spirit form. Throw your spirit across the level, interact with spirit-exclusive obstacles, then reel it back to your body to progress.

Role — Solo developer
  • C#
  • Unity 2019.4
  • Universal Render Pipeline
  • Post-Processing v2
  • Animator (State Machines)
  • Rigidbody Physics
  • ProBuilder
  • TextMesh Pro
  • Input System
  • Timeline

Desdoble is a three-level action platformer centered on a possession mechanic. You control a human protagonist who can eject his spirit form, which travels independently in 3D space tethered back to his body. The spirit passes through certain obstacles and can activate spirit-crystal gates; the human body remains as a physics-interactive corpse you need to manage. Swapping back costs a cooldown and requires proximity, forcing real spatial puzzle-solving.

The game uses a full combat loop: enemies patrol, chase, and can be stunned; the player fights with a sword, picks up and throws physics objects, and navigates environmental hazards. I built the system on URP with real-time lighting, post-processing volume swapping for the spirit state, and procedural camera shake on hit. Audio is context-driven via animation events and pitch-varied to avoid repetition.

The codebase is organized by system (Player, Enemies, Environment, Camera, Menus, Cinematics). Core systems include physics-based body swapping, AI chasing/attacking, a throwing trajectory preview, and a checkpoint-respawn loop. Three full levels ship with intro cinematics, dialogue sequences, and an options menu. The project uses ProBuilder for level construction and ship with 67 gameplay prefabs.

What's notable
  • Dual-form possession mechanic with physics-based body management and tethered spirit visualization
  • Real-time lighting via Universal Render Pipeline with custom depth-normals renderer and post-processing volume swaps
  • Dynamic audio system triggered via animation events with pitch variance for all player actions (jump, attack, spirit transitions, footsteps)
  • Enemy AI with distance-based chasing, stun system, and targeted attack logic; spirit gates with conditional collision ignoring
  • Full 3-level campaign with cinematics, dialogue triggers, checkpoint respawns, and level-specific audio contexts