ESPAÇO PUBLICITÁRIO DISPONÍVEL · FALE CONOSCO

Conflitos de navmesh em mods: malhas excluídas, falhas de rota de NPCs e travamentos por transição de célula

365Finds Editorial
11.430 artigos Wiki catalogados

Use o 365 Wiki com sua IA

Copie o prompt abaixo, cole na IA que você já usa e faça sua pergunta.

Baixar o Skill completo

Experimente primeiro com o prompt. Se você usa o 365 Wiki com frequência, instale o Skill completo do 365Wiki para não precisar colá-lo novamente. Se não usa uma IA específica, as versões web do Gemini ou Microsoft Copilot também servem.

Na modificação de jogos de RPG em mundos abertos tridimensionais, poucos problemas causam tanta dor de cabeça e são tão difíceis de rastrear quanto os travamentos súbitos que ocorrem no instante exato em que o jogador abre uma porta interna ou cruza o limite de uma área no mapa. Um jogador pode explorar o mundo por dezenas de horas com total estabilidade e, de repente, deparar-se com um fechamento inesperado para a área de trabalho (Crash to Desktop ou CTD) repetitivo ao tentar entrar em uma taverna reformada, em uma masmorra customizada ou em um novo distrito urbano.

Na imensa maioria desses travamentos durante a transição de células (cell transitions), a causa real não costuma ser uma textura corrompida ou o esgotamento da memória da placa de vídeo, mas sim uma malha de navegação (Navmesh) danificada ou em conflito. As navmeshes representam a geometria invisível fundamental utilizada pela inteligência artificial (IA) para calcular rotas de locomoção, buscar abrigo e atravessar portas de carregamento. Quando criadores de mods excluem registros originais de navmesh ou sobrepõem leiautes de células incompatíveis, o subsistema de rotas do motor sofre violações fatais de acesso à memória.

O que é uma navmesh e como o motor do jogo a processa

Em motores modernos (como a Creation Engine da Bethesda, empregada nas séries The Elder Scrolls e Fallout), os personagens não jogáveis (NPCs) e as criaturas não se locomovem pelo cenário calculando colisões físicas contra a geometria tridimensional visível. Processar cálculos de colisão física em tempo real para dezenas de personagens simultâneos sobrecarregaria o processador instantaneamente.

Para viabilizar a movimentação da inteligência artificial de forma leve e responsiva, os desenvolvedores cobrem as superfícies transitáveis com uma malha bidimensional invisível de polígonos:

  1. Redes de nós triangulares: A navmesh é formada por triângulos interligados que acompanham o relevo de pisos, escadas e terrenos. Cada triângulo atua como uma área segura de circulação reconhecida pelo sistema, possuindo coordenadas próprias e marcações de comportamento (como áreas aquáticas de nado, zonas de perigo ou trilhas preferenciais).
  2. Grafos para cálculo de rota: Quando um NPC precisa alcançar determinado destino, o motor executa o algoritmo de busca de caminhos A-star navegando pelos nós dos triângulos contíguos da navmesh, dispensando simulações físicas pesadas.
  3. Ligações de borda (Edge-Links) e marcadores de porta: Nos mapas externos, as malhas precisam ser unidas nas extremidades das células adjacentes por linhas verdes de conexão para que os NPCs transitem suavemente entre blocos de carregamento. No interior de construções, marcadores amarelos de teletransporte associados a portas (DOOR Teleport Markers) ancoram a malha de navegação aos pontos de entrada, indicando onde o NPC deve se materializar após a tela de carregamento.

O risco fatal da exclusão de navmesh («Deleted Navmesh»)

Entre os veteranos da comunidade de modificações, o termo «Deleted Navmesh» é sinônimo direto de instabilidade severa. Para entender a razão desse problema, é preciso observar como o executável lida com ponteiros de memória.

Violação de acesso por desreferenciamento de ponteiro nulo

Cada elemento registrado nos plugins recebe um identificador hexadecimal exclusivo (FormID, como 00021A4B). Nas malhas de navegação do jogo original, diversas rotinas de inteligência artificial, missões dinâmicas, códigos de companheiros e outros mods registram referências diretas a esse FormID.

Se um autor decide remodelar um aposento interno e remove a navmesh original com a tecla Delete em vez de redimensionar seus vértices, o arquivo do mod grava a instrução Record Flags: Deleted nesse registro. Quando o jogador entra na área ou um NPC tenta calcular um caminho que passe por ali, uma sequência desastrosa acontece:

Ao contrário de objetos estáticos simples (como caixotes ou cadeiras, que ferramentas de limpeza conseguem recuperar e ocultar automaticamente com a função «Undelete and Disable»), as malhas de navegação possuem uma topologia estrutural contínua que utilitários automatizados não conseguem recriar, exigindo intervenção manual.

Conflitos de sobreposição e quebra de comportamento de NPCs

Mesmo quando nenhuma malha foi excluída, o uso conjunto de múltiplos mods que alteram o mesmo espaço geográfico gera graves problemas de movimentação devido à Regra do Um (Rule of One) do motor.

Perda de rotas por sobreposição de arquivos

Se o Mod A expande uma estalagem para acrescentar quartos de hóspedes, ele gera uma nova navmesh para cobrir a área recém-construída. Se o Mod B altera a mesma estalagem para adicionar uma lareira decorativa, mesas extras e nova iluminação, ele também reescreve a navmesh daquele local.

O motor do jogo é incapaz de fundir dois arquivos de navmesh diferentes durante a execução. O mod que estiver posicionado por último na ordem de carregamento sobrescreve integralmente o registro NAVM dos anteriores:

Ligações de borda rompidas e falhas em marcadores de porta

Quando as falhas de navmesh ocorrem no mapa aberto, os sintomas mais comuns envolvem companheiros que somem ou telas de carregamento infinitas:

Roteiro estruturado de diagnóstico e correção

A resolução de incompatibilidades de navmesh requer ferramentas consolidadas de diagnóstico e edição.

1. Varredura de erros com o xEdit

Abra a sua lista de plugins no xEdit (como SSEEdit ou FO4Edit) e realize uma verificação de integridade:

  1. Selecione todos os plugins carregados, clique com o botão direito e execute Check for Errors.
  2. Filtre os registros resultantes procurando pelo tipo NAVM.
  3. Procure atentamente por entradas com Record marked as deleted ou Could not be resolved. Esses são os principais gatilhos de travamento por transição de célula.

2. Método de rebaixamento para malhas excluídas

Quando um mod apresenta uma navmesh original excluída, a prática recomendada consiste em restaurá-la e afundá-la para fora do mapa:

  1. No xEdit, encontre o registro NAVM problemático e desmarque a opção Deleted para restabelecer o cabeçalho.
  2. Abra o arquivo do mod no Creation Kit oficial.
  3. Em vez de excluir a malha excedente, selecione todos os seus vértices e arraste-os para uma posição muito abaixo do relevo visível (definindo a coordenada Z como -30,000).
  4. Diminua a escala dos triângulos rebaixados ao mínimo e elimine suas conexões de borda. O motor preservará o FormID legítimo na memória, mas nenhum NPC conseguirá pisar na malha, eliminando as falhas de ponteiro nulo.

Ao investigar travamentos repentinos para a área de trabalho ao abrir portas internas ou mudar de região, os guias de modificação da 365Finds recomendam priorizar a busca por navmeshes corrompidas ou excluídas na ordem de carregamento antes de diagnosticar drivers de vídeo ou vazamentos de memória.

Lista de verificação e diagnóstico preventivo

  1. Checar alertas no LOOT: Mantenha a lista de regras do LOOT atualizada para identificar avisos de plugins com navmeshes excluídas.
  2. Executar verificação no xEdit antes de iniciar uma campanha: Realize o Check for Errors em novos mods de cidades, moradias e masmorras antes de começar a jogar.
  3. Avaliar registros de falhas (Crash Logs): Se estiver utilizando utilitários como o Crash Logger, analise os relatórios em busca de termos como PathingCell, NavMesh ou BSPathing.
  4. Construir patches de compatibilidade: Ao utilizar mods sobrepostos em uma mesma localidade, crie um patch no editor oficial conectando os novos polígonos de navmesh e recalculando as bordas das células.

Referências