NVIDIA GameWorks não permite aumentar a otimização nos motores gráficos dos jogos e gera muita polêmica

#Notícia Publicado por leostrife, em .

IMAGEaHR0cDovL3d3dy5mcmFtZWJ1ZmZlci5jb20uYnIvd3AtY29udGVudC91cGxvYWRzLzIwMTMvMTAvR0FNRVdPUktTLmpwZw==

NVIDIA lançou há alguns meses atrás o seu conjunto de ferramentas para desenvolvedores, o GameWorks foi especialmente criado para ajudar a criação de games. Entre os vários recursos oferecidos pelo pacotão de software, um está se mostrando controverso para a indústria de games que é o conjunto de bibliotecas otimizadas que a empresa oferece para a criação de games com suas placas de vídeo.

Para quem não sabe o que significa uma biblioteca em computação, vai um resumo: é um conjunto de códigos devidamente organizados que ajudam a resolver determinados problemas para o desenvolvedor, sem que ele precise desenvolver do zero tais peças de códigos. Um motor gráfico por exemplo é um tipo de biblioteca, onde organiza e expõe um conjunto de funções específicas para gerar gráficos e administrar seus recursos.

O GameWorks Library da NVIDIA vai neste caminho, também é um conjunto de rotinas e algorítimos implementados que extraem a melhor performance possível (em teoria) do hardware NVIDIA, descomplicando a vida do desenvolvedor. Estas bibliotecas permitem o jogo implementar efeitos de sombras, ambient occlusion e iluminação mais facilmente.

NVIDIA libera para uso as bibliotecas, porém o acesso ao seu código é estritamente fechado, ela não permite que ninguém altere ou otimize nada além daquilo que ela queira através de parametrizações.

E aí o problema começa

O GameWorks já começou a ser inserido nos jogos mais recentes como Batman: Arkham Origins (Warner Bros), Assassin's Creed IV (UBISOFT) e Splinter Cell: Blacklist (UBISOFT). No caso do jogo Batman, sempre as NVIDIA tiveram uma vantagem estranha (TWINTBP) perante as Radeons, porém na última versão do jogo da série (Origins), algo está fazendo uma placa de gama inferior da NVIDIA competir quase de igual para igual com uma poderosa R9 290X da AMD. Veja os dois gráficos abaixo:

IMAGEaHR0cDovL3d3dy5mcmFtZWJ1ZmZlci5jb20uYnIvd3AtY29udGVudC91cGxvYWRzLzIwMTMvMTIvQXJraGFtT3JpZ2luLURYOTIucG5n

IMAGEaHR0cDovL3d3dy5mcmFtZWJ1ZmZlci5jb20uYnIvd3AtY29udGVudC91cGxvYWRzLzIwMTMvMTIvQXJraGFtT3JpZ2lucy1EWDExMS5wbmc=

Como podemos ver claramente, tanto em DX11 como em DX9, a versão última, o Batman: Arkham Origins apresenta uma estranha e pequena diferença de taxa de quadros se comparando uma GTX 770 contra a R9 290X, duas placas com performances sabidamente diferentes e etiquetas de preço igualmente destoantes. Repare que em Arkham City, a penúltima versão da série e lançada em 2011, a diferença de performance é significativamente mais a favor da R9 290X, (GameWorks não existia nesta época). Estranho? Tem mais.

A outra razão para suspeitarmos do resultado de Arkham Origins é a existência de um recurso chamado Tessellation nas atuais placas DirectX 11 que aumenta o nível da malha geométrica nos objetos em cena. Sabidamente NVIDIA sempre teve as unidades de processamento mais poderosas para processamento de Tessellation, porém muitas destas vantagens frente à competição são diluídas quando o desenvolvedor faz uma otimização na malha mais compatível com as capacidades das Radeons sem que exista perda na qualidade da imagem.

Mais especificamente no jogo Arkham Origins, o GameWorks está sendo encarregado de gerir a malha criada via Tessellation no cenário. Nos testes feitos pelo extremetech.com , percebe-se um esforço de 30% a 40% a maior das Radeons em processar o efeito perante às NVIDIAs, o que acaba por comprometer a performance final. Mas o que pode estar acontecendo? Olhando mais detalhadamente a malha gerada, temos isso :

IMAGEaHR0cDovL3d3dy5mcmFtZWJ1ZmZlci5jb20uYnIvd3AtY29udGVudC91cGxvYWRzLzIwMTMvMTIvQ2FwZS1CZW5jaG1hcmstU3RhbmRhcmRUZXNzZWxsYXRpb24tNjQweDM2MC5qcGc=

IMAGEaHR0cDovL3d3dy5mcmFtZWJ1ZmZlci5jb20uYnIvd3AtY29udGVudC91cGxvYWRzLzIwMTMvMTIvQmF0bWFuQ2FwZS1SZWFsLTY0MHgzNjAuanBn

IMAGEaHR0cDovL3d3dy5mcmFtZWJ1ZmZlci5jb20uYnIvd3AtY29udGVudC91cGxvYWRzLzIwMTMvMTIvQmVuY2htYXJrV2lyZWZyYW1lLUdyb3VuZC02NDB4MzYwLmpwZw==

IMAGEaHR0cDovL3d3dy5mcmFtZWJ1ZmZlci5jb20uYnIvd3AtY29udGVudC91cGxvYWRzLzIwMTMvMTIvQmF0bWFuQU8tR3JvdW5kLTY0MHgzNjAuanBn

Repare que nas duas sequências de fotos acima, a primeira em rosa sempre mostra como a malha está sendo calculada e apresentada nas cenas, repare que existem muitas superfícies planas que apresentam um excessivo número de geometria interligada que sobrecarrega os motores de tessellação das placas de vídeo. Este impacto é menor nas NVIDIAs, pois elas tem um tessellator mais forte, porém nas Radeons, isso vai se traduzir diretamente em menos quadros por segundo.

Aí chega a turma "esperta" que diz que AMD não otimiza jogos , tem suporte ruim e tudo mais, porém neste e em vários casos não é bem isso o que acontece, AMD enviou para o desenvolvedor da Warner Bros em Montreal do Batman Arkhan Origins códigos especialmente criados para otimizar a malha do tessellator permitindo rodar melhor nas suas placas, também foi enviado fixes para que o jogo pudesse rodar sem bugs no CROSSFIRE. Estranhamente e sem muitas explicações, o estudio ignorou ambas as alterações sugeridas pela AMD.

Por que será que Montreal ignorou os ajustes ofertados pela AMD para tentar melhorar a performance no Batman Arkhan Origins? A princípio não se sabe se o culpado é o GameWorks, não existem provas aqui. Mas o exemplo que a WD Games deu, foi de um tratamento altamente injusto ao usar de critérios obscuros para rejeitar o suporte oferecido pela AMD que terminaria por não extrair toda a performance do game nas Radeons. Ao final, este tipo de atitude estranha contribuirá certamente para que o consumidor tenha uma percepção incorreta do que realmente acontece neste mercado, o costumeiro "AMD constrói hardware de GPU poderoso, mas seus drivers são uma porcaria" acaba persistindo no mito popular. Este tipo de ocorrência já foi descrita em vários outros games, inclusive no primeiro game da série Batman, onde NVIDIA impôs um modo próprio de efeitos de anti-aliasing e travou a possibilidade dele funcionar em hardware concorrente, Crysis 2 também já teve um problema semelhante com o tessellation, Call of Juarez foi outro, abordamos vários destes problemas aqui já a alguns anos. Algo semelhante também acontece com o proprietário NVIDIA PhysX, existem otimizações neste motor físico da NVIDIA que somente rodam em suas placas de vídeo, porém quando rodando em Radeons, elas passam a funcionar na CPU, o que afeta a performance como um todo, NVIDIA também não deixa que AMD otimize o código para suas Radeons, gerando outra situação de jogo injusto.

Um campo de jogo fundamentalmente desigual

O que o NVIDIA GameWorks faz dentro das suas bibliotecas é algo que somente os desenvolvedores da NVIDIA sabem, todas as otimizações possíveis para o hardware dela estão lá, porém ela não é obrigada a otimizar recursos como Tessellation para o hardware da AMD, apesar da biblioteca emitir os comandos também para o tessellator das Radeons. O problema é conceitualmente semelhante ao que ocorria a uma década atrás, quando compiladores da Intel se recusavam a otimizar código para os processadores da AMD, mesmo esta tendo pago para a Intel pelo uso e implementação das instruções especiais SSE, SSE2 e SSE3.

A situação final termina diferente para a AMD, ao invés de um compilador, os desenvolvedores tem apenas um conjunto de códigos já pré-construídos e prontos para uso, totalmente bloqueado de qualquer acesso, tanto por parte do desenvolvedor, como por parte da própria AMD.

Aqui cabe uma explicação, o GameWorks não força ninguém a usar sua biblioteca, porém ela corta muito caminho e custos ao desenvolvedor, é um verdadeiro canivete suíço, sabendo disso, é óbvio inferir que a direção de produção do jogo vai se sentir animada com qualquer ferramenta que possa contribuir para baixar o tempo de desenvolvimento e botar o game no mercado mais cedo gerando menores custos e mais LUCRO. Otimizar para o hardware da AMD, significa que o desenvolvedor vai precisar criar um "fork" ou uma divisão no motor gráfico e implementar o código especialmente criado para rodar nas RADEONS e isso toma tempo e dinheiro. Então que motivação o desenvolvedor vai ter para trabalhar mais, se o GameWorks te permite fazer isso já de uma forma padronizada também para AMD, mesmo que isso afete a sua performance marginalmente ou não? Nenhuma motivação. E se o desenvolvedor não quer fazer o trabalho de otimização corretamente, lacunas vão aparecer em seu trabalho no final.

IMAGEaHR0cDovL3d3dy5mcmFtZWJ1ZmZlci5jb20uYnIvd3AtY29udGVudC91cGxvYWRzLzIwMTMvMTEvR2FtZXdvcmtzR0FNRVMucG5n

O MANTLE da AMD chega para suprir exatamente este ponto e tentar enfrentar melhor o efeito ruim que o GameWorks provoca na concorrência e no mercado de games (leia a conclusão). Segundo AMD, para implementar o MANTLE, os custos de desenvolvimento aumentam em torno de 10% a 20%, porém trazem os melhores benefícios e as maiores otimizações possíveis aos games.

Conclusão

Estes tipos de manobras que o GameWorks faz, em não deixar que nada seja otimizado para o hardware concorrente trás complicações aos desenvolvedores ao invés de ajudá-los, pois mesmo que estes estudios quisessem ajuda da AMD, eles não poderiam ter se não colocassem mais recursos financeiros em jogo criando um segundo fork do motor gráfico.

Outro ponto problemático no GameWorks é que se NVIDIA decidir que determinados modelos não serão mais suportados, jogos como Batman: Arkham Origins, Assassin's Creed IV e Splinter Cell: Blacklist podem parar de funcionar na concorrência sem prévio aviso e dificultar a vida do jogador, o que tornaria praticamente impossível ele voltar a jogá-lo novamente. Otimizações ao longo do tempo também podem gerar problemas pois NVIDIA não está preocupada, como já foi dito, em melhorar a performance da concorrência, isso pode fazer que um belo dia você descubra que Assassin's Creed IV (por exemplo) rode a 10 FPS numa placa de vídeo poderosa mas de 2 ou 3 anos de idade.

Certamente esta situação gerada pelo GameWorks prejudica primeiramente os desenvolvedores que não conseguem (sem aumento dos custos) fazerem boas implementações de seus motores gráficos para rodar em todas as GPUs do mercado. O jogador é outro prejudicado, pois ele paga uma placa de R$ 2.000,00 para ter a performance que este preço permite, porém quando pega um jogo com GameWorks, ele acaba descobrindo que a performance é a mesma dos jogadores que pagaram bem menos pelas suas placas de vídeo de menor performance da NVIDIA.

E para terminar, outro grande perdedor é a AMD, que não consegue que suas otimizações sejam adequadamente instaladas nos motores gráficos dos desenvolvedores porque o GameWorks supre várias funcionalidades que seriam custosas para eles criarem do zero, AMD termina com a má fama dos drivers e suporte "ruim", certamente um jogo injusto de ser jogado pela empresa e que não começou com o GameWorks.

Leonardo
Leonardo #leostrife
, Volta Redonda/ Rio de Janeiro/ Brasil
Deixe seu comentário para sabermos o que você achou da publicação
Não se esqueça que você pode participar do nosso Discord.
E também nos seguir no Facebook, Twitter, Instagram e na nossa curadorida da Steam.