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
| Grenze | Garry's Mod | Source SDK 2013 | Was zählt |
|---|---|---|---|
| Koordinatenraum | ±16384 Units je Achse | ±16384 Units je Achse | die gesamte Map einschließlich 3D-Skybox |
| Brushes | 65535 | 8192 | jeder Brush, auch func_detail und Brushes in Entities |
| Brush-Entities | 4096 | 1024 | jedes Entity aus Brushes, etwa func_door, func_brush oder Trigger; die Welt selbst belegt einen Platz |
| Planes, Faces, Vertices | je 65536 | je 65536 | die kompilierte Geometrie |
| Displacements | 16384 | 2048 | jede Displacement-Fläche |
| Overlays | 8192 | 512 | jedes info_overlay |
| Lightmap-Daten | kein Maximum in der Auslastungstabelle | 16 MB im Header, kein Maximum in der Auslastungstabelle | alle Lightmaps zusammen |
| Edicts zur Laufzeit | 8192 | 2048 | vernetzte 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_BRUSHESoderMAX_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, etwadispinfosund 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
- Props statt Brushes. Geländer, Rohre, Möbel, Bögen und andere Details mit vielen Flächen gehören in Models. Ein
prop_staticzählt weder als Brush noch als Entity zur Laufzeit, weil es fest in die BSP geschrieben wird. - 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.
func_detailrichtig 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.- 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.
- 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
- Brushes zu einem Entity zusammenfassen. Zehn Fensterscheiben als zehn
func_brushbelegen zehn Plätze. Markierst du alle und bindest sie gemeinsam an ein Entity, ist es einer. Brauchen sie keine Entity-Funktion, werden siefunc_detailund belegen gar keinen. - Statische Props bevorzugen. Was sich nie bewegt, wird
prop_staticstattprop_dynamicoderprop_physics. - Lichter ohne Namen lassen. Ein
lightohne Namen wird in die Lightmaps eingerechnet und existiert im Spiel nicht mehr als Entity. Vergib Namen nur an Lichter, die du wirklich schalten willst. - 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.
- 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.