Unreal Engine 5.2 análise das características – será esta a resposta para a #StutterStruggle?

Unreal Engine 5.2 análise - a solução para o #StutterStruggle?

Quase três anos após a revelação inicial do Unreal Engine 5, estamos prestes a ter os primeiros grandes lançamentos de jogos da UE5, incluindo Immortals of Aveum, The Lords of the Fallen e Stalker 2: Heart of Chernobyl. Com o lançamento do Unreal Engine 5.2, parece ser o momento certo para dar uma olhada nas novas funcionalidades adicionadas na última revisão e como essas adições irão influenciar os jogos do futuro – incluindo títulos de desenvolvedores que anteriormente construíam suas próprias engines, como CD Projekt Red e Crystal Dynamics.

A geração procedural é a adição mais importante da UE5.2, como demonstrado através do demo Electric Dreams em março. Se você se lembra, os espaços apresentados na revelação original do Unreal Engine 5 com Lumen in the Land of Nanite e Valley of the Ancient foram construídos de uma forma muito específica. Os artistas colocaram e arranjaram manualmente cada pedacinho do ambiente a partir de ativos pré-fabricados, frequentemente gastando tempo copiando e colando esses ativos com mudanças de rotação e escala para criar os ambientes rochosos esparsamente povoados encontrados nesses demos. Embora essa técnica possa ser uma maneira eficaz de construir projetos em menor escala como essas apresentações, esse tipo de “kit bashing”, como é chamado, é talvez impraticável para a produção real de um jogo de vídeo. Isso requer muito trabalho manual e também é limitante do lado do motor, pois a sobreposição desperdiçada de muitos meshes prejudica o desempenho do Lumen acelerado por hardware para ray tracing.

No demo Matrix Awakens posterior, a Epic mostrou uma ferramenta procedural para popular ambientes urbanos, mas com o 5.2 eles lançaram outro sistema para ambientes naturais ao ar livre, como o visto no demo Electric Dreams. Aqui, o Nanite é usado não apenas para objetos opacos como rochas, mas também para objetos como folhas e arbustos que usam transparências com máscara alfa. Com base no meu primeiro contato com o demo e no próprio editor, essa técnica parece eficaz na geração de ambientes convincentes de alta qualidade a partir de um número limitado de ativos e pouca intervenção artística. Isso deve facilitar a população de grandes mundos com uma quantidade convincente de detalhes, com o Nanite fornecendo o detalhe necessário.

Algumas diferenças são melhores mostradas visualmente – então fizemos essa apresentação em vídeo só para você. Assista no YouTube

Outro efeito colateral positivo desse método de posicionamento mais sistemático ocorre em termos de desempenho, onde o Lumen acelerado por hardware agora pode rodar de forma mensuravelmente melhor na configuração épica padrão. Em um exemplo, medi uma melhoria de 14% na taxa de quadros em comparação com o Lumen de software na mesma resolução, ao mesmo tempo em que oferece um aumento perceptível nos detalhes de reflexão – permitindo que as folhas individuais sejam mostradas em vez de manchas mais amorfas na versão de software. A qualidade da iluminação difusa também é melhorada na implementação de hardware, pois a solução de software tendia a escurecer excessivamente as regiões sombreadas. Isso é uma melhoria sólida em relação aos ambientes baseados em kit, como Valley of the Ancient, onde o Lumen de hardware rodava significativamente pior, tornando-o essencialmente inutilizável apesar de sua maior qualidade.

Embora isso seja impressionante, é importante observar que essas generalizações tendem a ser verdadeiras quando limitadas pela GPU, mas cenários limitados pela CPU podem mostrar resultados diferentes. Por exemplo, executar o demo UE5.2 em uma resolução mais baixa, o Lumen de software proporciona um aumento de desempenho não insignificante de 10% em relação ao Lumen de hardware. Os requisitos de CPU também devem ser altos, pois mesmo com um Core i9 12900K e RAM DDR5 de 6400MT/s, o demo roda um pouco acima de 60fps em média. Ao percorrer o mundo em uma velocidade mais alta, o demo se torna cada vez mais limitado pela CPU e o desempenho sofre – e ocorrem soluços – como resultado.

Curiosamente, apesar de ser um motor moderno, o UE5 ainda não parece escalar bem em CPUs com mais núcleos e threads – ecoando resultados do ano passado. Por exemplo, passar de seis para oito núcleos no 12900K aumenta o desempenho limitado pela CPU em apenas seis por cento, enquanto ativar a hiper-threading aumenta o desempenho mais quatro por cento nessa sequência de teste. Ativar mais oito núcleos eficientes também não melhora as taxas de quadros.

Depois de seis núcleos/threads, o UE5 não apresenta ganhos de desempenho significativos – então os processadores modernos ficam subutilizados.

Dado o quão comum o UE5 parece se tornar nos próximos anos, isso é um pouco decepcionante – especialmente porque a contagem média de núcleos da CPU continua a aumentar. Para contextualizar, em Cyberpunk 2077 vemos um aumento de 88% na taxa de quadros ao passar de quatro núcleos para 16 núcleos no 12900K, enquanto no demo Electric Dreams vemos apenas uma melhoria de 30%. Com base nisso, o UE5 ainda tem muito espaço para crescer em termos de aproveitar processadores modernos multithread.

Se você estiver usando uma placa de vídeo Ada Lovelace (série Nvidia RTX 40), o DLSS 3 Frame Generation pode ser uma contramedida eficaz e fácil de implementar para os desenvolvedores, exigindo apenas 11 cliques no total após encontrar o plugin no Unreal Engine Marketplace. Com ele ativado, eu medi uma melhoria de 97% na taxa de quadros nesse cenário limitado pela CPU. Acredito que isso torna o DLSS3 (e futuros equivalentes da AMD e Intel) uma inclusão óbvia para os desenvolvedores que criam jogos com UE5.

Outra atualização importante de desempenho no UE5.2 é uma melhoria no comportamento da compilação de shaders – algo que os leitores regulares sabem que sempre me incomoda. A única maneira de evitar engasgos na compilação de shaders no UE4 e UE5.0 é fornecer uma etapa de pré-compilação antes do início do jogo. Isso está disponível em alguns títulos do UE4, mas requer que os desenvolvedores joguem o jogo metodicamente para construir uma biblioteca completa de todos os shaders encontrados pelos jogadores – e se algo for perdido, ainda ocorrem engasgos.

O Software Lumen pode ser excessivamente escuro em comparação com a versão hardware, como você pode ver nesta captura.

No UE 5.1 e em uma atualização correspondente do Fortnite, a Epic adicionou um esquema de compilação de shaders assíncrono que funcionava em tempo real, pré-compilando shaders em segundo plano na CPU durante o jogo para tentar evitar engasgos. Essa técnica não é perfeita, pois se um shader precisasse ser desenhado, mas não estivesse pronto, o jogo engasgaria. No UE5.2, esse sistema assíncrono é mais preciso e adiciona criticamente a capacidade do desenvolvedor de atrasar a exibição do shader até que ele esteja completamente compilado, eliminando assim completamente todos os engasgos relacionados a shaders – mas com a possibilidade de um efeito visual ou material ser exibido um pouco mais tarde do que seria de outra forma.

Esse novo pré-cache assíncrono de shaders e o novo recurso skipdraw do 5.2 têm um efeito transformador com base nos meus testes, eliminando os maiores engasgos (~500ms) e melhorando drasticamente a fluidez. No entanto, isso não elimina completamente os engasgos, com alguns exemplos de 30-50ms persistindo que não são encontrados em um cache completamente “aquecido”. Alguns desses podem ser atribuídos ao engasgo de travessia, que o UE5 herdou do UE4 – e ainda pode ser encontrado na versão mais recente do Fortnite rodando o Unreal Engine 5.2.

Em termos de engasgos, o Unreal Engine 5.2 certamente é uma melhoria – mas o engasgo de travessia precisa ser resolvido e até mesmo o novo sistema assíncrono de cache de shaders não é uma solução milagrosa na qual os desenvolvedores possam confiar totalmente para uma experiência de jogo suave. Em primeiro lugar, parece não estar ativado por padrão, o que alguns desenvolvedores podem perder, e em segundo lugar, ele produz alguns engasgos que são corrigidos pelo método mais tradicional de cache de shaders. Portanto, provavelmente faz sentido combinar esse novo sistema assíncrono com o antigo sistema de pré-cache offline para produzir a experiência mais suave no PC.

Será fascinante ver como esses dois novos recursos do Unreal Engine 5.2 serão implementados em jogos de terceiros, desde Immortals of Aveum em agosto até The Lords of the Fallen em outubro e Stalker 2 em dezembro. 2023 ainda não se mostrou o ano que eu esperava para os jogos de PC – mas ainda há tempo para mudanças, e o UE5.2 pode desempenhar um papel fundamental.