Blog dos Desenvolvedores - Realce e Corte de Copas de Árvores

Olá pessoal, eu sou Mod Saj e estou aqui para falar sobre as incríveis melhorias de visibilidade nas quais temos trabalhado.

A fase inicial de desenvolvimento dessas melhorias foi demonstrada na apresentação do RuneFest. Elas incluem três recursos que permitirão navegar por ambientes densos sem perder o seu personagem de vista, tornando mais fácil identificar objetos e NPCs com os quais você pode interagir.

Neste blog, falarei um pouco sobre como eles funcionam e mostrarei de que forma eles afetarão o jogo.

Realce

"Você está aprendendo uma nova habilidade, e ela leva você para um lugar onde você nunca esteve antes. É hora de sair mexendo no mouse para descobrir com o que você pode interagir aqui!"

Se isso soa familiar, você não está sozinho – todos nós já passamos por isso.

Não é sempre fácil identificar o que é interativo e o que não é. Por exemplo, veja se você consegue identificar tudo com o que você pode interagir nos locais mostrados nestas imagens. Vamos deixar um pouco mais fácil e ignorar coisas que você apenas pode examinar:

Terminou? Aqui estão as coisas com as quais você pode interagir, na versão móvel com o realce ativado:

Como você pode ver, varia ligeiramente de acordo com o lugar, mas não é assim tão óbvio, mesmo para quem já joga há muito tempo.

O realce ajuda nisso adicionando um contorno brilhante ao redor de quase tudo com o que você pode interagir (desde jogadores, NPCs, objetos largados e árvores), tornando mais óbvio o que eles são e ajudando a identificá-los. Uma exceção são as coisas que apenas podem ser examinadas, para as quais o contorno não foi adicionado pois causaria muito ruído visual. Também queríamos deixar claro que ao clicar ou tocar em coisas realçadas, você pode realizar uma ação imediatamente, ao contrário de examinar, onde você precisa selecionar uma ação no minimenu.

Os diferentes tipos de objetos também têm cores de destaque diferentes, como você pode ter imaginado nas imagens anteriores. Para NPCs e jogadores, isso vai um pouco mais além e verifica também se eles são amigáveis ou hostis, para que você possa identificar rapidamente se desejam carimbar sua visita à ampulheta do Ceifador ou se estão apenas circulando por aí.

Antes de seguirmos em frente, há alguns vídeos mostrando esse recurso em ação, começando na versão desktop, onde as coisas são destacadas ao mexer o cursor do mouse:

Na versão móvel, embora não haja cursores, nós destacamos as coisas ao redor do seu personagem conforme você se movimenta, com um botão de ativar/desativar para que você possa ativá-lo quando precisar:

Silhuetas de personagem

Também estamos adicionando silhuetas ao seu personagem, que são visíveis através de paredes, terreno e outros objetos. Isso torna muito mais fácil acompanhar onde você está em todos os momentos, particularmente quando usado em conjunto com o efeito de corte de copa de árvore.

Veja em movimento:

Corte de copa de árvore

O RuneScape tem uma grande quantidade de florestas, e há algo que todas elas têm em comum: árvores. Árvores são fantásticas, mas um pouco chatas quando tornam difícil ver o que você está fazendo. Se você se lembra do Bosque Perdido, sabe do que estou falando.

Para resolver isso, estamos adicionando um recurso que verifica se seu personagem está visível, e depois coloca um efeito ao redor dele, onde as copas de árvores e folhagens desenhadas nessa área se tornam mais transparentes. A força deste efeito varia dependendo do quão visível o seu personagem é, tornando os objetos totalmente translúcidos na força máxima. Isso também funciona com silhuetas, para que você possa ter uma indicação clara de que o seu personagem está parcialmente obstruído.

Uma nota, no entanto: No momento do lançamento, isso só estará ativado para copas de árvores. Estamos investigando como fazê-lo afetar galhos no futuro, depois de superar algumas limitações técnicas relacionadas a conteúdo antigo.

Papo técnico: uma visão geral de como isso foi criado

Para quem estiver curioso sobre como isso funciona, é um efeito bastante simples:

  • Primeiro, desenhamos o jogo sem nenhum realce. Fazer isso também preenche o que chamamos de "buffer de profundidade" com informações sobre o quão longe cada pixel está da câmera.
  • Cada objeto que queremos destacar é então desenhado duas vezes:
  • Uma vez em um tamanho maior, com a cor do realce;
  • Uma vez em um tamanho menor, em preto;
  • Em ambos os casos, ele usa o "buffer de profundidade" gerado anteriormente para evitar desenhar o realce através de paredes ou outros objetos;
  • Um efeito de desfoque é aplicado nos realces para suavizar suas bordas e eliminar erros visuais que possam aparecer;
  • Os realces desfocados são adicionados à tela.
  • As silhuetas funcionam de forma semelhante: em vez de desenhar tamanhos diferentes e calcular a relação com o buffer de profundidade em ambas as vezes, usamos o mesmo tamanho para ambos e só calculamos a relação com o buffer de profundidade na última operação de desenho.

    Isso é tudo no lado técnico! Analisamos vários métodos e acabamos escolhendo este pois ele nos dá a melhor combinação de controle visual e desempenho, nos deixando usar diferentes realces de cor e permitindo expandir este sistema ainda mais no futuro.

    Papo técnico: tornando árvores em janelas

    Para este recurso, primeiro precisamos descobrir se seu personagem está visível ou não. Isso é feito usando algo chamado "consultas de hardware".

    Elas permitem perguntar à GPU quanto demorou para desenhar algo, se esse algo é visível, ou quantos pixels ele ocupou. A desvantagem de usá-las é que, por motivos de desempenho, não podemos receber os resultados de uma consulta no mesmo quadro em que ela foi usada, porque fazer isso força a CPU a esperar que a GPU termine de desenhar o quadro inteiro. Para evitar isso, não extraímos os resultados até que eles estejam prontos, para que o sistema inteiro tome em consideração um atraso de um ou dois quadros.

    Começamos desenhando o personagem do jogador com o último tipo de consulta mencionado acima, comparando o valor da contagem de pixels obtido com quantos pixels ele ocuparia se não houvesse nada no caminho. Isso nos dá uma porcentagem de visibilidade. Converter este valor em uma quantia de transparência envolve calcular a média dele com os valores obtidos em quadros anteriores (para que possamos evitar que a transparência oscile rapidamente sempre que há pequenos movimentos na câmera) e animações. Depois que este processo de cálculo de média termina, simplesmente usamos a média atual como entrada ao desenhar copas e folhagem, tornando-as mais transparentes quanto menor for o valor.

    Legenda (Imagem 1 – profundidade da cena | Imagem 2 – resultados da consulta, onde vermelho representa os pixels ocluídos. | Imagem 3 – copas de árvores desenhadas com base nos resultados da consulta. | Imagem 4 – silhueta | Imagem 5 – cena final)

    Um último detalhe importante: Como estamos usando valores calculados com base no que foi desenhado no quadro anterior para modificar o que foi desenhado no atual, sempre que preparamos uma consulta, nos certificamos de que ela toma em consideração as copas e a folhagem como se a respectiva transparência não fosse afetada por este recurso. Se não fizéssemos isso, não obteríamos resultados estáveis, e os valores de transparência finais alternariam bastante.

    Até logo, por agora!

    Para fechar, esperamos que vocês aproveitem essas modificações! Nós acreditamos que elas serão uma melhoria enorme para a maioria dos jogadores. No entanto, também reconhecemos que alguns podem preferir jogar sem elas, ou que temam que elas possam tornar o RuneScape menos imersivo. Portanto, embora essas melhorias de visibilidade sejam ativadas por padrão no lançamento para os dispositivos que as suportem, elas não permanecerão ativas durante sequências de cenas ou ao usar a câmera livre. Também haverá uma opção nas configurações gráficas para desativá-las.

    Isso resume tudo. Espero que você tenha gostado deste blog e que esteja ansioso para ver essas melhorias na visibilidade! Esperamos lançá-las junto com o nosso evento de Páscoa.


    Mod Saj

    Voltar ao início