Passar para o conteúdo principal

Making of Killzone 3

A DF fala com a Guerrilla sobre o seu mais recente milagre técnico.

Quanta melhoria este sistema de culling oferece é incerto, mas é um componente crucial no sistema de rendering e uma técnica chave no uso do tempo de SPU em processamento RSX desnecessário. Muitos estúdios lamentaram as fraquezas do chip da NVIDIA no cálculo da geometria. Esta técnica ajuda a assegurar que o RSX não está a trabalhar em elementos 3D que vão simplesmente ser cobertos por outros elementos à sua frente que os cobrem completamente.

"É difícil quantificar o que te dá exactamente porque precisas de o comparar a algo," diz Michiel como conclusão.

"Comparado a Killzone 2 penso que temos menos 10 a 30 por cento overdraw e primitivos a serem desperdiçados (por isso mais do que enviamos para o RSX acabam no ecrã e a serem desenhados) mas depende das circunstâncias."

Uma das mudanças principais no aspecto do jogo foi a passagem do quincunx anti-aliasing baseado no hardware RSX para a tecnologia MLAA desenhada pelo ATG (Advanced Technology Group) da SCEE. A MLAA já provou o seu valor em God of War III e mais recentemente, LittleBigPlanet 2, e é actualmente um componente dentro das ferramentas PlayStation Edge disponíveis a todos os estúdios PS3. A decisão para mudar foi curiosa – QAA tem contras óbvios em termos da qualidade de imagem, mas os resultados em Killzone 2 ia bem ao encontro do resto da estética do jogo.

No entanto, a sensação dentro da Guerrilla foi de que na balança, a nova tecnologia do ATG iria tornar melhor o aspecto do próximo Killzone, portanto decidiram usá-la.

"Uma das grandes razões para a mudança foi o facto de realmente gostarmos do aspecto da MLAA. A Quincunx sempre teve um pequeno efeito de nódoa no ecrã e apesar de ter os seus encantos, também tornava tudo um pouco enevoado," explica Michiel.

"Com a MLAA tudo ficou mais límpido e as texturas pareciam mais apuradas, e se queremos tudo um pouco mais suave temos o campo de profundidade, brilho e motion blur que podemos ajustar."

O objectivo com Killzone 3 não foi simplesmente introduzir maior variedade no aspecto visual do jogo mas também reduzir o 'enevoamento' e criar um jogo mais limpo e apurado.

Outras vantagens na mudança foram de natureza mais técnica. Os melhores resultados gráficos que vimos na PlayStation 3 surgem quanto o RSX e o Cell trabalham em conjunto. Tarefas que se mostram problemáticas ou dispendiosas computacionalmente para o chip gráfico podem ser descarregadas para os fenomenalmente rápidos SPUs do Cell, e a precisão desses efeitos é também frequentemente superior uma vez que os SPUs são capazes de lidar com código mais complexo do que os núcleos shader de um GPU.

O componente NVIDIA dentro da PS3 é também conhecido pelos seus problemas com largura de banda – a quantidade física de dados que pode meter na sua memória GDDR3 de 256MB alocados. Qualquer tipo de multi-sampling anti-aliasing consome muita largura de banda: de forma simples, ao voltar as costas ao quincunx, a Guerrilla iria ter mais tempo de GPU para investir noutro lado para criar um jogo com melhor aspecto.

"Com a MLAA reduzimos a nossa carga no RSX um bom bocado, reduzimos para metade o tamanho dos G-buffers e alguns dos re-primes de profundidade/estampagem entre passagens não foram mais necessários, o que nos deu adicionais aumentos na velocidade," observa van der Leeuw.

"No final deu-nos de volta uns bons ciclos RSX e memória, que investimos novamente em streaming de texturas, campo de visão, qualidade de sampling de texturas e – mais indirectamente – a variedade nos personagens, cenários e por aí adiante."

Mas a MLAA não é uma bala mágica que te dá espantosa qualidade na suavização de arestas em troca de nada – passar o processamento do anti-aliasing para o Cell e os seus SPUs significa que a Guerrilla tem que agendar cerca de 4-5ms por SPU e também houveram implicações na largura de banda e RAM XDR.

"Já estávamos a fazer a maioria dos nossos efeitos de pós processamento nos SPUs, mas com a MLAA a passar também para os SPUs tivemos toda a pós corrente a correr aqui. Também precisamos de inserir todo um buffer de resolução de cor na RAM XDR assim de repente, portanto tivemos que sofrer um golpe aqui," diz Michiel, referindo-se aos 2.7MB de memória que precisaram encontra na RAM do sistema principal.

Isto pode parecer bem trivial, mas ter todo a corrente de pós-processamento no SPU significa que uma boa quantidade de espaço XRD está a ser alocado para efeitos visuais e outros dados de jogo. Ecrãs debug vistos no documentário de produção de Killzone 2 mostram uma considerável quantidade de memória a ser usada pela I.A., física e detecção de colisões com som, mesh data e animação gráfica a ocupar significantes quantidades de espaço disponível. Tendo em conta que cerca de 48MB de XDR está na mesma a tomar conta do sistema operativo base da PS3 e os desafios perante a Guerrilla tornaram-se mais claros.

Claro, o estúdio passou muito tempo a optimizar sistemas existentes a mover código consumidor de tempo do núcleo PPU principal para os SPUs dentro do Cell.

A Guerrilla tem uma ferramenta interna chamada Autobot que mede dados in-game de posições em cada nível especificadas pelos artistas. Esta aplicação correr várias vezes por dia, estudando o impacto das mudanças na performance do código que fizeram, tirando ainda imagens da área. Estes dados aprofundados dão-nos uma ideia da carga de trabalhos no CPU e chip gráfico nos níveis específicos apresentados.

"As físicas em Killzone 2 são feitas com o middleware Havok e muito do nosso trabalho personalizado também. Temos trabalhado de perto com o Havok para passar mais código para SPUs ao longo do tempo e também reduzir o uso da memória e tempo de SPU investido nas físicas," explica van der Leeuw, discutindo como o middleware foi optimizado ao ser movido ao longo do núcleo PPU PowerPC do Cell.

"Corremos o Havok em paralelo com muito do trabalho gráfico nos mesmos SPUs. Definitivamente não é barato, mas fazemos muitas físicas num curto espaço de tempo. A animação é toda feita com o PlayStation Edge para as partes de níveis inferiores e o nosso próprio código para o nível maior. A parte Edge é realmente rápida, mas notamos que as partes de nível alto (que estavam ainda a correr no PPU) estavam a tornar-se num gargalo. A dado momento vamos ter que passar isso para os SPUs também, mas vai ser um grande re-factor."

E não é só no tornar o jogo mais belo. Um dos elementos mais importantes de Killzone foi a inteligência artificial avançada. Similar a Halo, a qualidade da I.A. escala dramaticamente entre as definições de dificuldade, acrescentando ao factor repetição. Aqui, passar os sistemas para SPUs teve um efeito directo e dramático na jogabilidade. Killzone 3 desenrola-se ao longo de uma série de zonas de guerras mais intensas do que o seu predecessor, com mais inimigos a exibir maiores níveis de inteligência.

Como van der Leeuw explica, "Optimizamos mais código para correr nos SPUs para podermos fazer mais IA e maiores batalhas, mas o foco foi realmente para os comportamentos desta vez. Investimos muito tempo a torná-los mais diversos e reconhecíveis para diferentes tipos de inimigos, assim como na melhoria da sua qualidade geral para terem melhor resposta, para as suas animações terem melhor aspecto, são bons no combate a curta distância e brutais no corpo-a-corpo e são muitos mais divertidos de se jogar."