El mundo de Warman no es un mapa abierto continuo. Es un grafo de salas conectadas por portales. Cada sala es una unidad autonoma con su propio terreno, enemigos, objetos y logica. Cuando un jugador entra en un portal, la sala objetivo se carga (si aun no lo esta) y el jugador se teletransporta a la posicion de destino del portal.
Archivos de Sala
Cada sala se almacena como un RoomFile, una estructura de datos binaria que contiene la cuadricula de terreno, las colocaciones de doodads, las posiciones de spawners de enemigos, las ubicaciones de cofres, los datos de portales y los hooks de scripts WarScript. El formato usa el mismo sistema IBinarySerializable que todo lo demas en Warman.
Carga Perezosa
Las salas se cargan en la primera entrada, no al inicio. Cuando un jugador entra en un portal, el sistema verifica si la sala objetivo ya esta instanciada. Si no lo esta, la carga desde el archivo de sala, construye la cuadricula de terreno, instancia los doodads, genera la cuadricula de pathfinding y registra los spawners de enemigos. Este proceso tarda menos de un segundo.
La contabilidad por sala importa para el rendimiento. Cuando un jugador esta en la Sala A, el juego solo hace tick de los enemigos, proyectiles y efectos de suelo de la Sala A. Las salas que nadie esta visitando quedan inactivas. Los tiempos de carga son casi instantaneos independientemente del tamano del mapa. Un escenario con 50 salas carga igual de rapido que uno con 5, porque solo se carga la sala de spawn al inicio.
Escenarios
Un escenario es una coleccion de archivos de sala mas un archivo de definicion de mapa que describe como se conectan. La definicion de mapa lista los archivos de sala, las conexiones de portales entre salas, la sala de spawn, y los metadatos del escenario. El juego base se carga como un escenario. Los escenarios personalizados (mods) usan exactamente el mismo sistema. El archivo de definicion de mapa alimenta el grafo de salas, los archivos de guardado, la UI del mapa mundial y los portales.