Die Welt von Warman ist kein durchgehendes Level. Es ist eine Sammlung von Räumen, jeder mit eigenem Terrain, Gegnern, Interaktionsobjekten und Navigationsgitter. Räume sind durch Portale miteinander verbunden. Wenn man in ein Portal läuft, wechselt das Spiel zum Zielraum, und dessen Terrain, Pfadfindung und Entities werden aufgebaut.
Raumdateien
Jeder Raum wird durch eine RoomFile definiert, eine binäre Datenstruktur, die das Terrain-Punkt-Gitter, Doodad-Platzierungen und Raum-Metadaten wie Breite, Höhe und Kantenhöhen enthält. Kantenhöhen sind wichtig, weil Räume auf verschiedenen Klippenebenen verbunden werden können. Die Nordkante eines Raums könnte auf Höhe 2 sein, was bedeutet, dass jeder verbundene Raum auf dieser Seite eine passende Kantenhöhe, eine Rampe oder eine Klippenfläche braucht, um den Übergang zu bewältigen.
Die WarmanRoom-Klasse umhüllt eine RoomFile und erstellt das TerrainCell-Gitter daraus. Zellen werden mit ihren Nachbarn verknüpft (oben, rechts, unten, links), damit Klippenerkennung und Texturübergänge funktionieren. Dieses Zellgitter wird sowohl vom Terrain-Renderer als auch vom Pfadfindungssystem konsumiert.
Karten als Sammlungen von Räumen
Eine Karte (GameBase) ist eine Sammlung von Räumen in einem räumlichen Layout. Die Kartendatei definiert, welche Räume existieren, wo sie relativ zueinander sitzen und welche Portale sie verbinden. Wenn ein Spieler einen neuen Raum betritt, teilt die Karte dem Spiel mit, welche RoomFile geladen und wo das GameObject des Raums im Worldspace platziert werden soll.
Jeder Raum verfolgt eine Menge Laufzeit-Zustand: jede Einheit, jeden Gegner, jedes Projektil, Interaktionsobjekt, jede Falle, jeden Bodeneffekt und jedes Decal, das im Raum aktiv ist. Diese Pro-Raum-Buchführung ist wichtig für die Performance. Wenn ein Spieler in Raum A ist, muss das Spiel keine Gegner in Raum B ticken. Die Simulation führt nur vollständige Updates für Räume aus, die mindestens einen Spieler enthalten.
Laden bei Bedarf
Räume werden beim ersten Betreten geladen, nicht alle auf einmal. Wenn das Spiel startet, wird nur der Anfangsraum generiert. Wenn ein Spieler durch ein Portal in einen neuen Raum tritt, wird dessen Terrain generiert, sein Pfadfindungsgitter gebaut, seine Gegner gespawnt und seine Interaktionsobjekte initialisiert. Das macht den anfänglichen Ladebildschirm nahezu sofort, unabhängig von der Kartengröße, ein Szenario mit 50 Räumen lädt genauso schnell wie eines mit 3, weil man nur für den ersten Raum im Voraus bezahlt.
Portale
Portale sind das Bindeglied. Sie sind eine Art Interaktionsobjekt, das bei Auslösung den Spieler in einen Zielraum an einer Zielposition transportiert. Das Portalsystem bewältigt sowohl Übergänge innerhalb einer Karte (zwischen Räumen einer einzelnen Karte) als auch kartenübergreifende Übergänge (zu einer anderen Karte reisen, wie von der Oberwelt in einen Dungeon). Der Portal-Konfigurator im Level-Editor lässt Designer Portal-Verbindungen visuell verdrahten.
Aus Netzwerk-Perspektive sind Raumübergänge einfach ein weiterer UI-Befehl. Die Eingabe des Spielers sendet „Portal öffnen" an die Simulation, die Simulation bewegt den Spieler in den Zielraum, und jeder Client verarbeitet das identisch, weil es Teil des Lockstep-Ticks ist.