Making of Killzone 3
A DF fala com a Guerrilla sobre o seu mais recente milagre técnico.
Enquanto Killzone 2 apenas usava cerca de 60 por cento dos ciclos SPU disponíveis, a sequela vê a Guerrilla a fortalecer o seu código e a transferir sistemas para os processadores satélite ao ponto de estarem perto do seu máximo. Avançando, a optimização e o reescrever de sistemas chave seriam necessários para libertar mais tempo de processamento.
Michiel reconhece que a equipa da Guerrilla está agora bem familiarizada com as complexidades de codificar no SPU: "No final de Killzone 2 tínhamos muitas pessoas na equipa que estavam bem confortáveis em escrever código SPU, portanto foi uma simples progressão natural para continuar-nos a o usar. Chegamos ao ponto no qual estavam todos cheios, portanto tivemos que optimizar um bom bocado o nosso código SPU, para encaixar tudo no final."
Um dos objectivos chave com Killzone 3 foi tornar o jogo numa experiência mais social e este problema foi abordado em duas frentes. Primeiro, o modo multiplayer via PSN, foi radicalmente melhorado com toda uma nova infra-estrutura, e apesar do jogo já estar a receber elogios pela sua jogabilidade online, parece que a Guerrilla vai gradualmente melhorar a experiência com o tempo baseado na nova tecnologia que tem.
"Muito do código de rede foi eliminado e reescrito novamente. Para nós a comunidade é um dos aspectos mais importantes do multiplayer e apesar de estarmos bem felizes com o leque de funcionalidades em Killzone 2, sentimos que os nossos sistemas de rede não estavam à altura do que queríamos fazer no futuro," diz van der Leeuw.
"É pena não receberes reconhecimento por te re-inventares, mas temos um sistema muito mais flexível agora que é muito mais estável, responsável, que nos dá estatísticas mais ricas e providenciar uma fundação sólida para as coisas a seguir."
Em segundo, a Guerrilla implementou um modo para vários jogadores em ecrã dividido no jogo, um feito considerável tendo em conta que a tecnologia nuclear de Killzone 2 não foi desenhada com esta funcionalidade em mente. Presumivelmente por propósitos de streaming, os jogadores são mantidos dentro das mesmas áreas do mapa (sendo um jogador transportado caso o outro progrida demasiado sem o seu parceiro), mas os desafios tecnológicos são na mesma significantes – duas vistas completamente independentes, com duas passagens de rendering inteiramente separadas.
Enquanto os problemas de fill-rate não são especialmente problemáticos aqui, a geometria precisa na mesma de ser processada duas vezes = um processo que a Guerrilla resolveu com técnicas incluindo gestão optimizada de LOD (nível de detalhe). Mas simplesmente conseguir que a lógica de jogo no modo para um jogador acomode vários jogadores é um feito por si só e Michiel van der Leeuw sublinha que toda a campanha para um jogador é recriada no modo cooperativo: não existem truques da parte do estúdio, atalhos ou omissões.
No entanto existem limites na implementação. Enquanto alguns títulos FPS podem suportar uma campanha cooperativa completa em modo online, a experiência Killzone cooperativa é apenas em ecrã dividido, sem integração PSN. Michiel van der Leeuw explica a razão por detrás desta decisão:
"Fazê-lo também na PSN seria traiçoeiro porque – tal como fazer um jogo multiplayer 'normal' – o estado de jogo tem que ser sincronizado ao longo da rede e no caso de latência ou outros problemas, as coisas tem que ser arbitradas e tornadas robustas para ninguém ficar preso, ou fazer batotices," ele diz.
"Uma vez que fazemos toda campanha em modo cooperativo, isso significa que todo o nosso código de jogo, mesmo as situações únicas, os bosses finais, precisam todas de serem codificados com condições de rede em mente. Ficamos preocupados que pensar em muito nos poderia distrair de entregar uma experiência cooperativa offline sólida, por isso decidimos focar nisso para Killzone 3".
Parte dessa experiência sólida englobava criar uma experiência de jogo sem interrupções – ou o mais aproximado disso o possível. Tempos de carregamento foram identificados pela Guerrilla como um detrimento para o produto geral (sendo descritos como "muito duros e intrusivos") portanto a equipa usou técnicas similares às vistas em Uncharted e God of War III para ultrapassar o problema: cinemáticas pré-renderizadas guardadas no disco Blu-ray são vistas enquanto o próximo nível está a ser carregado em fundo.
Para o bem da consistência com os visuais in-game, as FMVs em Killzone 3 são geradas inteiramente pelo motor, renderizadas offline, e então codificadas usando o compressor Bink.
"Poderíamos ter feito batota e feito oversample ou outra coisa qualquer para lhes dar um aspecto porreiro, mas seria contra o propósito – as pessoas iriam notar e iria afastá-los do jogo," acrescenta Michiel van der Leeuw, mas porque escolher o Bink como codificador tendo em conta a sua performance abaixo de óptima em tantos jogos?
"Uma vez que temos todo o jogo a fazer streaming de dados enquanto estamos a mostrar os vídeos temos que ser leves no uso de CPU e temos pouca memória para gastar. Muitos jogos correm os filmes quando não existem nenhuns elementos de jogo carregados, nós colocamos os filmes quando todos os elementos estão carregados," diz.
"Os perfis h.264 mais populares requerem tamanhos de buffer enormes, para lidar com o VBR ou para fotogramas de referência. Para usar h.264 teríamos que baixar para um perfil mais simples e provavelmente escrever um leitor que esteja optimizado para o nosso uso particular, ao invés de qualidade e velocidade. No final, o Bink porta-se muito bem comparado com outros codificadores quando têm pouca memória e foi fácil para nós de integrar."