Yahoo RYOT Lab · Unreal Engine · Metaverse · 2021

Pokémon. Selfridges.
A virtual world that had to actually work.

Technical lead on Yahoo RYOT Lab's virtual 3D experience built in collaboration with designer Charli Cohen and Selfridges — celebrating Pokémon's 25th anniversary. My contribution: a custom Unreal Engine lighting system capable of handling a large-scale metaverse space filled with an unreasonable number of electric lights, without the whole thing grinding to a halt.

Yahoo RYOT Lab Unreal Engine Charli Cohen Selfridges Pokémon 25th Real-time Lighting Metaverse

Yahoo RYOT Lab × Charli Cohen Pokémon virtual world Yahoo RYOT Lab × Charli Cohen Pokémon virtual world interior Yahoo RYOT Lab × Charli Cohen Pokémon virtual world lighting

The project

For Pokémon's 25th anniversary, Yahoo RYOT Lab partnered with London-based designer Charli Cohen and Selfridges to create an entirely virtual 3D world — a metaverse retail and cultural experience that existed purely in digital space and could be visited by anyone with a browser. The experience was covered by Yahoo Inc and represented one of the more ambitious real-time web experiences of its time.

The world was built in Unreal Engine — large, detailed, and lit with the kind of density you'd expect from a fashion-forward designer's vision of a Pokémon universe. Which is to say: a lot of lights. Electric lights, neon, ambient glow, point lights scattered across an enormous space. Each one physically accurate. Each one with a performance cost.

Getting that to run in real time, at quality, without melting the hardware it ran on, was the problem I was brought in to solve.

Custom lighting system

Large real-time environments and large numbers of dynamic lights are, in the general case, enemies. Each light that needs to affect geometry is a draw call. Each shadow a light casts is a render pass. Multiply that by the scale of the space and the density of the lighting design, and you arrive at a number of milliseconds per frame that nobody wants to see.

The solution was a custom lighting architecture built specifically for this project — designed around the constraint that the space had to be large, the lights had to look dense and electric, and the frame rate had to stay acceptable across a wide range of hardware.

Light budgeting

A per-zone light budget system ensuring only the lights relevant to the player's current position were ever evaluated — the rest culled entirely, not just hidden.

Baked / dynamic hybrid

Static architectural lighting baked into lightmaps for zero runtime cost. Dynamic accent lights — the ones that animate, pulse, or respond to interaction — kept live but tightly constrained in number.

Emissive surface system

Much of the neon and electric glow achieved through emissive materials rather than actual light sources — preserving the visual density of the lighting design without the associated rendering cost.

Reflection captures

Carefully placed reflection captures to simulate the environment's electric atmosphere in specular surfaces — metallic fashion pieces, wet floors, glazed surfaces — without dynamic reflections.

LOD-aware lighting

Light influence radii tuned to match geometry LOD transitions — so distant areas of the space received appropriately simplified lighting matching their reduced geometric detail.

Performance across hardware

The system was tested and tuned across a range of hardware — from high-end workstations to mid-range consumer laptops — to ensure a consistent and acceptable experience regardless of where it was viewed.

Role

Technical lead on the lighting systems side of the project. Worked directly within the Yahoo RYOT Lab team alongside Charli Cohen's creative direction and the Selfridges brand requirements — translating an ambitious visual brief into something a real-time engine could deliver without apology.

Read the Yahoo announcement →