Satellite Map Generator Documentation
SATELLITE MAP GENERATOR
Documentation
Digital Gods | Version 1.0.11 | Unreal Engine 5.8
OVERVIEW
Satellite Map Generator is an Unreal Engine Editor plugin for generating high-resolution satellite-style maps directly from your existing game world.
Instead of relying on external map services or imported satellite imagery, the plugin captures the actual Unreal Engine level from an orthographic top-down view and converts it into production-ready map imagery.
The plugin is designed for both small levels and large open worlds and supports standard Unreal Engine Landscapes, UE 5.8 Mesh Terrain / Mesh Partition, static-mesh terrain, Nanite geometry, foliage, roads, buildings, water and mixed environments.
Satellite Map Generator can export a single stitched map image, streaming-ready world-space tiles, or both. It also includes optional zoom-pyramid generation, JSON metadata for runtime map systems, and spline-based road and railway overlays that remain readable regardless of mesh LOD or draw distance.
The plugin runs entirely inside Unreal Engine and does not require an internet connection, external mapping provider, API key or third-party service.
REQUIREMENTS
Unreal Engine: 5.8
Platform: Windows 64-bit
Plugin Type: Editor Code Plugin
Runtime Component: None required
External APIs: None
Third-Party Dependencies: None
INSTALLATION
1. Close Unreal Engine.
2. Copy the SatelliteMapGenerator folder into your project Plugins directory:
YourProject/Plugins/SatelliteMapGenerator/
3. Regenerate project files if required.
4. Build the project/plugin for Unreal Engine 5.8.
5. Open the project.
6. Enable Satellite Map Generator in Edit > Plugins if it is not already enabled.
7. Restart the Editor if requested.
8. Open the tool from:
Tools > Satellite Map Generator
QUICK START
For a first test on a normal Landscape:
1. Open the level you want to capture.
2. Select the Landscape actor in the level.
3. Open Tools > Satellite Map Generator.
4. Set Capture Area Mode to Selected Actors.
5. Use these recommended test settings:
Tile World Size: 1000 m
Tile Resolution: 2048 px
Overscan: 3%
Visual Preset: Clean Satellite
Lock Exposure: Enabled
Exposure Compensation: 0.0
Warmup Captures: 2
6. Click Analyze Bounds.
7. Confirm that the reported map dimensions and tile count match the expected world size.
8. Click Generate Satellite Map.
9. After the test succeeds, increase Tile Resolution to 4096 px for a production-quality export.
For example, a 4 km x 4 km map using 1 km tiles produces a 4 x 4 tile grid, for a total of 16 highest-detail tiles.
OUTPUT SETTINGS
Output Directory
Defines where generated map files are written.
The default location is:
Saved/SatelliteMaps
Each generated map is placed inside its own folder based on Map Name.
Map Name
Defines the base filename and the output folder name used for generated images, tiles and map.json.
Example:
Panonia
will generate files inside a Panonia output folder.
Export Mode
Single Image Only
Creates one stitched satellite map image.
Tiles Only
Exports individual map tiles intended for large maps or runtime streaming.
Single Image + Tiles
Exports both the stitched map and individual tiles. This is recommended when the map will be used both as a normal UI map and as a streamed runtime map.
Map Rotation
Available rotations:
0 degrees
90 degrees clockwise
180 degrees
-90 degrees / 90 degrees counter-clockwise
Rotation is applied consistently to:
– the stitched map
– individual tiles
– tile indices
– zoom levels
– JSON metadata
This keeps runtime coordinate conversion deterministic after rotation.
Full Map Max Dimension
Controls the maximum width or height of the stitched full-map image.
This setting does not reduce the resolution of exported high-detail tiles. It only limits the combined overview image to protect memory usage when very large maps are generated.
Range: 1024 to 16384 pixels.
Write Metadata JSON
When enabled, the plugin writes map.json containing information required for runtime map systems, including:
– world bounds
– tile size
– tile resolution
– tile grid dimensions
– meters per pixel
– map rotation
– image orientation axes
– zoom levels
– tile filename pattern
– transport overlay settings
Generate Zoom Pyramid
Available when tiled export is enabled.
Generates lower-resolution zoom levels from the already captured highest-detail tiles without re-rendering the Unreal world.
This is useful for Google Maps-style map viewers where the application loads lower-resolution tiles when zoomed out and higher-resolution tiles when zoomed in.
CAPTURE AREA
Capture Area Mode determines which part of the world is exported.
World Partition Runtime Bounds / Auto World Bounds
Designed primarily for large World Partition levels.
The plugin attempts to determine the runtime world bounds even when some World Partition cells are unloaded.
Use Analyze Bounds before generating a large export.
If the detected area is unexpectedly huge, use Selected Actors or Manual Bounds instead.
Selected Actors
Uses the combined bounds of the actors currently selected in the Unreal Editor.
This is the recommended option for:
– standard Landscape maps
– testing
– exporting only part of a level
– avoiding unrelated actors with extremely large bounds
For a normal Landscape, select the Landscape actor and use this mode.
Loaded World Actors
Uses the bounds of currently loaded world actors.
This can be useful for smaller levels or non-World-Partition projects, but may include actors that extend far outside the intended map area.
Manual Bounds
Allows exact manual control over the capture rectangle.
Manual Center
World-space center of the capture area.
Manual Width
Capture width in Unreal centimeters.
Manual Height
Capture height in Unreal centimeters.
Unreal conversion reference:
100 cm = 1 meter
100,000 cm = 1 kilometer
Expand Bounds To Whole Tiles
Expands the selected bounds to complete tile boundaries.
This is recommended for deterministic tile grids, stitched maps and zoom pyramids.
TILE SETTINGS
Tile World Size
Defines the physical world area represented by one highest-detail tile.
Recommended starting value:
1000 m
Smaller tile sizes create more tiles and allow more localized streaming. Larger tile sizes reduce tile count.
Supported range: 50 m to 10,000 m.
Examples:
4 km x 4 km world with 1000 m tiles = 4 x 4 tiles
8 km x 8 km world with 1000 m tiles = 8 x 8 tiles
Tile Resolution
Defines the pixel resolution of each highest-detail tile.
Recommended values:
2048 px – testing and fast iteration
4096 px – recommended production default
8192 px – extremely high-detail export with significantly higher memory, disk and processing requirements
Overscan
Renders additional pixels outside the requested tile area and then crops the result back to the final tile size.
This reduces edge artifacts caused by screen-space, temporal and lighting effects.
Recommended starting value:
3%
CAPTURE SETTINGS
Capture Pass
Satellite / Final Color
Produces the normal lit satellite-style map and is the recommended mode for standard use.
Base Color / Albedo
Exports material base color without normal scene lighting. Useful for technical maps or custom post-processing.
World Normal
Exports world-space normal information for technical workflows and custom analysis.
Visual Preset
Clean Satellite (Recommended)
Removes atmospheric and cinematic effects from the SceneCapture only, including common sources of washed-out or inconsistent map imagery.
The level itself is not modified.
The Clean Satellite preset removes or suppresses effects such as:
– atmospheric haze
– height fog
– volumetric fog
– clouds
– bloom
– lens flares
– lens distortion
– depth of field
– vignette
– film grain
Normal scene lighting, shadows, materials and SkyLight contribution are retained.
Use World Atmosphere / Rendering
Captures the level using its normal atmospheric rendering.
Use this option when fog, haze, clouds or cinematic atmosphere are intentionally part of the desired map appearance.
Warmup Captures
Defines how many temporary capture passes are performed after the camera moves to a new tile before the final image is read back.
Warmup captures allow systems such as temporal rendering, Lumen and virtualized rendering to settle.
Default: 2
Increase this value if neighboring tiles show temporal inconsistencies or incomplete lighting updates.
Lock Exposure
Uses one fixed exposure for all tiles.
This is strongly recommended for tiled maps.
Without fixed exposure, bright areas such as snow or water and dark areas such as forests can cause neighboring tiles to use different automatic exposure values, creating visible rectangular brightness changes in the final map.
Exposure Compensation
Adjusts map brightness when Lock Exposure is enabled.
Recommended starting value: 0.0
Positive values brighten the map.
Negative values darken the map.
Always perform a small test export before changing exposure for a large map.
Disable Motion Blur
Disables motion blur for the SceneCapture.
Recommended because the capture camera jumps directly between map tiles rather than moving continuously through the world.
Use Fixed Camera Z
When disabled, the plugin automatically places the orthographic camera above the highest relevant world bounds.
Enable this only when an exact camera height is required.
Fixed Camera Z
Absolute world-space Z position used when Use Fixed Camera Z is enabled.
Camera Height Padding
Additional height added above detected world content when automatic camera placement is used.
Increase this value if very tall geometry is clipped from the capture.
WORLD PARTITION
Auto Load World Partition Actors
For World Partition levels, the plugin can temporarily hold references to actors whose descriptors intersect the current tile before capture.
The workflow is:
1. determine the current tile area
2. temporarily load relevant World Partition actors
3. capture the tile
4. release the temporary references
5. move to the next tile
This avoids requiring the entire world to remain loaded at once.
This workflow is especially useful for:
– large open worlds
– World Partition projects
– UE 5.8 Mesh Terrain / Mesh Partition worlds
Mesh Terrain is captured through Unreal Engine’s renderer and is not a hard dependency of Satellite Map Generator.
World Partition Load Padding
Loads an additional world-space area around each tile.
This can help when large actors, shadows, foliage or effects just outside the tile influence the visible capture.
Default: 250 m
TRANSPORT OVERLAY
Transport Overlay draws clean cartographic roads and railways after the satellite capture.
This solves a common satellite-map problem: distant road or railway meshes may become low-detail, disappear because of draw distance, become hidden by foliage, or be difficult to distinguish from the terrain.
Because the overlay is generated from spline geometry, it remains readable independently of the rendered road mesh.
Supported transport classes:
– Main Road
– Secondary Road
– Forest Track
– Railway
Draw Transport Overlay
Enables or disables transport overlay rendering.
Use Spline Components
Scans standard Unreal actors and components containing USplineComponent geometry.
Use this for Blueprint or actor-based road systems built from normal spline components.
Use Landscape Splines
Scans Landscape Spline segments and their metadata.
Use this for roads and railways authored with the Landscape spline system.
Both normal spline components and Landscape Splines can be enabled at the same time.
TRANSPORT CLASSIFICATION
Classification is based on configurable comma-separated filters.
The plugin can match data from:
– actor names
– actor labels
– actor classes
– class paths
– actor tags
– component names
– component tags
– material names
– material paths
– Landscape Spline layers
– spline-mesh names
Matching is case-insensitive.
Recommended naming examples:
Road_Main
Road_Secondary
Road_Forest
Railway
Railway matching has the highest classification priority so broad terms such as road or track do not override a railway classification.
Main Road
Default filter:
main, highway, arterial, asphalt
Default width:
9 m
Use this class for highways, primary roads and major paved routes.
Secondary Road
Default filter:
secondary, side, street, road
Default width:
6 m
Use this class for smaller paved roads, local streets and secondary routes.
Forest Track
Default filter:
forest, dirt, path, trail, track, gravel, macadam
Default width:
4 m
Use this class for dirt roads, forest roads, trails and unpaved tracks.
Railway
Default filter:
rail, railway, train, pruga
Default width:
5 m
Railways can be drawn as a solid route or as a repeating cartographic pattern.
Railway Dashed
Enables a repeating railway pattern instead of a simple solid line.
Black / White Railway Pattern
When enabled, the plugin first draws a continuous dark railway base and then draws equally spaced light segments over it.
This prevents the terrain underneath from showing through the gaps and keeps the railway pattern visually consistent over snow, grass, water and the original railway mesh.
Default dash length:
12 m
Default gap length:
8 m
Dash and gap lengths are measured in world space along the spline, so the pattern remains consistent through curves and at different output resolutions.
Transport Outline
Draws a contrasting outline beneath roads and railways to improve readability over bright, dark or visually complex terrain.
Outline Extra Pixels controls the additional outline radius in output pixels.
FILTERING
Exclude Actor Filters
Comma-separated actor tags or actor/class name fragments excluded from the SceneCapture.
The default filter excludes SatelliteMapGenerator and SceneCapture helper actors so the plugin does not capture its own temporary objects.
Use this setting to exclude additional project-specific actors if required.
ANALYZE BOUNDS
Analyze Bounds should be used before a large export.
The analysis reports information such as:
– capture width and height
– output tile grid
– total tile count
– selected rotation
– centimeters per pixel
– maximum zoom level
– equivalent full-detail map resolution
If the tile count is unexpectedly large, do not start the export. Change the Capture Area Mode to Selected Actors or Manual Bounds and analyze again.
The plugin includes a safety limit to prevent accidental generation of unreasonable tile counts.
OUTPUT STRUCTURE
Example tiled output:
SatelliteMaps/
└── Panonia/
├── Full/
│ └── Panonia_Satellite.png
├── Tiles/
│ ├── Z0/
│ │ └── Panonia_Z0_X0_Y0.png
│ ├── Z1/
│ │ └── …
│ └── Z3/
│ ├── Panonia_Z3_X0_Y0.png
│ ├── Panonia_Z3_X1_Y0.png
│ └── …
└── map.json
The exact maximum zoom level depends on the exported tile grid dimensions.
ZOOM PYRAMID
The highest zoom level contains the original captured tiles.
Lower zoom levels are generated from those tiles without re-rendering the Unreal level.
Example for an 8 x 8 highest-detail tile grid:
Z3 = 8 x 8 tiles
Z2 = 4 x 4 tiles
Z1 = 2 x 2 tiles
Z0 = 1 x 1 tile
This structure allows a runtime map interface to load only the amount of detail required for the current zoom level.
MAP.JSON METADATA
When Write Metadata JSON is enabled, map.json contains information including:
– generator name and version
– map name
– tile world size in meters
– tile resolution
– tiles X/Y
– maximum zoom level
– meters per pixel
– visual preset
– fixed exposure state
– exposure compensation
– map rotation
– transport overlay configuration
– image right axis
– image down axis
– full image dimensions
– world bounds in centimeters
– whether tiles were exported
– whether a zoom pyramid was generated
– tile filename pattern
– information for each zoom level
The exported image orientation is also described using imageRightAxis and imageDownAxis.
Examples:
0 degrees:
Image right = +X
Image down = +Y
90 degrees clockwise:
Image right = -Y
Image down = +X
180 degrees:
Image right = -X
Image down = -Y
90 degrees counter-clockwise:
Image right = +Y
Image down = -X
Tile X/Y indices always follow the exported image orientation.
USING THE OUTPUT IN A RUNTIME MAP
Satellite Map Generator does not require a runtime component.
The exported map.json provides the information required for a custom runtime map system to convert Unreal world positions into map coordinates.
A typical runtime workflow is:
1. Read worldBoundsCm from map.json.
2. Normalize the player’s world X/Y position inside those bounds.
3. Apply the exported map orientation described by mapRotationDegrees, imageRightAxis and imageDownAxis.
4. Determine the required zoom level.
5. Convert the normalized map position to Tile X/Y.
6. Load only the required tile or nearby tiles.
7. Convert the local tile position to UV/pixel coordinates for the player marker.
The tile filename pattern is stored in map.json.
RECOMMENDED SETTINGS
Fast Test Export
Tile World Size: 1000 m
Tile Resolution: 2048
Overscan: 3%
Visual Preset: Clean Satellite
Warmup Captures: 2
Lock Exposure: Enabled
Exposure Compensation: 0.0
Transport Overlay: Enabled
Production Open-World Export
Tile World Size: 1000 m
Tile Resolution: 4096
Overscan: 3-5%
Visual Preset: Clean Satellite
Warmup Captures: 2-4
Lock Exposure: Enabled
Generate Zoom Pyramid: Enabled
Write Metadata JSON: Enabled
Auto Load World Partition Actors: Enabled for World Partition projects
Very High Detail Export
Tile Resolution: 8192
Use only when the additional detail is necessary. 8192 px tiles significantly increase capture time, memory use, PNG compression time and disk usage.
TROUBLESHOOTING
The map is almost black
If using an older plugin configuration, disable Lock Exposure for a quick test or reset the exposure settings.
In current versions, fixed exposure disables physical camera exposure for the SceneCapture. Start with Exposure Compensation at 0.0.
Neighboring tiles have different brightness
Enable Lock Exposure.
Automatic exposure can adapt independently for each tile, especially when one tile contains snow, water or bright terrain while another contains dark forest.
The map looks foggy or washed out
Use Visual Preset: Clean Satellite.
This removes atmospheric haze, fog, clouds and common cinematic lens effects from the SceneCapture without modifying the level.
The plugin reports a huge or unrealistic tile count
The selected automatic bounds likely include an actor with extremely large bounds.
Use:
Selected Actors
or
Manual Bounds
Then click Analyze Bounds again.
For a standard Landscape, Selected Actors is generally the safest option.
Roads disappear or are difficult to see
Enable Transport Overlay and verify the route classification filters.
The transport overlay is generated from spline geometry and does not depend on road mesh LOD or draw distance.
A road is classified as the wrong type
Adjust the class filter keywords or rename/tag the road actor or spline component.
Recommended identifiers:
Road_Main
Road_Secondary
Road_Forest
Railway
Railway classification has the highest priority.
Very tall objects are clipped
Increase Camera Height Padding or enable Use Fixed Camera Z and choose a sufficiently high world-space Z position.
Tile seams are visible
Try the following:
– increase Overscan
– increase Warmup Captures
– keep Lock Exposure enabled
– use Clean Satellite
– verify that animated weather, wind or other time-dependent effects are stable during export
WORLD PARTITION CONTENT IS MISSING
Enable Auto Load World Partition Actors and increase World Partition Load Padding if necessary.
Large actors or effects whose origin is outside the current tile may require additional loading padding.
NOTES ABOUT UE 5.8 MESH TERRAIN
Satellite Map Generator does not require Mesh Terrain as a hard plugin dependency.
Mesh Terrain / Mesh Partition geometry is captured through Unreal Engine’s normal rendering pipeline.
This allows the same Satellite Map Generator workflow to support:
– classic Landscape
– UE 5.8 Mesh Terrain / Mesh Partition
– static-mesh terrain
– Nanite geometry
– mixed terrain systems
For large Mesh Terrain worlds using World Partition, Auto Load World Partition Actors is recommended.
WORKFLOW TIPS
– Always run Analyze Bounds before a large export.
– Use 2048 px tiles while configuring the plugin.
– Move to 4096 px only after the test export is correct.
– Keep Clean Satellite enabled unless atmospheric effects are intentionally required.
– Keep Lock Exposure enabled for tiled maps.
– Use meaningful spline names or tags for reliable transport classification.
– Use Selected Actors for normal Landscape projects when automatic world bounds include unrelated actors.
– Keep tiled output if the map may later be used for runtime streaming.
– Enable map.json even if it is not immediately needed; it preserves the map-to-world relationship for future systems.
COPYRIGHT
Copyright (c) 2026 Digital Gods. All rights reserved.

