Projects

public / 2021

Real Stories Inspire

Reusable story system for a multi-release Saudi Aramco project.

An interactive storytelling project for Saudi Aramco built around reusable story scenes, parallax-style depth, recorded reveal transitions and third-party handoff constraints.

Showcase

Ali Story Interaction

Project Context

Real Stories Inspire was a multi-release content project for Saudi Aramco where the main engineering problem was structure: each story needed its own scenes, animation and navigation, but the underlying system had to stay reusable.

Goodboy produced a handful of the stories, while remaining stories were intended to be handled by a third-party team. That meant the code could not rely on one-off scene scripts that only the original developers understood.

The team consisted of four key people: a designer, two developers and a producer. I was the lead developer across multiple development cycles, one per story, and focused on keeping the content model, animation behaviour and scene structure reusable between releases.

The original interactive experience is no longer represented online in the same form, as the currently available version appears to have moved toward video-based presentation.

Stories

  • The Man Who Sowed Tomorrow
  • The Seamstress Who Sewed the Future
  • The Writer Who Caught the Clouds

Reusable Story Structure

Shared behaviour could not be hidden inside a single hard-coded scene. Navigation, scene setup, parallax, reveal transitions and asset handling all needed to be reusable across stories.

That mattered because the code had to be understandable to people outside the original team. A third party needed to continue producing stories without reverse-engineering every decision from the first release.

Marrying 3D And 2D

Scenes reacted to mouse and touch position by moving and rotating in a way that created depth and parallax.

Under the hood, each scene was represented as a 3D game object containing other 3D objects. The positioning of 2D elements, including Spine animations and PNG assets, was then mapped into that scene structure. The depth position of each object affected the amount of parallax applied, producing a richer layered presentation while still using 2D artwork.

Artist-Curated Scene Reveal

Manually authored brush-stroke transitions did not produce the desired visual result, so I added debug tooling that allowed the project to create a canvas for drawing with mouse input.

That tool made it possible to record and play back artist-created brush strokes. The resulting transition data was stored in JSON and used in the production build, with configurable options such as step, speed, alpha and texture.

Problem

  • Each story needed its own scenes and animation while sharing the same navigation, reveal and asset structure.
  • The code needed to be readable enough for third-party developers to continue producing stories after Goodboy's initial releases.
  • Scene reveals, parallax movement and 2D/3D layering had to remain reliable across browser devices.

Approach

  • Led development across a small team of four, working with a designer, another developer and a producer.
  • Oversaw the technical structure so the code stayed fast, reliable, reusable and understandable for external teams.
  • Built interactive story systems that supported multiple stories with shared architecture.
  • Worked on the 3D and 2D scene composition used to create depth, parallax and animated presentation.
  • Added debug tooling that allowed artists to record brush-stroke reveal paths for production playback.

Interesting Bits

  • Reusable story scene structure
  • Modular story framework for future content expansion
  • 3D scene object mapped to 2D Spine and PNG elements
  • Mouse and touch driven parallax interaction
  • Artist-curated brush-stroke scene reveal tooling
  • Canvas-recorded transition playback from JSON data

Outcome

  • Delivered a reusable story framework for a global client, with content structure designed to support later stories without restructuring the application.