Procedural settlement with OSM buildings, roads, and entities in a headless Unity simulation

Procedural Settlement: Generating 3D Buildings, Roads, and Entities from OpenStreetMap in Unity

How I replaced a proprietary terrain bundle with a fully procedural environment generated from open-source data — hundreds of buildings with window textures from OpenStreetMap, terrain-hugging roads, satellite-driven vegetation, and multiple ground and air entities — all built at runtime in a headless Unity Docker simulation.

April 13, 2026 · 10 min · Pavel Guzenfeld
Satellite imagery comparison: 15m vs 0.13m resolution in headless Unity simulation

The Satellite Tile Hunt: From 15m Blobs to 13cm Resolution in an Air-Gapped Simulation

A practical guide to finding, downloading, and fusing satellite imagery and elevation data for an air-gapped Unity simulation. Covers every free tile provider (ESRI, Bing, Google), every free DTM source (SRTM, Copernicus, Mapzen), how to stitch thousands of tiles into Unity-ready textures, and the dead ends along the way.

April 5, 2026 · 13 min · Pavel Guzenfeld
Satellite terrain and natural sky in headless Unity simulation

Natural Skies and Satellite Terrain in a Headless Unity Simulation

How I replaced flat brown terrain and solid-color sky in a headless Unity 6 Docker simulation with real satellite imagery, SRTM topography, and a custom panoramic skybox — all fully air-gapped, no runtime network dependency. Includes NVENC GPU encoding, custom shaders, and every dead end along the way.

April 4, 2026 · 12 min · Pavel Guzenfeld
From Magenta to Desert: Fixing Unity Terrain in Docker

From Magenta to Desert: Fixing Cross-Platform Unity Terrain Rendering in Docker

A detailed account of fixing terrain rendering in a headless Unity 6 Docker simulation — from magenta buildings and gray streaming cameras to textured villages with working RTSP feeds. Covers cross-platform asset bundle shader mismatches, runtime material conversion, texture recovery from broken materials, and every dead end along the way.

March 27, 2026 · 12 min · Pavel Guzenfeld