Jared Pemberton

← Home Tee Hero

Home Tee Hero V1

Every real golf course as a playable island, for the Approach R10.

Role
Product Architect
Years
2019 to 2023
Focus
Course generation pipeline
Stack
Houdini PDG, Python, VEX, Unity
Garmin Approach R10 video
The Approach R10 launch video.

I pitched and prototyped Home Tee Hero inside an internal innovation incubator: play any real golf course at home, on your phone, from a launch monitor.

The first version had to run on low-end phones, so each hole became its own small island, seen from above.

The prototype

The pitch demo was built by hand in Unreal Engine to prove the idea: take one real course and rebuild it from map data.

Elevation and course shapes came out of Global Mapper. The shapes became masks for fairways, greens, bunkers and trees. World Creator turned the elevation into terrain, and Unreal dressed it using the masks.

Global Mapper showing color-shaded elevation for the area around a golf course.
Elevation for one course, extracted in Global Mapper.
White fairway shapes on black.
Fairway mask.
White tree-cover shapes on black.
Tree mask.
Gray eroded terrain in World Creator.
Terrain generated from the elevation.
The same terrain with course areas painted on.
Course areas applied from the masks.
A fairway beside a lake in Unreal Engine.
The prototype in Unreal Engine.
A green with bunkers in Unreal Engine.
Same course, at the green.

Unreal to Unity

The pitch ran in Unreal Engine. The product moved to Unity, mainly for performance on phones and to fit the development team we had.

The look changed with it. I managed an outside concept artist to set a stylized direction, then an outside asset studio that built the biome art to those targets.

A stylized grassland island hole floating in a blue sky.
The grassland biome look.
A stylized fairway beside a pond with trees.
Same biome, at ground level.

Course generation

A hand-built demo proves an idea. A product needed every course, so I built the original course-generation process in Houdini.

Each hole starts as three files: feature shapes, an elevation map and a metadata file. Houdini cuts the shapes into the terrain, trims the result into an island, builds a detailed mesh and a mobile-ready one, and bakes the detail into normal and ambient-occlusion maps.

Outlines of one hole’s fairway, green, bunkers and water.
Source: feature shapes for one hole.
A gray elevation surface for the same hole.
Source: elevation for the same hole.
Elevation surface with course shapes pressed into it.
1. Shapes cut into the terrain.
The terrain trimmed to an island around the hole.
2. Trimmed to an island.
A detailed mesh of the island.
3. Detailed mesh.
A triangulated low-poly mesh of the island.
4. Mobile-ready mesh.
The low-poly mesh shaded with baked detail.
5. Detail baked into normal and AO maps.
Diagram: per-hole source data, four Houdini stages, then build farm, course server and the app.
The course generation pipeline.

At scale

One hole is a recipe. Forty-two thousand courses is a factory. I packaged each operation as a Houdini digital asset and drove them with PDG, so every hole of every course became its own task on a build farm.

With a core team of fewer than five, we shipped about 42,000 real-world golf courses, about 750,000 playable holes.

Running this needed a render farm. I specified the machines, IT helped with the initial setup and the cartography team stood it up. Their map technology group then built the back-end tools that run the Houdini jobs on the farm, in C# and Hython, and they did it well.

A Houdini node network for course generation, flowing from a start node at the top to export nodes at the bottom.
The main course-generation network.
A Houdini TOPs network with the same stages arranged as tasks inside one large block.
The TOPs network that runs it for every hole.

In the game

Houdini supplies the geometry and data for each hole. Unity skins and renders it.

A generated island hole in the Unity editor beside the same hole on a phone.
A generated hole in Unity, and on the phone.

Result

  • About 42,000 real-world golf courses shipped, about 750,000 playable holes.
  • Built by a core team of fewer than five.
  • The course-generation process I built carried forward into version two.
Gameplay screenshot: a fairway with a 210 yard marker.
A drive lands on the fairway.
Gameplay, recorded on iOS.
Gameplay screenshot: target rings around the pin.
Approach to the green.

Stack

Prototype

  • Python
  • Global Mapper
  • World Creator
  • Unreal Engine

Home Tee Hero (R10)

  • Houdini
  • PDG
  • HDAs
  • Python
  • VEX
  • Global Mapper
  • Unity
  • C#