En la modificación de juegos de rol en mundos abiertos tridimensionales, pocos problemas resultan tan desconcertantes y difíciles de aislar como los cierres inesperados que se producen en el instante exacto en que el jugador abre una puerta interior o cruza un límite invisible del escenario. Un jugador puede disfrutar de decenas de horas de exploración estable para sufrir, de repente, un cierre fulminante al escritorio (Crash to Desktop o CTD) cada vez que intenta entrar en una taberna remodelada, una mazmorra personalizada o un nuevo distrito urbano.
En la gran mayoría de estos fallos repentinos por cambio de celda (cell transition), el causante no es una textura corrupta ni la saturación de la memoria gráfica, sino una malla de navegación (Navmesh) dañada o en conflicto. Las navmeshes constituyen la geometría invisible fundamental que la inteligencia artificial (IA) utiliza para calcular trayectorias de desplazamiento, buscar coberturas y transitar por puertas. Cuando los creadores de mods eliminan por error registros de navmesh del juego original o superponen modificaciones incompatibles en una misma celda, el subsistema de cálculo de rutas del motor sufre violaciones críticas de acceso a memoria.
Qué es una navmesh y cómo la procesa el motor de juego
En los motores de juego modernos (como el Creation Engine de Bethesda empleado en las franquicias The Elder Scrolls y Fallout), los personajes no jugadores (NPC) y las criaturas no se desplazan calculando colisiones físicas contra la geometría visible del entorno. Procesar colisiones en tiempo real para decenas de NPC simultáneos colapsaría el procesador de inmediato.
Para hacer viable el desplazamiento de la IA con un coste computacional reducido, los desarrolladores y creadores de contenido extienden sobre el suelo transitable una red de polígonos bidimensionales invisibles:
- Redes de nodos triangulares: Las navmeshes están compuestas por polígonos triangulares conectados que se adaptan a suelos, escaleras y terrenos. Cada triángulo representa una superficie transitable validada por el sistema con coordenadas precisas y propiedades específicas (como zonas acuáticas de nado, áreas con trampas o rutas de paso preferentes).
- Grafos de búsqueda de rutas: Cuando un NPC debe acudir a un objetivo, el motor de navegación ejecuta el algoritmo de búsqueda de caminos A-star a través de los triángulos contiguos de la navmesh, evitando realizar cálculos físicos complejos sobre la geometría tridimensional.
- Enlaces de borde (Edge-Links) y marcadores de puerta: En escenarios exteriores, las mallas deben unirse en las líneas divisorias de cada celda mediante enlaces de borde de color verde para que las entidades crucen los límites de carga sin interrupciones. En celdas interiores, marcadores amarillos de teletransporte vinculados a puertas (
DOORTeleport Markers) fijan la navmesh al portal de acceso, indicando al motor dónde debe materializarse el personaje tras la pantalla de carga.
El peligro mortal de las mallas eliminadas («Deleted Navmesh»)
Entre los usuarios experimentados de la comunidad de mods, el término «Deleted Navmesh» es sinónimo de inestabilidad severa. Entender este problema requiere analizar el tratamiento que hace el motor de los punteros en la memoria del sistema.
Violación de acceso por desreferencia de puntero nulo
Cada elemento registrado en un plugin dispone de un identificador hexadecimal único (FormID, por ejemplo 00021A4B). En las navmeshes del juego base, múltiples rutinas de misiones, comportamientos de IA radiante, rutinas de compañeros y otros mods tienen asignadas referencias directas a ese FormID específico.
Si un creador de mods rediseña una estancia interior y elimina la navmesh original mediante la tecla Suprimir en lugar de adaptar sus vértices, el plugin graba la cabecera Record Flags: Deleted en ese registro. Cuando el jugador accede a la celda o un NPC intenta trazar una ruta hacia esas coordenadas, se desencadena una secuencia fatal:
- El motor solicita el FormID esperado según los datos maestros originales.
- El registro aparece marcado como eliminado, lo que significa que su matriz de vértices e índices triangulares no ha sido asignada en la memoria activa.
- El hilo de procesamiento de rutas intenta acceder a una dirección nula o desreferenciar memoria no asignada, provocando una excepción irrecuperable
0xC0000005 Access Violationque cierra el juego al instante.
A diferencia de los objetos estáticos corrientes (como barriles o mobiliario, que los administradores de mods pueden «recuperar y desactivar» de forma automática sin riesgo alguno), las navmeshes poseen una topología interconectada que las herramientas automáticas no pueden recomponer por sí solas, requiriendo una corrección manual.
Conflictos de superposición y alteraciones de conducta en NPC
Incluso cuando no se ha eliminado ninguna malla, el uso simultáneo de varios mods que modifiquen la misma ubicación provoca anomalías de ruta debido a la Regla del Uno (Rule of One) del motor.
Pérdida de datos por superposición de registros
Si el Mod A amplía una taberna incorporando nuevas habitaciones, genera una navmesh propia para abarcar la superficie añadida. Si el Mod B modifica esa misma taberna para colocar una chimenea ornamental, nueva iluminación y mesas adicionales, también reescribe la navmesh de dicha celda.
El motor del juego no puede fusionar dos registros de navmesh en tiempo de ejecución. El mod situado en la posición más baja de su orden de carga sobreescribe por completo el registro NAVM de los mods anteriores:
- Si el Mod B prevalece en el orden de carga, la zona de dormitorios añadida por el Mod A se queda sin datos de navegación. Los NPC interpretarán ese espacio como un vacío intransitable; los compañeros se negarán a entrar o correrán de forma continua contra umbrales invisibles.
- Si el Mod A prevalece, el espacio ocupado por la chimenea y las columnas del Mod B seguirá conservando el suelo transitable original. Los NPC intentarán caminar a través de los objetos sólidos, quedándose atascados indefinidamente.
Enlaces de borde rotos y desajustes en puertas
Cuando los fallos de navmesh tienen lugar en escenarios exteriores, los síntomas habituales consisten en compañeros extraviados o pantallas de carga infinitas:
- Enlaces de celda desalineados: Si un mod de terreno modifica la altitud del suelo junto a la linde de una celda y no recompila ni vuelve a enlazar los bordes (Finalize), la línea divisoria se convierte en un precipicio insalvable para la IA. Los acompañantes se detendrán en seco o darán rodeos desmesurados de varios kilómetros hasta que un viaje rápido fuerce su reubicación.
- Marcadores de puerta desconectados: Cuando una reforma interior desplaza una puerta sin reubicar el marcador amarillo de teletransporte sobre un triángulo de navmesh válido, los NPC que intenten cruzarla se quedarán paralizados o generarán un bucle de carga infinito.
Protocolo sistemático de diagnóstico y reparación
Corregir los conflictos de navmesh exige emplear herramientas de edición y diagnóstico reconocidas en la comunidad.
1. Detección de errores con xEdit
Abra su orden de carga en xEdit (como SSEEdit o FO4Edit) y ejecute una revisión de errores:
- Seleccione todos los plugins cargados, haga clic derecho y elija
Check for Errors. - Filtre los resultados buscando registros del tipo
NAVM. - Revise con especial atención las entradas que muestren
Record marked as deletedoCould not be resolved. Estas señalan las causas directas de los cierres al cambiar de celda.
2. El método de hundimiento para navmeshes eliminadas
Si un mod contiene una navmesh original eliminada, la técnica recomendada consiste en recuperarla y hundirla bajo el mapa:
- En xEdit, localice el registro
NAVMeliminado y desmarque la casillaDeletedpara restaurar la cabecera. - Abra el plugin en el Creation Kit oficial.
- En lugar de borrar la malla original que sobra, seleccione todos sus vértices y arrástrelos muy por debajo del escenario visible (fijando habitualmente la coordenada Z en
-30,000). - Reduzca los triángulos hundidos a una escala mínima y elimine sus enlaces de borde. El motor conservará el FormID válido en memoria sin que ningún NPC pueda pisarlo, eliminando de raíz las excepciones de puntero nulo.
Al investigar cierres repentinos al escritorio al cruzar puertas interiores o cambiar de zona, las guías de modificación de 365Finds aconsejan priorizar la detección de navmeshes eliminadas en el orden de carga antes de atribuir el error a los controladores gráficos o a fugas de memoria.
Lista de verificación de diagnóstico y prevención
- Revisar advertencias con LOOT: Mantenga actualizada la lista maestra de LOOT para identificar avisos de plugins que contengan navmeshes eliminadas.
- Ejecutar revisiones en xEdit antes de iniciar partidas: Analice con
Check for Errorscualquier mod nuevo de ciudades, viviendas o mazmorras antes de comenzar una partida formal. - Analizar volcados de fallos (Crash Logs): Si utiliza utilidades como Crash Logger, examine las trazas de memoria buscando términos como
PathingCell,NavMeshoBSPathing. - Elaborar parches de compatibilidad: Si utiliza varios mods para una misma localización, abra el editor oficial para generar una malla conectora unificada y recomponer los enlaces de las celdas afectadas.