Pokémon GO Biomes

Technical Lead, Encounter Environments

Pokémon GO Biomes

Project Overview

I designed and led technical development of a procedural system that gives encounter scenes a distinct sense of place, helping the world respond to where the player is without breaking readability or performance.

Project Goal

When we set out to build the Biomes feature for Pokémon GO, the goal was not just visual variety. It was to make the world feel aware of where you were.

A coastline should not feel like a forest, and an urban space should not feel like a park. The change needed to be subtle, but consistent enough that players could feel it as they moved.

Role & Approach

As Technical Lead, I worked across engineering and tech art to turn that idea into something scalable and usable in production.

I designed a Scriptable Object pipeline that maps ecosystem and world data directly to spawn data. This made the system fully data-driven, so new biomes, seasonal changes, and live updates could be authored without engineering support.

On the runtime side, I built a procedural spawn system that maps asset types such as trees, rocks, and foliage to spawn points with weighted probabilities. Instead of hand-authoring scenes, we defined rules. The system generates variation per encounter while staying within clear constraints, so scenes feel different based on location but remain readable and intentional.

I worked closely with artists throughout development, training them on the tools and iterating on workflows so they could control composition and mood without fighting the system.

Technical & Performance

Performance was a constant constraint, especially on older devices. We profiled on low-end hardware, validated changes on-device, and used early player behavior to guide where to focus.

On the rendering side, I pushed GPU instancing across environment assets to reduce draw calls, and iterated on shader cost to keep performance predictable. We established LOD strategies to scale asset complexity, and I worked with artists to keep poly counts and material usage within budget.

We also reworked the spawn pipeline to move as much work out of runtime as possible. Data that did not need to be computed at runtime was pre-baked and cached, reducing per-encounter cost. Encounters needed to load immediately since catching is a fast interaction, so minimizing setup overhead was critical.

Alongside spawning, I helped guide supporting tech art systems including seasonal and weather variation, time-of-day tinting across environments and Pokémon, fog, shadows, and interaction details like trampling grass.

Throughout development, a few constraints stayed fixed. Pokémon could not be obscured or blocked. Large assets needed strong silhouettes. Scenes had to read instantly.

Outcome

Biomes was a systems-driven feature that needed to disappear into the experience. The goal was not just variation, but consistency.

The world should respond to where you are without the player thinking about how it works.