The same in-process server that drives ArcGIS Pro and QGIS now speaks the protocols Cesium, Unreal, Unity, and Godot expect — quantized-mesh terrain, WMTS, TMS XML, and LERC elevation. One desktop on the LAN feeds an entire simulation cluster, with no Cesium ion credits and no ArcGIS Online egress.
Mission planning and simulation environments can't reach the public internet — and shouldn't depend on per-credit terrain services even when they can. The game-engine server takes the DEM, imagery, and 3D Tiles you'd otherwise upload to Cesium ion or ArcGIS Online and serves them directly from one workstation to every engine client on the LAN.
// one desktop → every engine on the simulation LAN GET /tms/ → Cesium raster overlay GET /api/terrain/{id}/layer.json → Cesium terrain GET /api/terrain/{id}/{z}/{x}/{y}.terrain GET /wmts → ArcGIS Maps SDK GET /arcgis/rest/services/{id}/ElevationServer GET /api/game/assets.json → Godot catalog ● serving on 10.0.4.12:5059 · air-gapped
No engine plugin or custom loader required — point each engine's stock provider at the right URL and it just loads.
CesiumTileMapServiceRasterOverlay + CesiumTerrainProvider against /tms/ and /api/terrain/{id}/layer.json. Works in CesiumJS, Cesium for Unreal, Unity, and Godot.
ArcGISWebTiledLayer against /wmts, ArcGISImageTiledLayer against the ImageServer REST facade, and ArcGISTiledElevationSource against the LERC ElevationServer.
One HTTPRequest to /api/game/assets.json returns every layer with ready-to-use URL templates. Heightmap PNG tiles drop straight into HeightMapShape3D.
Unity's UnityWebRequest, Unreal's HTTP module, custom WebGL viewers — the JSON catalog gives every client one endpoint to discover everything.
ArcGIS StreamServer WebSocket + camera-sync SSE let a Cesium client and a Godot client share a view, or feed live entity positions into the simulation.
Loopback is always open. Off-machine clients add ?apikey= — same model as the rest of the LocalMapServer.
The on-demand resampler projects and bilinearly re-samples your DEM into Web Mercator tiles, then encodes on first request and caches in SQLite. Subsequent hits are lookups.
.hgt (pure C# reader, void-filled).terrain) — Cesium-native, pure-C# encoderArcGISTiledElevationSourceLERC tiles in v1 are uncompressed-floats-in-LERC-framing (valid bytes, full fidelity, compression coming in v2). Quantized-mesh skirts and availability metadata tree are scheduled for v2.
Drop one desktop on the simulation LAN, register your DEMs and tile packages, and every engine on the cluster draws from the same air-gapped source.