OpenRA/OpenRA · error · Exception

Failed to generate map metadata

Error message

Failed to generate map metadata

What it means

A matching generator was found, but its TryGenerateMetadata returned false, meaning it rejected the generation arguments (e.g. invalid size, tileset, or player count) and produced no metadata.

Source

Thrown at OpenRA.Game/Map/MapPreview.cs:488

			newData.Class = MapClassification.Generated;
			newData.Status = MapStatus.Generatable;
			newData.Title = args.Title;
			newData.Author = args.Author;
			newData.TileSet = args.Tileset;
			newData.GenerationArgs = args;
			newData.MapFormat = Map.CurrentMapFormat;

			try
			{
				var generator = modData.DefaultRules.Actors[SystemActors.EditorWorld]
					.TraitInfos<IMapGeneratorInfo>()
					.FirstOrDefault(info => info.Type == args.Generator);

				if (generator == null)
					throw new Exception($"Unknown map generator type {args.Generator}");

				if (!generator.TryGenerateMetadata(modData, args, out var players, out var ruleDefinitions))
					throw new Exception("Failed to generate map metadata");

				newData.Players = players;
				newData.PlayerCount = newData.Players.Players.Count(x => x.Value.Playable);
				newData.SetCustomRules(modData, this, ruleDefinitions, null);

				// Placeholder to satisfy server-side lint checks
				newData.SpawnPoints = Exts.MakeArray(newData.PlayerCount, i => new CPos(i, i)).ToImmutableArray();
			}
			catch (Exception e)
			{
				Log.Write("debug", "Map generation failed with error:");
				Log.Write("debug", e);

				newData.Status = MapStatus.Unavailable;
			}

			lock (syncRoot)
				innerData = newData;

View on GitHub (pinned to a520984d91)

Solutions

  1. Inspect the generator's TryGenerateMetadata implementation to see which args it rejects.
  2. Validate generation args (size, tileset, player count) against the generator's documented limits before calling.
  3. Check the debug log around the failure for the generator's internal reason.
Defensive patterns

Strategy: try-catch

Validate before calling

if (!generator.TryGenerateMetadata(modData, args, out var players, out var rules))
    throw new Exception($"Generator {generator.Type} rejected args: size={args.Size} tileset={args.Tileset}");

Try / catch

try { /* generate metadata */ }
catch (Exception e) when (e.Message.Contains("Failed to generate map metadata"))
{ /* inspect args vs generator limits */ }

Prevention

When it happens

Trigger: MapPreview metadata path: generator != null but generator.TryGenerateMetadata(modData, args, ...) returns false.

Common situations: Generation args with an unsupported map size, missing tileset, or out-of-range player count; a generator implementation that imposes limits the caller exceeded.

Related errors


AI-assisted analysis of OpenRA/OpenRA@a520984d91 (2026-08-13). Data as JSON: /api/errors/9c38a1f42c6c4c46. Report an issue: GitHub.