Mapping & Hammer

Source Engine Map-Limits: Grenzen für Brushes und Entities

Source Engine Map-Limits im Überblick: Koordinatenraum, Brushes, Entities, Displacements und Lightmaps, typische MAX_MAP-Fehler und Gegenmaßnahmen.

Eine Source-Map ist in mehreren Richtungen begrenzt: im Koordinatenraum (±16384 Units pro Achse), in der Zahl der Brushes, Brush-Entities, Flächen, Displacements und Overlays und zur Laufzeit in der Zahl der Entities. Garry's Mod hat mehrere dieser Grenzen deutlich über die Standardwerte des Source SDK 2013 angehoben. Überschreitest du eine Grenze, bricht der Compiler mit einer Meldung wie MAX_MAP_BRUSHES ab, oder das Spiel stürzt beim Laden oder im Betrieb ab. Gegensteuern kannst du vor allem mit Props statt Brushes und mit zusammengefassten Entities.

Die wichtigsten Grenzen im Überblick

GrenzeGarry's ModSource SDK 2013Was zählt
Koordinatenraum±16384 Units je Achse±16384 Units je Achsedie gesamte Map einschließlich 3D-Skybox
Brushes655358192jeder Brush, auch func_detail und Brushes in Entities
Brush-Entities40961024jedes Entity aus Brushes, etwa func_door, func_brush oder Trigger; die Welt selbst belegt einen Platz
Planes, Faces, Verticesje 65536je 65536die kompilierte Geometrie
Displacements163842048jede Displacement-Fläche
Overlays8192512jedes info_overlay
Lightmap-Datenkein Maximum in der Auslastungstabelle16 MB im Header, kein Maximum in der Auslastungstabellealle Lightmaps zusammen
Edicts zur Laufzeit81922048vernetzte Entities im laufenden Spiel

Die Spalte für Garry's Mod zeigt bei den Compile-Grenzen, was GMods eigene Compile-Tools in ihrer Auslastungstabelle als Maximum ausgeben (Stand September 2026). Für Displacements nennt die Tabelle kein Maximum, 16384 ist deshalb die Angabe aus dem Wiki der Valve Developer Community, die ein Test-Compile bestätigt hat. Auch das Edict-Limit ist der Wert, den dieses Wiki für GMod nennt. Die SDK-Spalte enthält die Standardwerte aus dem Quellcode des Source SDK 2013, die ältere Listen meist zitieren. Community-Compiler weichen wiederum ab. Verbindlich ist immer die Tabelle im Log deines eigenen Compilers, die weiter unten beschrieben wird.

Was der Koordinatenraum bedeutet

Das Raster in Hammer endet in jeder Richtung bei 16384 Units. Eine Map kann also höchstens 32768 Units lang, breit und hoch sein. Bei rund 1,9 Zentimetern pro Unit sind das gut 600 Meter Kantenlänge. Außerhalb davon lässt sich keine Geometrie anlegen.

In der Praxis stößt du selten zuerst an diese Wand. Sehr große, offene Maps scheitern vorher an der Sichtbarkeitsberechnung und an der Bildrate. Weite Landschaften täuschst du besser mit einer 3D-Skybox vor, die im Maßstab 1:16 gebaut wird und deshalb wenig Platz belegt.

Woran du merkst, dass du an eine Grenze stößt

  • Fehler beim Compile: VBSP oder VRAD brechen ab und nennen die betroffene Grenze beim Namen, zum Beispiel MAX_MAP_BRUSHES oder MAX_MAP_PLANES. Wie du solche Meldungen findest, zeigt Compile-Log lesen.
  • Die Auslastungstabelle: Am Ende des VRAD-Logs steht eine Tabelle, die für jeden Datenbereich der BSP die belegte und die maximale Menge sowie den Füllstand in Prozent zeigt. Nähert sich ein Wert seinem Maximum, markiert der Compiler die Zeile mit VERY FULL!. Bereiche ohne festes Maximum, etwa dispinfos und die Lichtdaten, zeigen dort eine 0 und werden nie markiert. Sieh dir diese Tabelle vor jedem Release an.
  • Absturz im Spiel: Sind zur Laufzeit alle Edicts belegt, beendet sich das Spiel mit einer Meldung wie ED_Alloc: no free edicts. Das passiert oft erst auf einem vollen Server, wenn viele Spieler Props spawnen.
  • Hammer blockiert: Objekte lassen sich nicht über den Rand des Rasters hinaus verschieben.

Kannst du eine Meldung nicht einordnen, füge das Log im Map Scanner ein. Er erkennt in VBSP-, VVIS- und VRAD-Logs Ursachen und Folgefehler. Bekannte Meldungen findest du auch in der Fehlerdatenbank.

Gegensteuern bei der Geometrie

  1. Props statt Brushes. Geländer, Rohre, Möbel, Bögen und andere Details mit vielen Flächen gehören in Models. Ein prop_static zählt weder als Brush noch als Entity zur Laufzeit, weil es fest in die BSP geschrieben wird.
  2. Brushwork vereinfachen. Wenige große Brushes sind besser als viele kleine. Zerschnittene Reste aus dem Carve-Werkzeug treiben Brush- und Flächenzahl unnötig hoch.
  3. func_detail richtig einordnen. Es verringert Visleafs und Portale und verkürzt damit VVIS. Die Brush-Grenze entlastet es nicht, denn ein Detail-Brush bleibt ein Brush. Mehr dazu in GMod Map optimieren.
  4. Displacements sparsam einsetzen. Nutze wenige große statt vieler kleiner Flächen und keine höhere Auflösung als nötig. Fernes Gelände wandert in die 3D-Skybox oder in ein Model.
  5. Lightmaps entlasten. Erhöhe die Lightmap Scale auf großen Flächen, auf denen keine scharfen Schatten nötig sind. Ein festes Maximum für Lichtdaten nennen die Tools nicht, sie vergrößern aber die BSP.

Gegensteuern bei den Entities

  1. Brushes zu einem Entity zusammenfassen. Zehn Fensterscheiben als zehn func_brush belegen zehn Plätze. Markierst du alle und bindest sie gemeinsam an ein Entity, ist es einer. Brauchen sie keine Entity-Funktion, werden sie func_detail und belegen gar keinen.
  2. Statische Props bevorzugen. Was sich nie bewegt, wird prop_static statt prop_dynamic oder prop_physics.
  3. Lichter ohne Namen lassen. Ein light ohne Namen wird in die Lightmaps eingerechnet und existiert im Spiel nicht mehr als Entity. Vergib Namen nur an Lichter, die du wirklich schalten willst.
  4. Effekte zählen. Sprites, Seile, Partikel und Soundquellen sind einzeln harmlos, in großer Zahl aber spürbar. Manche Entities erzeugen im Spiel zusätzliche Hilfs-Entities.
  5. Reserve einplanen. Auf einem Server kommen Spieler, Waffen, Fahrzeuge und gespawnte Props hinzu. Eine Map, die leer schon nahe an der Grenze liegt, läuft im Betrieb nicht stabil.

Häufige Fragen

Wie groß kann eine GMod-Map maximal sein?

Der Koordinatenraum reicht auf jeder Achse von -16384 bis +16384 Units, also 32768 Units Kantenlänge. Das entspricht gut 600 Metern. Größere Welten wirken nur über eine 3D-Skybox größer.

Zählt func_detail als Brush?

Ja. Ein func_detail zählt bei der Brush-Grenze mit, aber nicht bei den Brush-Entities und nicht als Entity zur Laufzeit. Sein Nutzen liegt bei der Sichtbarkeitsberechnung.

Was bedeutet VERY FULL! im Compile-Log?

Die Markierung steht in der Auslastungstabelle am Ende des Logs und zeigt, dass ein Datenbereich der BSP fast voll ist. Die Map funktioniert dann noch, hat aber kaum Spielraum für weitere Inhalte. Reduziere gezielt den Bereich, der in der Zeile genannt wird.

Kann ich die Limits erhöhen?

Nicht über Einstellungen in der Map. Die Grenzen sind in den Compile-Tools und in der Engine festgelegt. Garry's Mod hat mehrere davon in Updates angehoben, zum Beispiel das Overlay-Limit im März 2024 auf 8192. Zuverlässig ist nur, die Map so zu bauen, dass sie mit Reserve darunter bleibt.