Este é o primeiro de uma série de Blogs dos Desenvolvedores que serão publicados em preparação para o lançamento do NXT - o nosso novo cliente do RuneScape.
Fique atento aos blogs dos desenvolvedores que serão lançados durante as próximas semanas, e às notícias dos próximos Fins de Semana de Beta do NXT.
Continue lendo para saber quais foram os desafios enfrentados por Mod Philip e sua equipe para nos trazer as paisagens deslumbrantes do NXT.
No novo cliente do RuneScape, você poderá ver muito mais além do que no cliente Java existente. Isso significa que Guilenor ficará com um visual melhor do que tinha antes, mas também representa um novo desafio. Quando o jogo foi concebido inicialmente, ninguém nunca imaginou que os jogadores poderiam ver a uma distância grande. Isso resultou em algumas decisões "interessantes" no que diz respeito ao posicionamento dos elementos no mundo do jogo.
O primeiro problema é que alguns locais no mundo do jogo parecem estar mais perto do que verdadeiramente estão, no sentido temático. Isso acontece principalmente com ilhas como Karamja, que parece poder ser alcançada com um nado rápido em vez de ser necessária uma longa viagem.

Eu juro que poderia nadar até lá...
É muito difícil para nós mover de fato uma ilha como Karamja. Existem vários lugares do jogo que fazem referência às coordenadas exatas de locais da ilha, de formas que não são fáceis de detectar ou atualizar automaticamente. Seria muito trabalhoso mudar elementos como esse de lugar no mundo do jogo, por isso encontramos outra solução.
Primeiro, escondemos a vista da ilha quando você está em terra firme (e escondemos a vista da terra firme quando você está na ilha), e substituímos a imagem por outra paisagem.
Para que isso fosse possível, adicionamos um recurso que identifica o mundo como áreas diferentes. Isso permite que tornemos essas áreas visíveis ou invisíveis entre si – e atribuir outras propriedades a elas no futuro.
Cada cor abaixo representa uma área – são mais do que você pensava, não são?

1. Sob o mundo da superfície | 4. Mundo da superfície do RuneScape |
2. Masmorras | 5. Fortalezas do Clã |
3. Dungeon |
A segunda parte usa as marcações de área para adicionar partes "falsas" do mapa ao mundo, no lugar das partes removidas. Por exemplo, podemos construir uma parte do mapa com um pouco de mar e colocá-la no lugar da ilha, tornando-a invisível. Isso significa que, onde quer que você esteja, você verá apenas as partes do mundo que deveria ver.
O recurso de usar uma parte do mapa para esconder ilhas (e esconder a terra firme das ilhas) ainda não foi muito usado por nós, mas já usamos o sistema de marcação de áreas para lidar com outro caso onde o aumento da distância de renderização fazia com que os jogadores vissem coisas que não deveriam ver.
As masmorras que não estão em instância são mapeadas no mesmo espaço coordenado que o mundo da superfície do RuneScape, junto com modelos que usamos para criar partes de conteúdos em instância (ou seja, copiados para que pessoas ou grupos de pessoas diferentes possam jogar na mesma área sem interferir no jogo de outros). Uma vez que nunca pensamos que um dia fosse possível ver longe o suficiente para que essa distribuição fosse um problema, muitas dessas masmorras/modelos estão próximas uma da outra, e parecem um pouco confusas quando visitadas!

Bem, Tuska realmente está morta...
No passado, dedicamos nosso trabalho a identificar todas essas áreas (ou pelo menos um número grande delas) para que elas pudessem ser mostradas em imagens do mapa diferentes no mapa-múndi. Contudo, não podíamos simplesmente usar esses dados para esconder uma área da outra automaticamente, uma vez que existem vários locais a partir de onde é perfeitamente possível andar para lugares que estão em áreas diferentes. Isso seria um problema se você não pudesse ver para onde está andando!

Cuidado com o buraco!
O procedimento mais seguro neste caso seria, através da programação, evitar que as áreas fossem definidas se elas pudessem ser alcançadas a pé por jogadores ou NPCs no jogo. Assim sendo, criamos uma ferramenta que recolheu informações sobre o mapa-múndi (conforme ele é apresentado no jogo) e gerou automaticamente uma relação de áreas que podem ser avistadas entre si, colocando barreiras invisíveis para evitar que seja possível andar entre elas.
Isso pode soar um pouco perigoso… e de fato foi! Sabíamos que, em alguns lugares, caminhos que anteriormente podiam ser atravessados seriam cortados pela metade, mas descobrimos que a quantidade de lugares assim era muito maior quando finalmente testamos o sistema.
Depois de uma conversa com a Mod Helen (que estava encarregada da maioria do trabalho pesado de ajustar os mapas), adicionei um recurso à ferramenta que produziu um mapa de todo o conteúdo com as novas paredes realçadas em magenta, facilitando que identificássemos onde a abordagem tinha falhado.

Tantas... paredes...
Depois de alguns dias de ajustes, as masmorras e os modelos de instância foram finalmente separados uns dos outros (bem, a maioria deles). Apareceram alguns problemas quando lançamos as alterações, fazendo com que algumas partes do mundo que não deveriam estar separadas estivessem, mas tudo isso foi resolvido com facilidade.
Um outro caso em que o aumento da distância de renderização causou problemas foi nas próprias instâncias. Quando as instâncias se assemelham a algo que existe no mundo aberto, elas normalmente são feitas de forma que os jogadores não possam se aproximar o suficiente dos limites para ver que não existe nada ao redor. Com o novo cliente, esse já não era mais o caso.
Contudo, podemos adicionar elementos em torno dos limites para mascarar essa falta. Nos conteúdos em instâncias, o mundo é construído a partir das informações fornecidas pelo servidor, por isso trata-se de um procedimento tecnicamente simples. No entanto, existem vários conteúdos em instância no mundo, por isso não há muitos locais onde esse recurso já tenha sido utilizado.
Também existem lugares onde partes diferentes da mesma instância não devem ser visíveis entre si, como é o caso dos aquários dos Projetos de Obra Habitacional. Ainda não criamos nada para lidar com esses casos, mas, usando as técnicas descritas, o problema deve ser resolvido facilmente.
Todas essas soluções necessitam de um esforço manual: entrar no jogo, encontrar os lugares que precisam dessa intervenção e consertá-los. Damos prioridade aos lugares maiores e mais óbvios, mas trata-se de uma tarefa enorme. Precisaremos da sua ajuda quando o beta do NXT for aberto para trabalhar em todas as partes que faltam!
Quando aumentamos a distância de renderização, também aumentamos a distância em que outros jogadores são transmitidos para os clientes do jogo, uma vez que era estranho ver jogadores e NPCs aparecendo e desaparecendo de vista quando de fato eles estavam bem próximos ao jogador. Isso foi ótimo, mas em algumas situações de PvP, poderia causar alguns problemas de balanceamento. Para combater esse problema (desculpem o trocadilho), estendemos o código que desativa visuais estéticos em algumas situações de PvP onde isso possa causar problemas, fazendo com que a distância com que os jogadores aparecem fosse a mesma que com o cliente Java.

Eles estão em todo lugar!
Todo esse trabalho recompensou. A capacidade de poder ver mais de Guilenor durante o jogo é simplesmente incrível. Os dias de neblina perto da câmera acabaram!
Mod Philip Diretor Técnico