◆ 2025  /  Unity · UCL BA Media Degree Show

Verlet Voyage

A physics adventure game for children. Golf, an orange ball, sets out to rescue his friend Orb. The soft-body physics runs on a solver I wrote from scratch.

Drag the ball. It uses the same solver as the game.

Developed as my dissertation project, this game runs on custom Verlet physics, with no Unity rigidbodies.

  • Wrote the Verlet soft-body solver from scratch in C#
  • Designed and built the whole game, solo
  • Ran informal alpha and beta playtests with children in the target age range

My role

Designer and programmer

When

2024 to 2025

Team

Solo

Engine

Unity, custom physics

Shown at

UCL Degree Show, May 2025

Tags

Game · CG programming · Interactive media

Watch on YouTube ↗

Overview

A physics game on a custom solver.

Verlet Voyage is a physics adventure for children aged 6 to 10. It runs on a Verlet integration system and collision engine I wrote from scratch, so objects stretch, bounce and deform instead of behaving like rigid bodies. Players guide Golf across handmade levels to reunite with Orb, and learn cause and effect by trying things, without written instructions.

The visual style is stylised 3D rendered as 2D. There is no explanatory text; visual and physical cues show players what they can try. Each level works as a small physics playground.

It was also the practical part of my dissertation, on physics feedback and children's sense of agency.

Original / no internet assets applies to the core algorithms, assets, interactions and models, all self-developed. It does not cover music or skybox materials.

Research

Affordance, emotion, MDA.

Theoretical context

  • Affordance theory: following Gibson's ecological psychology and Norman's application in HCI: how visual and material cues suggest possible actions, particularly in nonverbal interfaces built for children.
  • Emotional design: how a system can communicate emotion through its behaviour and response, without text.
  • MDA: the mechanics, dynamics and aesthetics framework, used to connect the low-level Verlet simulation to emergent play and to how the game feels.

Comparative analysis

Angry Birds, Getting Over It and World of Goo, studied for how different physics models shape player agency and emotional tone.

Custom physics in place of rigidbodies

  • Verlet integration to simulate particles and linked points that retain natural movement over time.
  • Constraint solving that keeps positional integrity while still allowing flexibility and deformation.
  • Collision detection written to account for softness, elasticity and impact behaviour without native colliders.

I tuned the simulation over many iterations so that it feels light and forgiving for younger players.

Verlet and Euler, side by side

A physics engine moves every point forward one small time step at a time. The simplest method, explicit Euler, works out each new position and velocity from the values of the step before. On a spring, that adds a little energy at every step, so the motion grows until the object comes apart. Verlet integration keeps each point's current and previous position and works out the velocity from the two. It does not let a spring's energy grow, and because the velocity follows from the positions, the game can move points directly to hold a body together. That is how Golf keeps its shape.

Explicit Euler

Verlet

Both balls start squeezed by the same amount, with the same springs and the same time step. Drag a point in either ball and the same point moves in both. Stiffer springs make the Euler ball come apart sooner.
Design

Interaction and levels.

Player-centred interaction

Simple controls with no text or tutorial, and detailed physical response.

Physics as expression

Stretching, bouncing and wobbling are tuned to show cause and effect without words.

Emergent play

Levels allow more than one solution. The cues are in the visuals and the physics, so players find their own route.

Control and launch

Players drag from Golf's body and release in the opposite direction to where they want to go, like a slingshot. The launch is driven entirely by the custom solver's tension, elasticity and soft-body rebound.

  • Aim: click or tap and drag; a dashed directional line shows the intended trajectory.
  • Tension: line length sets launch force: a long line throws hard, a short one gives a small, precise push.
  • Release: golf deforms slightly on takeoff, then rebounds and responds to collisions naturally.

Level flow across ten stages

Level flow diagram
Planned engagement across the levels: peaks follow a discovery, and dips give a break before new complexity arrives.
  • Levels 1 and 2, introductory: simple launches and forgiving layouts to build confidence.
  • Levels 3 and 4, bounce fields: angular surfaces and ricochet.
  • Levels 5 and 6, dynamic arcs: motion prediction and curvature-based targeting.
  • Levels 7 and 8, soft constraint zones: players use deformation and elasticity to get around.
  • Levels 9 and 10, puzzle-integrated: all of the above, combined.

Visual and UI

The world is built from rounded shapes (circles, arcs, smooth curves) so the visuals match the elastic physics. Bounce pads and deformable areas are marked by shading, saturation and geometry, so no instructions are needed. The UI is icon-based with minimal text. The palette is warm (oranges, yellows and creams), and the contrast between orange Golf and black Orb keeps attention on them.

Sound

The sound includes collision sounds that make the physics easier to read, interface sounds that confirm actions and reward progress, and calm music that changes slightly from level to level.

Exhibition

Shown at the UCL BA Media Degree Show, May 2025.

Verlet Voyage was shown at the UCL BA Media Degree Show in May 2025. Visitors played on a wall-mounted screen with a mouse at the table. Tablets on the table showed the title screen, and balloons in the orange and black of Golf and Orb sat on the table and the wall.

A visitor at a white table plays Verlet Voyage with a mouse while a level shows on a wall-mounted screen; orange and black balloons sit on the table and on the blue wall, with tablets and the wall label nearby
A visitor plays Verlet Voyage at the UCL BA Media Degree Show, May 2025.
A wall-mounted screen showing the Verlet Voyage title over a 3D scene with Golf, with orange and black balloons and two tablets on the table below
The title screen of the degree show version.
Two visitors at the table, one playing with a mouse, while the screen above shows a level with Golf, Orb and the prompt Launch the ball
Two visitors at the table, with a level on the screen above.
The entrance to the UCL BA Media Degree Show, You and I are Earth, between two blue frames carrying the show poster and the list of graduating students, with visitors and a screen beyond
The entrance to the show, You and I are Earth.
Two visitors play Verlet Voyage on tablets at the table, with the title screen on the wall above and orange and black balloons behind
Visitors play on tablets, with the title screen on the wall.
Technical appendix: the solver, the level editor, the shaders

Solver, editor, shaders.

The core system

Verlet manager architecture
The VerletBall is a soft body of connected particles managed by the Verlet Manager: integration, constraint resolution, collision detection.

The simulation loop: the user applies force, so the ball receives an impulse. The VerletBall updates through integration and constraint solving. Collisions resolve against particles and constraints. Particle positions update. The loop runs until the ball stops moving.

  • Ball constraint: fixed-length constraints and custom elastic behaviours preserve shape and volume.
  • Inflate constraint: an optional internal-pressure constraint keeps the body round and puffy under load.
  • Collision: ground collision, edge collision against static geometry, and dynamic collision against moving objects.

The environment is built from static particles (walls, pins), dynamic particles that can be pushed, and constraints that define spring-like relationships between them. Anti-gravity zones and directional forces add movement that is deliberately not realistic.

A custom level editor

Tilemaps and prefab composition are not enough for a physics-driven world, so I built an editor into the ParticleController component that draws collision environments directly in the Scene view.

  • Key modifiers place geometry: S adds a static particle used as a wall or anchor, A adds a dynamic particle and connects it to the last static one, W adds a standalone static particle.
  • Clicking two existing particles connects them with a constraint; constraint type, thickness, colour and material are configurable per type.
  • A constraint creation mode lets designers define relationships by hand for composite or maze-like structures.
  • Levels serialise positions, static/dynamic state and constraint data to JSON-like structures for reuse, with loading deliberately delayed so physics and rendering are ready before instantiation.

Shaders and effects

An edge shader accentuates object boundaries so soft, toylike assets stay crisp and readable. Luminance from neighbouring pixels is evaluated with a Sobel operator for horizontal and vertical gradients, combined into edge intensity, then blended with object colour. The result is a smooth, clear outline that makes objects easier for younger players to read. A confetti particle system with randomised colours and directional bursts rewards level completion.

Iterating the ball

Verlet ball version history
V1's centred algorithm through V2's radial expansion, V3's first UV texture, and V4 and V5's thematic integration. Each version was tuned against playtests.
Iteration

Alpha, beta, postmortem.

Alpha playtests were informal formative playtests with children in the target age range. They focused on how children understood soft-body motion and physical feedback, and they led to the interaction changes.

Beta widened the audience and produced bigger changes: a full redesign of level layouts, a reworked launch system for better control, and fixes to bugs that were breaking gameplay flow.

Went well

  • A fully custom Verlet integration and constraint-based physics system, shipped, without Unity's rigidbody engine.
  • A consistent 3D-to-2D art style that stayed clear for young players.
  • A child-friendly interaction model built on physical affordance, with almost no tutorial or text.
  • Original shaders and sound layers reinforcing tactile feedback and emotional tone.
  • Informal beta playtests with children suggested the controls were intuitive and the physical interaction carried emotion.

Could improve

  • The custom collision system lacked rotation and compound-shape support, which limited puzzle complexity.
  • Level scenery could vary more to help players orient themselves.
  • The difficulty curve between levels 4 and 6 shifted too abruptly and frustrated some testers.
  • UI responsiveness on small screens: some buttons misaligned in early mobile builds.
  • The story was thin. Environmental storytelling or cutscenes would help.

Thanks

Developed as degree work. Thanks to my parents and friends for their feedback, and to the UCL faculty for academic and creative guidance, particularly Mr William Sykes and Dr Dane Sutherland.