A tecnologia Northlight em Alan Wake 2
(remedygames.com)- A equipe Northlight da Remedy criou ou reformulou profundamente tecnologias centrais, da arquitetura do motor à renderização, para Alan Wake 2, estabelecendo a base para lidar com mundos maiores e mais complexos
- O novo modelo de objetos de jogo baseado em ECS aumenta a eficiência de memória e a execução paralela segura, permitindo criar mundos mais dinâmicos em hardwares com diferentes quantidades de núcleos de CPU
- O controlador de personagem baseado em voxel e a movimentação de NPCs baseada em animação ajudam os personagens a se mover de forma natural mesmo em espaços estreitos e complexos, enquanto a ferramenta Scattering dá suporte à criação de vegetação densa
- A renderização usa pipeline orientado por GPU com mesh shader, culling de meshlets, animação de vegetação baseada em GPU, HDR e renderização de transparência MBOIT para processar mais geometria e efeitos de neblina e transparência
- A versão para PC usa DLSS Frame Generation, DLSS Ray Reconstruction e Path Traced Indirect Lighting quando a configuração de hardware permite, oferecendo ray tracing mais preciso e robusto do que em Control
Motor Northlight e tecnologias de base de gameplay
- Durante o desenvolvimento de Alan Wake 2, a Northlight migrou para um framework de objetos de jogo orientado a dados totalmente novo
- O novo modelo é baseado em um sistema de componentes de entidade (ECS)
- O ECS permite armazenamento eficiente em memória e execução paralela eficiente e segura
- Ele dá suporte eficiente a diferentes quantidades de núcleos no hardware de destino, permitindo criar mundos maiores, mais dinâmicos e mais ricos
- A ferramenta Scattering para posicionamento de vegetação em grande escala também aproveita as vantagens do ECS
- É possível posicionar mais entidades no mundo
- Reduz a necessidade de criar soluções separadas e personalizadas para dispersão de objetos
- No desenvolvimento de gameplay, o ECS também acelera o trabalho iterativo
- Foi usado para implementar o Case Board, o storyboard visual em que Saga reúne evidências
- Ficou mais fácil adicionar e modificar novos sistemas ou objetos de jogo
- Houve ganhos de desempenho no salvamento e carregamento do Case Board
Controle de personagem e movimentação de NPCs
- Alan Wake 2 levou a Northlight a redesenhar o controle de personagem
- O novo controlador de personagem baseado em voxel permite navegação suave em ambientes estreitos, complexos e dinâmicos
- O movimento dos personagens se tornou mais natural e fluido
- O foco foi reduzir problemas de personagens esbarrando ou ficando presos em objetos em espaços apertados
- A movimentação dos NPCs também foi amplamente reformulada
- Todos os NPCs usam movimentação baseada em animação junto com o novo Motion Matching baseado em distância
- A qualidade da movimentação melhora, e há mais controle sobre quando e como as animações são usadas
Vento, vegetação e ferramentas de scripting
- O vento realista de Alan Wake 2 afeta física, partículas e tecido
- Os game designers podem definir facilmente velocidades de vento diferentes para áreas internas e externas
- A transição entre as duas áreas acontece de forma suave e sem estado
- Dentro do carro em que Saga e Casey viajam, aplica-se uma wind box móvel para definir o interior do veículo como uma área interna sem vento
- O sistema de vento foi construído sobre a abordagem de Signed Distance Fields (SDF)
- A wind box é usada como uma primitiva que define um campo global suave de intensidade do vento
- Ela funciona como um bloco básico que determina a força do vento em cada área, criando padrões suaves entre ambientes internos e externos
- A nova ferramenta Scattering foi desenvolvida para criar vegetação em larga escala e objetos de ambiente
- Ela foi usada para criar os ambientes mais densos, ricos e vivos de Alan Wake 2
- É usada junto com uma distância de visão (draw distance) maior do que antes, permitindo ao jogador ver objetos e detalhes mais distantes
- A linguagem de scripting mudou de uma linguagem própria para Luau, a linguagem de scripting embarcada derivada de Lua pela Roblox
- O Luau expõe amplos recursos do motor e oferece suporte a edição ao vivo
- Ele é usado em vários sistemas de gameplay, como scripting de fases e o sistema de upgrade de armas
- A equipe do jogo pôde prototipar e implementar vários recursos de gameplay e efeitos de VFX sem ajuda dos programadores do motor
- A Remedy criou sua própria extensão de servidor de linguagem para VS Code e a integrou ao pipeline de desenvolvimento
- A adoção do Luau removeu cerca de 80.000 linhas de código que deixaram de precisar de manutenção
Renderização centrada em GPU e animação de vegetação
- Alan Wake 2 mostra o novo pipeline de renderização orientado por GPU da Northlight
- Ele permite colocar mais geometria no mundo sem sacrificar desempenho
- A renderização orientada por GPU usando mesh shader permite culling por oclusão com precisão de um único pixel
- Todos os elementos da cena podem ser usados como oclusores
- Graças à capacidade de desenhar apenas o que está visível, o mundo de Alan Wake 2 tem mais detalhes geométricos do que lançamentos anteriores
- O pipeline de renderização faz culling não só de meshes, mas também de meshlets
- Meshlets são grupos menores e otimizados de triângulos extraídos de uma mesh
- A estrutura de meshlets pode ser vista no exemplo da loja de conveniência em Cauldron Lake
- O vasto ambiente de floresta primitiva foi implementado com um novo sistema de vegetação baseado em shader
- Esse sistema é baseado em um novo sistema de skinning executado inteiramente na GPU
- Ele dá suporte a animação de bone shader guiada por arte
- Em Alan Wake 2, isso permite usar rigs no estilo de personagens em toda a vegetação visível no ambiente
- O bone shader expõe uma API que permite aos artistas escreverem diretamente o código do shader e conectá-lo ao sistema base
- A tecnologia pode ser aplicada não só à vegetação, mas também a objetos balançando sobre a água ou fios tremendo ao vento
- Em Cauldron Lake, quase 300.000 bones são processados a cada frame
HDR, renderização de transparência, VFX e ray tracing
- Alan Wake 2 oferece suporte completo a HDR
- Ele foi ajustado para ter boa aparência tanto em telas SDR quanto HDR usando apenas as configurações padrão
- O suporte a HDR exigiu uma nova abordagem para tone mapping
- A colorização foi feita por um colorista profissional com HDR como referência, para preservar o estilo artístico, a atmosfera e a narrativa tanto em HDR quanto em SDR
- As cenas com neblina densa se baseiam em melhorias na renderização de transparência
- A Northlight reformulou completamente a renderização de transparência durante o desenvolvimento de Alan Wake 2
- Usa MBOIT (Moment-Based Order-Independent Transparency) para misturar suavemente superfícies transparentes com diferentes níveis de detalhe
- Os elementos transparentes são desenhados com MBOIT em três resoluções
- Isso permite mesclar sem falhas neblina, geometria transparente e efeitos
- O pipeline para controlar com mais precisão o posicionamento da neblina no mundo também foi melhorado
- Ao combinar iluminação transparente em nível de pixel e reflexos afetados pela neblina, elementos opacos e transparentes se integram melhor do que em projetos anteriores
- A neblina aproxima espalhamento múltiplo de luz para criar uma atmosfera espessa e realista
- A ferramenta de VFX baseada em nós da Northlight avançou bastante em recursos de suporte e desempenho em runtime
- Artistas de VFX podem criar efeitos complexos e dinâmicos, como chuva, umidade, simulação de água e ferimentos em personagens
- A ferramenta de VFX também aproveita a renderização orientada por GPU para processar muita geometria na GPU
- Um exemplo é a renderização de objetos rain blocker em máscaras dinâmicas para impedir que a chuva apareça em áreas internas ou cobertas
- O ray tracing dá suporte completo a ray-traced direct lighting
- Em parceria com a Nvidia, ele combina redução de ruído aprimorada com algoritmos de iluminação indireta
- O ray tracing de Alan Wake 2 é mais preciso e robusto do que o visto em Control
- Como toda a animação da geometria de vegetação é criada e simulada com skinning, o ray tracing melhora a aparência da vegetação animada
- Jogadores de PC podem usar as tecnologias mais recentes da Nvidia DLSS se a configuração de GPU e CPU permitir
-
DLSS Frame Generation
-
DLSS Ray Reconstruction
- Path Traced Indirect Lighting
-
1 comentários
Opiniões no Hacker News
Considerando que a Remedy é um estúdio inteiro com algumas centenas de pessoas, é uma empresa que sempre entrega acima do seu peso em gráficos
Entre os nomes em ascensão, só Remedy e CD Projekt Red parecem capazes de competir com grandes engines como Unreal, Unity e EA Frostbite em termos de qualidade de imagem e desempenho
Se você se interessa por computação gráfica ou arte técnica, as apresentações deles na GDC/SIGGRAPH são excelentes
Alan Wake 2 é tecnicamente um dos jogos mais bonitos de todos os tempos e, pessoalmente, acho que artisticamente também. O fato de ele continuar bonito mesmo com tudo no mínimo é uma conquista de verdade, porque é difícil escalar para hardware antigo e ainda assim manter uma boa aparência
Porém, como analistas como a Digital Foundry disseram, se a GPU não tiver suporte a mesh shaders, o desempenho fica muito ruim. Este texto também menciona o uso de mesh shaders para culling, o que permite criar objetos perfeitamente arredondados, como xícaras de café ou pneus, sem cair no problema do tipo “cada NPC tem dentes com 10 mil polígonos dentro da boca”, que arruína o desempenho de Cities Skylines 2. Uma das grandes vantagens que o Nanite da Unreal 5 oferece também está nesse ponto
Dá para traçar uma linha bem clara da incrível demo Second Reality, de 1993, até Alan Wake 2, 30 anos depois
https://www.youtube.com/watch?v=iw17c70uJes
O problema de desempenho é muito maior do que simplesmente “renderizar dentes que não são visíveis”: https://blog.paavo.me/cities-skylines-2-performance/
Como exemplo, é fácil de entender, mas o problema maior é a ausência de LOD e a falta de culling
A CD Projekt Red não está migrando seus próximos trabalhos para a UE5? Uma pena. Cyberpunk era realmente lindo, e eu queria ver um jogo multiplayer feito com aquela engine
A CDPR tem 1236, a DICE, que criou a Frostbite, tem 714, e a Epic tinha 2200 antes das demissões recentes
Todos são números da Wikipedia
Se não forem as pessoas que definiram e popularizaram a computação gráfica moderna, quem mais levaria a GPU ao limite?
Já no primeiro exemplo incomoda bastante ver os pés deslizando no chão, ou o personagem sendo bloqueado por um objeto e não conseguindo avançar, mas escorregando como se estivesse andando no lugar
Fico me perguntando quando esse tipo de problema será resolvido
Claro que a engine em si é impressionante, e os efeitos visuais e sistemas estão entre os melhores que já vi
Em RDR2, as animações são muito realistas, mas os controles passam uma sensação um pouco “flutuante”
Pessoalmente, prefiro um movimento ágil em que, ao apertar para a esquerda, o personagem na tela se move imediatamente para a esquerda. Um sistema de animação que parece mais realista acaba criando atraso até que a animação dos pés consiga “alcançar” a entrada do jogador
Mas raycasting contínuo e cálculos de IK não saem de graça, então também há uma troca com desempenho, além de entrarem em conflito com a responsividade
Muitos jogos escolhem movimento mais rápido e controles mais responsivos. No fim, tecnicamente é um problema resolvido há anos, mas, como tudo em design de jogos, é uma questão de escolha e compromisso
É uma técnica usada pela Naughty Dog e por muitos outros. Mas, como disseram outros comentários, a tensão fundamental entre responsividade e precisão da animação continua existindo
Em Control, obra anterior da Northlight, isso era menos perceptível [2]
[1] https://youtu.be/jQb07FHJ-bQ?t=628
[2] https://youtu.be/fcDK6tnx4vM?t=6700
Na prática, era sobre um algoritmo que mistura animações para fazer as transições parecerem naturais
É revigorante ver algo que não é mais um jogo baseado na Unreal Engine
Ter uma engine interna própria deve ser extremamente difícil; a engine em si já é um problema, mas talvez as ferramentas para criar níveis, animações etc. sejam ainda mais difíceis
Mesmo assim, também deve haver vantagens. Com mais controle sobre a arquitetura de baixo nível, surgem mais oportunidades de otimização. Isso é mais difícil em uma engine genérica como a Unreal
Estou ansioso para jogar este jogo
Ainda não entendo por que a compilação de shaders causa travadinhas, e a maioria das outras engines internas não tem esse problema. Também não sei por que isso ainda não foi melhorado. Mesmo que uma atualização com correção saísse amanhã, levaria anos até os jogos aproveitarem isso
Com tantas engines prontas e com grandes comunidades, para fazer a sua própria você realmente precisa necessitar de controle total
Gosto do tom do texto
Por exemplo, gostei da parte em que a equipe de marketing diria que “os personagens estão mais responsivos e vivos do que nunca”, mas as notas internas de desenvolvimento dizem que “os personagens não batem em objetos nem ficam presos em espaços estreitos”
A frase inteira é marketing, e a comédia dentro dela também é marketing
Fico curioso para saber o que a Remedy pensa hoje sobre usar a linguagem D no ecossistema. Se ainda estiverem usando, também gostaria de ver quais dificuldades enfrentaram durante o desenvolvimento de AW2
Referência: Using an Emerging Language in Quantum Break (https://ubm-twvideo01.s3.amazonaws.com/o1/vault/gdceurope201...)
DConf 2016: Quantum Break: AAA Gaming With Some D Code -- Ethan Watson (https://www.youtube.com/watch?v=7YjLW7anNfc)
O que é certo é que agora eles também não estão procurando programadores D
Se quiser investigar as fontes, este link pode servir como ponto de partida: https://forum.dlang.org/post/lymybpygzfalbdgoaizr@forum.dlan...
Considerando que a pessoa que fez aquela apresentação não trabalha mais lá, e que até lugares grandes como o Facebook deixaram de usar D, imagino que eles não usem mais. Ainda assim, eu gostaria que se provasse que estou errado
Quando essa pessoa sai ou deixa de estar em uma posição em que pode contribuir e manter aquilo, a tecnologia começa aos poucos a ser substituída, a menos que haja apoio e adoção pelo restante da equipe e do estúdio
Pelo que ouvi, havia uma pessoa que insistiu em escrever em D, mas não sei se ela ainda está lá
Lembro que parte da equipe que produzia conteúdo de altíssimo nível no Unreal Marketplace também participou deste jogo
https://mawiunited.com/
É um conteúdo excelente. Seria bom ver mais estúdios criando conteúdo para UE5 desse tipo
É interessante que eles tenham migrado para usar Luau, do Roblox, como ambiente de scripting
Sempre me perguntei por que tantos lugares na tecnologia de jogos usam Lua para scripting. Especialmente quando estão projetando algo do zero
Qualquer coisa que possa usar o runtime de C consegue embutir scripting em Lua
Por isso ela acabou sendo usada quase como opção padrão, de Baldur’s Gate 1 e Warcraft III até títulos modernos como Roblox
O movimento dos personagens ainda parece cair bastante no vale da estranheza
No vídeo “controlador de personagem baseado em voxel”, a caminhada parece que está deslizando, e nos primeiros segundos de “movimentação de NPC” o jeito de andar também parece estranho
Acho que é porque cada passo é exatamente igual e todos usam o mesmo comprimento de passada. Por isso os personagens se movem de um jeito estranhamente sincronizado
Na parte final do vídeo, quando os personagens alternam individualmente entre caminhar e correr, há muito mais variedade no movimento e ele parece bem mais realista. Fico curioso por que é tão difícil inserir mais diferenças sutis de movimento de forma geral
Mas, para reforçar esse ponto, quase todos os NPCs amigáveis ficam parados. Quando os inimigos vêm em bando em áreas hostis, você não presta atenção em como eles caminham e, de qualquer forma, eles ficam encobertos pela névoa
Pessoalmente, vejo Control como uma demo técnica de tudo isso. Isso também explica por que há muito menos inimigos e por que ele é estruturado como uma história de terror
Então eles têm um motor de jogo ECS, um renderizador de nível AAA, uma tecnologia parecida com Nanite, um motor de scripting baseado em Lua e animação facial em nível Hollywood?
Eles deveriam lançar esse motor. Poderia ser um concorrente forte da Unreal. Graças ao ECS, ele seria mais escalável, e também seria mais fácil escrever em Luau
Descobri isso de forma dolorosa ao tentar comprar o jogo no Linux. Então competir com a Unreal provavelmente prejudicaria essa relação
Mas transformar software interno em um produto que outras pessoas possam usar é algo completamente diferente
É verdade que a Remedy adotou um pipeline de meshlets, mas isso já está perto de ser o padrão em renderização de ponta. Não vi nenhuma menção ao uso de compute shaders para renderizar de fato triângulos minúsculos como o Nanite faz, mas posso ter deixado passar
Agora Alan Wake 2 mal roda nas configurações High mesmo com ray tracing desligado
Visualmente é um motor impressionante, mas, pessoalmente, acho que os requisitos de sistema são altos demais
A arquitetura entidade-componente-sistema (ECS) também é usada em engines de jogos open source mais jovens, como a Bevy[1]
Faz tempo que não desenvolvo jogos, mas ouvir falar de uma arquitetura que remove a orientação a objetos pesada e complexa que eu via com frequência em jogos me deu vontade de voltar a me envolver com isso
[1]: https://bevyengine.org/
Ela começou a ganhar força no início dos anos 2000 e, embora hoje não seja universal, há muito tempo é usada como uma espécie de base; o mesmo vale para algumas engines open source
Por exemplo, veja https://github.com/Adelost/entity-component-systems-study#re...