RYTHM
Draft

A two-year Unreal Engine engagement that automated the creation of 17,000 real-world golf courses for a global simulation platform

Three custom Unreal Engine tools. A fully automated course generation pipeline. Satellite data integration via Cesium. Heightmap imports, landscape material generation, top-down HUD rendering, cloud streaming, and 17,000 courses built and delivered — work that previously took artists days reduced to a few button clicks.

0
Real-world golf courses generated and delivered
0
Custom Unreal Engine tools built from scratch
0
Years of continuous development across multiple phases
Challenge

17,000 courses. Manual artist workflows. Satellite data that wouldn't scale. Two years to solve all of it.

Building a single high-quality golf course in Unreal Engine is a multi-day process when done manually — directories, landscape materials, grass files, runtime virtual textures, heightmap imports, shape files, and ortho images all created and connected by hand. The brief was to build the infrastructure to do that at a scale of 17,000 real-world courses, using real satellite and topographical data, with tools that fit inside the existing artist workflow and a pipeline that could generate, validate, and deliver courses automatically. Nothing like this existed. Everything had to be built from scratch.
C-01

Manual course creation didn't scale

Every golf course required an artist to manually create directories, generate landscape materials, set up grass files, import heightmaps, and connect every asset by hand. A process that worked for ten courses was completely unviable at 17,000. The entire workflow had to be automated without removing artist control over the final result.

C-02

Cesium satellite data had hard limits

Cesium doesn't allow data to be pushed to Unreal in the quantities required for a pipeline of this scale. Getting the satellite and topographical data needed to generate accurate real-world course landscapes required building a custom database on the Cesium JSON module — a workaround that didn't exist before this project.

C-03

Course accuracy across wildly different environments

Golf courses range from coastal links to desert layouts to parkland courses in dense forest. Each environment type requires different materials, vegetation systems, water bodies, and terrain handling. Building a pipeline that produced accurate, visually distinct results across all course types — at scale — required separate systems for desert enhancement, tree and bush placement, water body creation, and deep rough generation.

C-04

Cloud generation, delivery, and streaming at scale

17,000 courses had to be automatically generated, packaged as pak files, uploaded to cloud storage, and made available for users to download and stream — with a database management system keeping everything organised and a viewing system letting users browse before downloading. Building that entire delivery infrastructure was as complex as building the courses themselves.

How it works

From raw satellite data to a playable, streamable golf course — automatically

STAGE — 01 / DETECT
Data validated
iGolf course data verified for integrity, failed courses flagged automatically
Course setup
Artist enters course name, tool generates all directories, materials, grass files and runtime virtual textures in seconds
Landscape generated
Heightmap imported, Cesium satellite data stitched, landscape scaled and positioned automatically
Course detailed
Shape files imported, out-of-bounds system applied, pathways, water bodies, buildings, trees and vegetation added
HUD rendered
Top-down camera tool generates alpha-masked hole preview images automatically for every hole
Packaged and delivered
pak files generated, verified, uploaded to cloud, available for streaming and download
Technical tension

Automating what artists do by hand — without taking their hands off the wheel

The Course Setup Tool had to automate a dozen interdependent operations — directory creation, runtime virtual texture generation, grass file copying and renaming, landscape material creation with custom layer blending, heightmap import with scale and positioning, shape file import, and ortho satellite image integration — all triggered from a single editor panel with named inputs and one-click execution per stage. The challenge was that each operation depended on the previous one completing correctly, and artists still needed to be able to intervene, adjust scale, add custom layers, and reapply settings without breaking the pipeline state. Building that level of automation while preserving artist control required careful design of the tool's state management and a clear visual feedback system — checkmarks, field locking, and reapply functionality — so artists always knew exactly where they were in the process.

The top-down camera and HUD tool introduced a different category of technical complexity. Generating accurate alpha-masked top-down hole preview images required calculating camera frustum bounds using GetViewFrustumBounds(), running GetLineSplineIntersections at the frustum plane to generate a spline-shaped alpha texture, merging that with the captured UTexture snapshot, and saving the combined output with correct naming conventions per hole per map — all from a single editor window with full artist control over camera placement, snapshot quality, and object layer visibility. Coordinating all of that into a tool that felt simple to use from the artist's perspective required seven weeks of phased implementation and close iteration with the client's own technical team.

course-setup-tool — landscape material generation
01 // generate landscape material for new course
02void UCourseSetupTool::CreateLandscapeMaterial(FString CourseName) {
03 // copy template material to course directory
04 FString MatPath = "/Courses/" + CourseName + "/Materials/";
05 FString MatName = "M_Landscape_" + CourseName;
06 CopyTemplateAsset("M_Landscape_Template", MatPath, MatName);
07 // add custom layers to layer blend node
08 for (FString Layer : CustomLayers) {
09 AddMaterialFunction(MatName, Layer);
10 ConnectToLayerBlend(MatName, Layer);
11}
12 // → RVT connected · grass files plugged in
13 // → material instance created · checkmark shown
14 CreateMaterialInstance(MatPath, MatName + "_inst");
15 }
Kicker-THE GENERATION LOOP

Every course runs the same automated pipeline — from raw data to playable environment

From satellite data validation to cloud delivery, every one of the 17,000 courses passes through the same closed pipeline — automated at every stage, with artist control available at any point.
Capabilities

Three tools. One pipeline. 17,000 courses.

COURSE SETUP TOOL

Automated course creation in minutes

A custom Unreal Engine editor tool that generates all directories, landscape materials, grass files, runtime virtual textures, heightmap imports, shape files, and ortho satellite images for a new golf course from a single panel. What previously took artists days now takes minutes — with full control retained at every step.

COURSE GENERATION PIPELINE

17,000 real-world courses from satellite data

An automated pipeline that validates iGolf course data, stitches Cesium satellite imagery to painted landscapes, generates terrain from heightmap data, applies vegetation, water bodies, buildings, pathways, and course-specific materials — then packages and uploads each course as a pak file for cloud streaming and download.

HUD CAMERA TOOL

Automated top-down hole preview rendering

A custom Unreal Engine editor tool that automatically places cameras, calculates frustum bounds, generates alpha-masked spline-shaped textures, and produces top-down hole preview images for every hole in every course — used directly in the game HUD, generated without manual photography or image editing.

CLOUD DELIVERY SYSTEM

Generation, upload, download, and streaming

A complete course delivery infrastructure — automatic pak file generation and verification, cloud upload, database management, a viewing system for browsing courses before download, and a streaming system that lets users access courses without downloading the full file. Built to handle 17,000 courses at launch and scale beyond.

Results

17,000 real-world courses. Delivered on schedule. Demonstrated at the world's largest golf industry event.

All 17,000 courses were generated, packaged, and delivered across three sprints over twelve months — with an additional phase following the initial delivery. The complete pipeline — Course Setup Tool, automated generation, cloud delivery, and HUD camera tool — was operational and demonstrated at the 2025 PGA Show, the world's largest golf industry event. Course types spanning coastal, desert, parkland, and mountain environments were all handled correctly by the pipeline, with environment-specific materials, vegetation, and water bodies applied automatically. The Course Setup Tool reduced course creation time from a multi-day manual process to a matter of minutes per course. The top-down HUD camera tool eliminated manual photography entirely, generating accurate alpha-masked hole preview images for all 17,000 courses automatically.
0
Real-world golf courses generated and delivered
0
Custom Unreal Engine tools built and integrated
2yrs
Continuous development across multiple phases
0
Automated pipeline replacing entirely manual workflows

Need to build something at a scale that rules out doing it by hand?

We've built automated generation pipelines that turned multi-day manual processes into minutes — across 17,000 real-world environments. If your project needs custom tooling, deep engine integration, and the engineering discipline to deliver at scale, let's talk.

Let's Talk →