Server & Community

GMod Map benennen und versionieren: Präfix, Dateiname, Updates

So benennst du eine GMod-Map: Präfix, Dateiname, Versionsschema und warum ein Update nie den alten Dateinamen behalten darf. Mit Liste der Begleitdateien.

Eine GMod-Map bekommt einen Dateinamen aus Kleinbuchstaben, Ziffern und Unterstrichen, mit dem Präfix des Spielmodus vorn und einer Versionskennung hinten, zum Beispiel rp_hafenstadt_v2. Jede veröffentlichte Änderung erhält einen neuen Namen. Der Grund: Client und Server erkennen eine Map am Dateinamen, und wer unter diesem Namen schon eine Datei hat, lädt keine neue. Unterscheiden sich die beiden Dateien, bricht der Verbindungsversuch mit einer Fehlermeldung ab.

Präfixe: was GMod wirklich damit macht

Das Präfix ist eine Konvention und kein Schalter. Im Lua-Code, den das Spiel mitbringt, wird es an einer Stelle ausgewertet: Das Hauptmenü sortiert Maps damit in Kategorien und blendet Maps aus, die mit sdk_, test_ oder vst_ beginnen. Die Zuordnung steht in garrysmod/lua/menu/getmaps.lua. Als Präfix gilt dort alles bis einschließlich des ersten Unterstrichs, der Name wird vorher in Kleinbuchstaben umgewandelt. Zusätzlich kann jeder Spielmodus in seiner Textdatei über den Schlüssel maps eigene Muster anmelden. Sandbox meldet ^gm_|^gmod_|^phys_ an, TTT ^ttt_.

PräfixKategorie im Menü
gm_, gmod_, phys_Sandbox
ttt_Trouble in Terrorist Town
rp_Roleplay
zs_, zm_, zombiesurvival_Zombie Survival
ph_Prop Hunt
surf_Surf
bhop_Bunny Hop
de_, cs_Counter-Strike

Was auf kein Muster passt, landet unter „Other“. Solange der Spielmodus Murder nicht installiert ist, gehört mu_ dazu: In der mitgelieferten Liste steht das Präfix nicht. Murder meldet ^md_|^mu_|^murder_ selbst über seinen Schlüssel maps an. Welcher Spielmodus auf einem Server läuft, legt der Startparameter +gamemode fest und nicht die Map. Wähle das Präfix des Modus, für den die Map gebaut ist.

Regeln für den Dateinamen

  • Nur Kleinbuchstaben. Linux unterscheidet Groß- und Kleinschreibung, Windows nicht. Eine RP_Stadt.bsp, die auf deinem Rechner lädt, findet ein Linux-Server oder ein FastDL-Webserver unter rp_stadt.bsp nicht. gmad.exe markiert Großbuchstaben beim Bauen eines Workshop-Addons mit [Filename contains captial letters].
  • Keine Leerzeichen, Umlaute oder Sonderzeichen. Der Mapname ist Argument von Konsolenbefehlen wie changelevel und Teil der FastDL-Adresse. In der Konsole trennt ein Leerzeichen Argumente, in einer Webadresse muss es kodiert werden. Mit a bis z, 0 bis 9 und _ gehst du beidem aus dem Weg.
  • Kurz und eindeutig. Eine feste Obergrenze für die Länge nennt dieser Artikel nicht, weil sich für GMod keine verlässliche Quelle fand. Heißt deine Map wie eine verbreitete fremde Map, entsteht derselbe Konflikt wie bei zwei Versionen unter einem Namen.
  • Vor den Cubemaps festlegen. Die Cubemaps liegen im Pakfile unter materials/maps/<mapname>/. Mehr dazu steht im Artikel Cubemaps und Reflexionen beheben.

Ein Versionsschema, das hält

Für die Versionskennung macht die Engine keine Vorgabe. Die folgenden Anhänge sind Community-Praxis:

AnhangBedeutungEinsatz
_a1, _a2AlphaLayout-Tests, noch ohne Details
_b1, _b2Betaspielbar, wird noch geändert
_rc1Release Candidategilt als fertig, falls kein Fehler mehr auftaucht
_v1, _v2Releaseveröffentlichte Fassungen, fortlaufend gezählt
_final„endgültig“besser vermeiden

_final ist eine Falle, weil nach der endgültigen Fassung oft doch noch ein Fehler auftaucht. Dann heißt die nächste Datei _final2 oder _final_fix, und niemand erkennt mehr am Namen, welche neuer ist. Für die meisten Projekte reicht _b1, _b2 während der Tests und danach _v1, _v2, _v3.

Zähle auch bei kleinen Korrekturen hoch, denn jede Änderung ergibt eine andere Datei.

Was passiert, wenn zwei Dateien gleich heißen

Der Client prüft beim Verbinden, ob er maps/<mapname>.bsp schon hat. Fehlt die Datei, lädt er sie und legt sie unter garrysmod/download/maps ab. Ist sie vorhanden, lädt er nichts, und die Engine vergleicht nur die Prüfsumme mit der des Servers. Weichen beide ab, endet der Verbindungsversuch mit einer Meldung dieser Form:

Your map [maps/rp_hafenstadt_v2.bsp] differs from the server's.

Der Spieler muss die alte Datei dann von Hand löschen, und das wissen die wenigsten. Dieselbe Verwechslung entsteht auf weiteren Wegen:

  • FastDL: Auf dem Webspace liegt noch die alte .bsp.bz2, auf dem Gameserver schon die neue BSP. Jeder neue Spieler lädt die falsche Datei.
  • Workshop: Steam aktualisiert Abonnenten automatisch. Ein Server prüft seine Addons laut GMod-Wiki bei jedem Neustart. Läuft er noch mit der alten Fassung oder steht host_workshop_autoupdate auf 0, haben Client und Server unterschiedliche Dateien gleichen Namens.
  • Workshop und FastDL gemischt: Ein Teil der Spieler hat die Map aus dem Workshop, ein anderer aus download/maps. Bei gleichem Namen ist nicht mehr nachvollziehbar, wer welche Fassung hat.
  • Gespeicherte Serverdaten: DarkRP speichert Türeinstellungen, Jail-Positionen und Job-Spawns pro Mapnamen, Türen zusätzlich über die Kennung der Map-Entity. Ändert ein Update unter gleichem Namen die Entities, können alte Einträge auf die falschen Türen zeigen.

Mit einem neuen Dateinamen entfällt das: Die alte Datei bleibt beim Spieler liegen, stört aber nicht mehr. Die Einrichtung von Server, FastDL und Workshop erklärt der Artikel GMod Map auf dem Server installieren.

Was den Mapnamen trägt und mit umbenannt werden muss

Eine BSP im Explorer umzubenennen reicht nicht. Laut Valve Developer Community verlieren dann Models und Props ihre Cubemap-Reflexionen, weil die Engine die Cubemaps im Pakfile unter dem Dateinamen der BSP sucht. Der saubere Weg: VMF umbenennen und neu kompilieren. Danach ziehen diese Dateien mit:

DateiInhalt
maps/<mapname>.navNavmesh für Nextbots
maps/graphs/<mapname>.ainNode-Graph für klassische NPCs
scripts/soundscapes_<mapname>.txtSoundscapes der Map
maps/<mapname>_level_sounds.txtSoundscripts der Map
maps/<mapname>_particles.txtPartikel-Manifest der Map
maps/thumb/<mapname>.pngVorschaubild in der Map-Auswahl
maps/<mapname>_ttt.txtWaffen- und Spawn-Skript für TTT

Hinzu kommt alles, was den Namen als Text enthält: die Startmap in der Serverkonfiguration, Mapvote-Listen und Lua-Code, der game.GetMap() mit einem festen Namen vergleicht. Die .ain kopierst du nicht um, sondern lässt sie von der neuen BSP frisch erzeugen, wie im Artikel Navmesh und AI-Nodes beschrieben. Die Reihenfolge von Compile, Cubemaps, Packen und Test zeigt die Checkliste vor dem Release.

Changelog: was Käufer und Serverbetreiber davon haben

Ein neuer Dateiname bedeutet für Serverbetreiber Arbeit: Startmap ändern, FastDL aktualisieren, Positionen neu setzen. Ein Changelog sagt ihnen, ob sich das lohnt. Brauchbare Einträge beantworten vier Fragen:

  • Was wurde behoben, was ist neu?
  • Haben sich Türen, Spawns oder andere Entities geändert, sodass gespeicherte Serverdaten neu gesetzt werden müssen?
  • Wird neuer oder anderer Content vorausgesetzt?
  • Wurden Navmesh und Node-Graph neu erzeugt?

Für Käufer ist der Versionsverlauf außerdem ein Zeichen, dass die Map gepflegt wird. Auf bspmarket.de reichst du eine neue Version im Creator-Bereich mit Versionsnummer und optionalem Changelog ein. Sie wird vor der Veröffentlichung geprüft und erscheint danach auf der Produktseite unter „Versionen & Changelog“. Updates sind für Käufer kostenlos. Was sonst zu einer guten Produktseite gehört, steht im Artikel GMod Maps verkaufen.

Häufige Fragen

Muss ich im Workshop für jede Version einen neuen Eintrag anlegen?

Nein. Die Workshop-Regeln für GMod empfehlen, neue Fassungen als Update des bestehenden Eintrags zu veröffentlichen. Gib der BSP darin trotzdem den neuen Versionsnamen: Dann kann niemand zwei Fassungen verwechseln, und Server müssen nur ihre Startmap anpassen. So oder so übernimmt ein Server das Update erst beim Neustart. Laut GMod-Wiki kann ein Server, der noch eine ältere Fassung der Map fährt, Spieler am Beitritt hindern. Den Ablauf beschreibt der Artikel GMod Map in den Workshop hochladen.

Welches Präfix nehme ich, wenn die Map zu mehreren Spielmodi passt?

Das des Modus, für den sie in erster Linie gebaut ist. Das Präfix bestimmt die Kategorie im Menü und die Erwartung der Spieler. Starten lässt sich eine rp_-Map auch in der Sandbox.

Was mache ich mit alten Versionen auf Server und FastDL?

Lösche sie, sobald der Server auf die neue Version umgestellt ist, auch die .bsp.bz2 und die alten .nav- und .ain-Dateien. Alte Kopien bei den Spielern stören nicht, weil sie anders heißen.