map-blockout

Generates and validates procedural open-world FPS map blockouts from Unreal Engine landscapes.

648|142|Updated Sep 12, 2025
One-click install
npx skills add https://github.com/kevinpbuckley/VibeUE --skill map-blockout
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: map-blockout
Source: https://github.com/kevinpbuckley/VibeUE/tree/main/Content/Skills/map-blockout
Command: npx skills add https://github.com/kevinpbuckley/VibeUE --skill map-blockout

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Designing a coherent open-world FPS map layout by hand is slow and error-prone: roads must connect, POIs must sit on the road network, fields and forests must respect coverage targets, and every element must avoid overlapping rivers, buildings, and each other. This Skill automates that layout process from an existing Unreal Engine landscape and enforces quality through gated validation checks.

Core Features & Use Cases

  • Gated five-stage pipeline: Generates roads, POIs, fields, forests/treelines/scrub, and railways/bridges in sequence, where each stage must pass ordered pass/fail checks before advancing.
  • Landcover grid export: Reads a landscape's heightmap and paint layers in one native call, mapping design categories (crop, soil, flood, forest) to actual layer names.
  • Materialization into engine geometry: Converts the validated plan into landscape splines, painted layers, POI placeholder actors, foliage instances, and bridge meshes.
  • Deterministic output: Produces eight deliverable PNGs (per-stage snapshots, combined map, and heatmaps) using an authoritative color chart, with seed-based reproducibility.
  • Use Case: Given a painted landscape with Crop and Forest layers, run the full pipeline to produce an Arma/Squad-style 12 km map layout, then materialize roads as splines and forests as foliage in the level.

Quick Start

Ask the AI to run the map blockout pipeline on your landscape by mapping the Crop, Forest, and Water paint layers in a MapBlockoutConfig and calling run_full_pipeline_for_landscape with your landscape's actor label.

Frequently Asked Questions about map-blockout

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I generate a procedural FPS map layout in Unreal Engine?

Create a MapBlockoutConfig, map your landscape's paint layers to the crop, forest, and flood categories, then call run_full_pipeline_for_landscape with the landscape's actor label. The pipeline generates roads, POIs, fields, foliage, and railways through five gated stages.

How do I turn a map blockout plan into real level geometry?

Call the materialize methods on the pipeline result: materialize_roads_as_splines for roads, materialize_fields_as_paint for fields, materialize_pois_as_actors for POI placeholders, materialize_forest_as_foliage for trees, and materialize_railway_and_bridges for rail. Each call is independent.

What landscape setup does map blockout require before running?

You need an existing landscape actor with painted weight layers, at minimum a crop-like layer for fields and a forest-like layer for woods. A water layer is optional because water can be synthesized from the low-elevation percentile of the heightmap.

Why does the map blockout pipeline stop at a stage gate?

Each stage runs ordered pass/fail checks, and the orchestrator stops at the first failing gate. Inspect result.final_state for the failing stage's gate.checks to see the check name and message, then adjust config knobs like dirt_spacing_km or forest_fringe_iters and re-run.

Can I re-run the materializers on the same landscape?

The materializers are not idempotent, so running them twice creates duplicate splines, actors, and foliage instances. Delete prior splines, POI folder actors, foliage instances, and repaint affected layers to weight zero before re-running.

How do I fix field or forest coverage check failures?

Fields and forests compete for the same land. Lower field_crop_threshold or paint more cropland to raise field coverage, and raise forest_fringe_iters to widen treeline rings for more tree coverage without consuming field area.