Super Oga: a 3D platformer run through Lagos by Abdulhamid SonaikeSuper Oga: a 3D platformer run through Lagos by Abdulhamid Sonaike

Super Oga: a 3D platformer run through Lagos

Abdulhamid Sonaike

Abdulhamid Sonaike

Super Oga is a 3D platformer that runs a real Lagos route in the browser: Ojuelegba to Yaba to Oshodi, across Third Mainland Bridge, and into CMS before go-slow eats your clock.

The idea

Most platformers are set somewhere that looks like nowhere. This one is set somewhere specific. You run the route in an agbada, stomp agberos, dodge okadas, head-butt Ghana-Must-Go bags for naira, chop puff-puff to become Big Oga, and jump the open gutters. The writing is in the language people actually use on that road, from "Oya, start!" to "E don cast!" to "Omo! E don land!"

No bundler, no install

The game is an index.html with an import map that pulls Three.js straight from a CDN, plus plain ES modules. There is no bundler, no node_modules to install and no build output. Open the file and it runs. That was a constraint I set deliberately, so the work went into the game rather than into tooling. The only build-time tool in the repo is the one that converts the hand drawn SVG textures to JPG.

The street is generated from a seed

The level is built in code rather than modelled: road, kerbs, gutters, buildings, the bridge, signage, props, colliders and spawns, all laid out along one axis with forward as negative Z and one unit to the metre. A seeded generator drives the variation, so the street is never a flat repeat but is identical on every run, which is what you want when you are tuning a jump. Five named zones sit at fixed distances with a checkpoint each, and the gutter gaps are declared as explicit ranges instead of being left to the generator, so nothing can come out unjumpable.

Textures are drawn, not downloaded

The signs and surfaces are drawn as SVG and converted to JPG, and several textures are made at runtime: the black and yellow kerb is four filled rectangles on a canvas, and the lagoon's normal map is a 256 by 256 data texture computed from two sine fields. The only photographs in the build are three shots of Lagos used behind the title and end screens, credited to their photographers in the footer.

Making it look like late afternoon

Golden hour was the whole visual target. The sky is Three's physical sky shader with the sun set 24 degrees above the horizon, rendered once into an environment map so every surface picks up the same warm bounce. On top of that: a warm directional sun with soft shadows, a hemisphere light for sky and ground, exponential fog tinted dusty orange, ACES filmic tone mapping pulled slightly under, a bloom pass, and 700 particles of harmattan dust drifting through the light.

It works on a phone

Touch controls appear only on coarse pointers: an on screen stick with run and jump buttons. Pixel ratio is capped, antialiasing is off in favour of a multisampled render target, and the post chain is deliberately short. The heads up display collapses on narrow screens, and prefers-reduced-motion cuts the banner and score popup animations.

What it demonstrates

Real time 3D in the browser with no framework and no build step, procedural level generation with the reproducibility that tuning needs, lighting and texture work done by hand, and a preference for making something specific over something generic.
The level laid out in metres, generated from a fixed seed so every run is identical.
The level laid out in metres, generated from a fixed seed so every run is identical.
Every surface and every light in the scene was generated or drawn, not downloaded.
Every surface and every light in the scene was generated or drawn, not downloaded.
Like this project

Posted Sep 15, 2026

A browser 3D platformer from Ojuelegba to CMS: seeded procedural street, hand drawn and canvas textures, golden hour lighting, touch controls, no bundler.