Nombrar y versionar mapas GMod: prefijo, nombre de archivo, actualizaciones
Nombrar un mapa de GMod: prefijo, nombre de archivo, versiones y por qué una actualización nunca debe conservar el nombre antiguo. Con los archivos asociados.
Un mapa de GMod recibe un nombre de archivo formado por minúsculas, dígitos y guiones bajos, con el prefijo del modo de juego al principio y una etiqueta de versión al final, por ejemplo rp_harbourtown_v2. Cada cambio publicado recibe un nombre nuevo. El motivo: el cliente y el servidor identifican un mapa por su nombre de archivo, y quien ya tiene un archivo con ese nombre no descarga uno nuevo. Si los dos archivos difieren, el intento de conexión termina con un mensaje de error.
Prefijos: qué hace GMod realmente con ellos
El prefijo es una convención, no un interruptor. En el código Lua que viene con el juego se evalúa en un sitio: el menú principal lo usa para ordenar los mapas en categorías, y oculta los mapas que empiezan por sdk_, test_ o vst_. La asignación está en garrysmod/lua/menu/getmaps.lua. Ahí, el prefijo es todo lo que hay hasta el primer guion bajo, este incluido, y el nombre se convierte antes a minúsculas. Además, cada modo de juego puede registrar sus propios patrones mediante la clave maps de su archivo de texto. Sandbox registra ^gm_|^gmod_|^phys_, TTT registra ^ttt_.
| Prefijo | Categoría en el 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 |
Todo lo que no coincide con ningún patrón acaba en «Other». Mientras el modo de juego Murder no esté instalado, eso incluye mu_: el prefijo no está en la lista que viene con el juego. Murder registra por su cuenta ^md_|^mu_|^murder_ mediante su clave maps. Qué modo de juego funciona en un servidor lo fija el parámetro de arranque +gamemode, no el mapa. Elige el prefijo del modo para el que está hecho el mapa.
Reglas para el nombre de archivo
- Solo minúsculas. Linux distingue entre mayúsculas y minúsculas, Windows no. Un
RP_Town.bspque carga en tu equipo no lo encuentra un servidor Linux ni un servidor web de FastDL comorp_town.bsp. Al crear un addon de Workshop,gmad.exemarca las mayúsculas con[Filename contains captial letters]. - Sin espacios, letras acentuadas ni caracteres especiales. El nombre del mapa es un argumento de comandos de consola como
changelevely forma parte de la dirección de FastDL. En la consola, un espacio separa argumentos; en una dirección web hay que codificarlo. Conaaz,0a9y_evitas las dos cosas. - Corto y único. Este artículo no da un límite fijo de longitud, porque no se pudo encontrar ninguna fuente fiable para GMod. Si tu mapa se llama igual que un mapa muy extendido de otra persona, tienes el mismo conflicto que con dos versiones bajo un mismo nombre.
- Decídelo antes de generar los cubemaps. Los cubemaps se guardan en el pakfile en
materials/maps/<mapname>/. Consulta arreglar cubemaps y reflejos.
Un esquema de versiones que aguanta
El motor no impone ninguna etiqueta de versión. Los siguientes sufijos son práctica de la comunidad:
| Sufijo | Significado | Uso |
|---|---|---|
_a1, _a2 | Alpha | pruebas de layout, todavía sin detalle |
_b1, _b2 | Beta | jugable, sigue cambiando |
_rc1 | Release candidate | se da por terminada salvo que aparezca otro bug |
_v1, _v2 | Release | versiones publicadas, numeradas de forma consecutiva |
_final | «final» | mejor evitarlo |
_final es una trampa, porque después de la versión final a menudo aparece otro bug. Entonces el siguiente archivo se llama _final2 o _final_fix, y nadie puede saber por el nombre cuál es más reciente. Para la mayoría de los proyectos basta con _b1, _b2 durante las pruebas y después _v1, _v2, _v3.
Sube el número también con las correcciones pequeñas, porque cada cambio produce un archivo distinto.
Qué pasa cuando dos archivos comparten nombre
Al conectarse, el cliente comprueba si ya tiene maps/<mapname>.bsp. Si el archivo falta, lo descarga y lo guarda en garrysmod/download/maps. Si está, el cliente no descarga nada, y el motor solo compara la suma de comprobación con la del servidor. Si las dos difieren, el intento de conexión termina con un mensaje de esta forma:
Your map [maps/rp_harbourtown_v2.bsp] differs from the server's.
El jugador tiene entonces que borrar el archivo antiguo a mano, y muy pocos lo saben. La misma confusión se produce por otras vías:
- FastDL: El espacio web todavía tiene el
.bsp.bz2antiguo, mientras que el servidor de juego ya tiene el BSP nuevo. Cada jugador nuevo descarga el archivo equivocado. - Workshop: Steam actualiza a los suscriptores automáticamente. Según la wiki de GMod, un servidor comprueba sus addons en cada reinicio. Si sigue funcionando con la versión antigua, o
host_workshop_autoupdateestá en0, el cliente y el servidor tienen archivos distintos con el mismo nombre. - Workshop y FastDL mezclados: Algunos jugadores tienen el mapa de Workshop, otros de
download/maps. Con un solo nombre, nadie puede saber quién tiene qué versión. - Datos guardados del servidor: DarkRP guarda los ajustes de las puertas, las posiciones de jail y los spawns de los jobs por nombre de mapa, y las puertas además por el ID de la entity del mapa. Si una actualización con el mismo nombre cambia las entities, las entradas antiguas pueden apuntar a las puertas equivocadas.
Un nombre de archivo nuevo elimina todo eso: el archivo antiguo se queda en el disco del jugador, pero ya no estorba. La configuración del servidor, FastDL y Workshop se explica en instalar un mapa de GMod en un servidor.
Qué lleva el nombre del mapa y hay que renombrar con él
Renombrar un BSP en el explorador de archivos no basta. Según la Valve Developer Community, los modelos y los props pierden entonces sus reflejos de cubemap, porque el motor busca los cubemaps en el pakfile bajo el nombre de archivo del BSP. La forma limpia: renombrar el VMF y compilar de nuevo. Después, estos archivos cambian de nombre con él:
| Archivo | Contenido |
|---|---|
maps/<mapname>.nav | Navmesh para Nextbots |
maps/graphs/<mapname>.ain | Grafo de nodos para los NPC clásicos |
scripts/soundscapes_<mapname>.txt | Soundscapes del mapa |
maps/<mapname>_level_sounds.txt | Soundscripts del mapa |
maps/<mapname>_particles.txt | Manifiesto de partículas del mapa |
maps/thumb/<mapname>.png | Miniatura en la selección de mapas |
maps/<mapname>_ttt.txt | Script de armas y spawns para TTT |
A eso se suma todo lo que contiene el nombre como texto: el mapa inicial en la configuración del servidor, las listas de votación de mapas y el código Lua que compara game.GetMap() con un nombre fijo. No copies el .ain; deja que el BSP nuevo lo genere desde cero, como se describe en navmesh y AI nodes. El orden de compilación, cubemaps, empaquetado y pruebas se muestra en la checklist previa a la publicación.
Changelog: qué ganan con él los compradores y los propietarios de servidor
Un nombre de archivo nuevo supone trabajo para los propietarios de servidor: cambiar el mapa inicial, actualizar FastDL, volver a fijar las posiciones. Un changelog les dice si merece la pena. Las entradas útiles responden a cuatro preguntas:
- ¿Qué se ha corregido y qué hay de nuevo?
- ¿Han cambiado puertas, spawns u otras entities, de modo que haya que volver a fijar los datos guardados del servidor?
- ¿Hace falta contenido nuevo o distinto?
- ¿Se han regenerado el navmesh y el grafo de nodos?
Para los compradores, el historial de versiones es además una señal de que el mapa se mantiene. En bspmarket.de envías una versión nueva en el área de Creator con un número de versión y un changelog opcional. Se revisa antes de publicarse y después aparece en la página de producto, en «Versiones y registro de cambios». Las actualizaciones son gratuitas para los compradores. Qué más debe tener una buena página de producto se explica en vender mapas de GMod.
Preguntas frecuentes
¿Tengo que crear un elemento nuevo de Workshop para cada versión?
No. Las normas de Workshop para GMod recomiendan publicar las versiones nuevas como actualización del elemento existente. Aun así, dale al BSP que contiene el nuevo nombre de versión: así nadie puede confundir dos versiones, y los servidores solo tienen que ajustar su mapa inicial. En cualquier caso, un servidor solo recoge la actualización cuando se reinicia. Según la wiki de GMod, un servidor que todavía ejecuta una versión más antigua del mapa puede impedir que los jugadores entren. El proceso se describe en subir un mapa de GMod a Workshop.
¿Qué prefijo uso si el mapa encaja en varios modos de juego?
El del modo para el que está hecho en primer lugar. El prefijo determina la categoría en el menú y lo que esperan los jugadores. Un mapa rp_ se puede iniciar igualmente en Sandbox.
¿Qué hago con las versiones antiguas en el servidor y en FastDL?
Bórralas en cuanto el servidor haya pasado a la versión nueva, incluidos el .bsp.bz2 y los archivos .nav y .ain antiguos. Las copias antiguas en los equipos de los jugadores no hacen daño, porque tienen otro nombre.