Configuração de geodata do Lineage 2: pare de atravessar paredes

Geodata do Lineage 2 é o mapa de altura e colisão do mundo. Sem ela o servidor ainda inicia e os jogadores ainda entram: eles simplesmente atravessam paredes, batem em mobs através do chão e caem do mapa em certas bordas. Todo sintoma parece bug de cliente, e por isso donos de servidor passam horas olhando a camada errada.
Esta é a configuração que muda o comportamento de verdade: os arquivos certos na pasta certa, um modo de motor escolhido de propósito e um teste que prova que as paredes existem após o restart.
O que a geodata contém de fato
O mundo é dividido em uma grade de regiões quadradas, e cada região tem seu arquivo. O aCis documenta a grade como 176 regiões para o mundo suportado, com nomes como 22_16.l2j: os dois números são coordenadas de região, não uma versão. Dentro de cada arquivo estão as camadas de altura e as marcas de células bloqueadas que o servidor usa para três tarefas distintas:
- Movimento — se um personagem pode ficar naquela coordenada e caminhar para a seguinte.
- Linha de visão — se uma skill ou flecha alcança o alvo através daquele espaço.
- Pathfinding — quando a linha direta está bloqueada, qual rota contorna o obstáculo.
Os formatos diferem. .l2j é o formato Java padrão, .l2d é a variante diagonal usada por alguns pacotes e os arquivos _conv.dat vêm do cliente oficial e são lidos por servidores baseados em L2OFF e conversores. Um pacote que carrega o formato errado ignora os arquivos ou enche o console de erros de parse.

Passo 1: coloque os arquivos onde o motor procura
Todo servidor da família L2J espera uma pasta de geodata relativa ao diretório de trabalho do servidor de jogo, normalmente data/geodata. O ajuste que aponta para ela tem nomes diferentes por pacote, e é aqui que as pessoas se perdem:
| Pacote | Arquivo de configuração | Ajuste de caminho |
|---|---|---|
| L2J Server | game/config/geodata.properties | GeoDataPath |
| L2JMobius | game/config/GeoData.properties | GeoDataPath |
| aCis | config/geoengine.properties | GeoDataPath |
Deixe relativa (./data/geodata) e inicie o servidor a partir da própria pasta. Um caminho absoluto em máquina que depois se move, ou um relativo resolvido do diretório de trabalho errado, dá o mesmo resultado: nenhuma região carregada e nenhum erro claro.
Para High Five, o projeto oficial L2J distribui um pacote compatível no seu repositório de geodata (l2j_geodata). Use o pacote que combina com sua crônica e seu core; arquivos de outra crônica carregam, mas posicionam errado terreno e portas.
Passo 2: escolha o modo do motor de propósito
Os três motores expõem a mesma ideia com chaves diferentes, e o que importa é o comportamento:
| Modo | aCis | L2J / L2JMobius | Resultado |
|---|---|---|---|
| Desligado | GeoData = 0 | geodata não carregada (GeoDataPath errado ou todas as regiões desativadas) | As paredes são ignoradas; jogadores e mobs as atravessam |
| Colisão + LoS | GeoData = 1 | PathFinding = 0 com geodata carregada | Não se anda nem se lança nada através de paredes; mobs não agridem através delas |
| Pathfinding completo | GeoData = 2 | PathFinding = 2 (ou 1 para arquivos de nós) | O movimento bloqueado é contornado |
No aCis, GeoData = 2 é o padrão correto para servidor aberto. No L2J e no L2JMobius a camada de colisão vem de carregar geodata, e PathFinding = 2 acrescenta o roteamento. Sem roteamento, um mob cujo alvo está atrás de uma cerca fica parado em vez de contornar. O custo é CPU, porque toda rota direta que falha dispara uma busca. Em cerco cheio isso é mensurável e é a primeira coisa a testar sob carga.
Dois ajustes companheiros merecem ser entendidos:
CoordSynchronize—-1sincroniza apenas o eixo Z;2é o valor pensado para geodata e permite ao servidor corrigir um cliente que reporta posição dentro de uma parede. Use2ao ativar geodata.ForceGeoData— carrega os buffers na memória física na inicialização. Mais rápido e estável, ao preço de RAM. Desligue em VPS pequeno e observe os engasgos.
Ative geodata antes do primeiro beta aberto, não depois. Jogadores que aprendem a atravessar a parede de um castelo não esquecem, e toda correção posterior parece nerf para eles.

Passo 3: carregue só o necessário, ou verifique tudo
L2J e L2JMobius permitem controlar o conjunto de regiões. TryLoadUnspecifiedRegions = True carrega toda região presente na pasta, inclusive as que você não listou, e não faz a inicialização falhar se faltar um arquivo; colocar em False limita o carregamento às regiões listadas, o que mantém o boot rápido enquanto você monta um mapa próprio. O aCis usa a abordagem de lista diretamente: sua configuração enumera nomes de região e comenta as que o cliente não suporta.
Carregar parcialmente tem uma armadilha. Uma região não carregada se comporta como o modo 0 naquela parte do mundo: as paredes somem ali. Se os jogadores dizem que um castelo específico não tem colisão, verifique se a linha daquela região está comentada antes de suspeitar do pacote.
Passo 4: prove que funcionou
Reinicie o servidor de jogo após qualquer mudança: a geodata é lida uma vez no boot. Depois confirme, nesta ordem:
- O log de inicialização informa regiões carregadas sem uma parede de erros de parse. Um arquivo ilegível é normal; centenas significam formato errado.
- Ande com um personagem contra uma parede conhecida em uma vila inicial. Movimento bloqueado é o teste base.
- Fique atrás de uma cerca e puxe um mob. Ele deve contornar, não ficar parado e não te acertar através dela.
- Lance uma skill direcionada através de uma parede em um colega de clã. Deve falhar ao adquirir alvo ou na linha de visão.
- Pule de uma beirada que antes te jogava fora do mundo. Você deve aterrissar, não cair.
No aCis, uma parede que você atravessa com logs limpos significa que GeoData continua 0. No L2J e no L2JMobius o mesmo sintoma significa que aquela região nunca carregou: verifique a lista de regiões antes de mexer em PathFinding. Se as paredes bloqueiam mas os mobs ficam parados atrás, a colisão está ativa e o roteamento não.
Erros que quebram a geodata
- Misturar formatos. Carregar
_conv.datem motor que espera.l2j, ou o contrário, sem ajuste de formato. O aCis temGeoDataFormatexatamente para isso: useL2J,L2OFFouL2Dconforme os arquivos que você tem. - Testar com teleport. O teleport de GM pula a checagem de colisão que o caminhar faz. Teste sempre andando.
- Editar configuração com o servidor rodando. Nada recarrega, e o próximo restart "conserta por mágica", o que ensina a lição errada.
- Copiar pasta de geodata entre crônicas. Carrega, e depois portas, pontes e bordas de terreno ficam erradas de formas que só os jogadores percebem.
- Ignorar a RAM. Geodata completa mais carregamento forçado é compromisso real de memória. Dimensione o VPS para isso: veja requisitos de VPS e hardware.
O que vem depois
A geodata é a primeira coisa que faz um servidor parecer Lineage 2 em vez de bancada de testes. Depois, ajuste rates e drops ao que você anuncia e traga jogadores: uma listagem gratuita no L2Calendar coloca seu servidor nas páginas de crônica e rate onde as pessoas procuram — adicione seu servidor. Se quiser a colocação acima da lista gratuita, a listagem VIP é o caminho pago, e esta análise cobre quando ela se paga.
