[Curiosidades] Entrevista com desenvolvedores do GTA SA

Você sabia que os programadores do GTA San Andreas já deram uma entrevista falando sobre o funcionamento do jogo, e responderam sobre a criação de mods?

Eu traduzi toda a entrevista para português, e fiz algo que provavelmente nunca foi feito antes: um modder de GTA comentando sobre uma entrevista técnica que os programadores do jogo fizeram. É como um filho falando do pai.


No entanto, não é uma entrevista tão profunda e técnica assim, inclusive, praticamente nada dela nos dá informações úteis para o desenvolvimento de mods, mas é realmente algo interessante a ser lido, tanto para quem baixa, quanto para quem cria mods.


GameSpot: Como a engine do Vice City foi alterada para permitir um mapa do mundo muito maior em San Andreas enquanto ainda se livra completamente das telas de carregamento para a área do mundo?

Obbe Vermeij: Um sistema de nível de detalhe [LOD] completamente novo foi implementado, por meio do qual vários modelos (construções) podem compartilhar um único modelo de baixo nível de detalhes [LOD]. Dessa forma, os modelos de baixo nível de detalhes podem ser carregados conforme o jogador se move pelo mapa, ao contrário de uma vez conforme o jogador se move entre as ilhas, como em Vice City.
Ele é o Obbe. Aqui ele só falou o básico, obviamente foi muito mais do que só o LOD. No III e VC o sistema de streaming, ou seja, o sistema de carregar os dados do disco para utilizar no jogo, é um nada comparado ao GTA SA, que foi, de fato, um jogo pioneiro no assunto.

GameSpot: Com este novo mapa de streaming, há algum limite para o tamanho que o mapa mundial pode ter? O que cria esse limite, se houver um?

John Whyte: Sempre há limites! Existem limites para o número de objetos que podem estar em qualquer seção do mapa, e isso determina mais do que qualquer coisa a densidade dos objetos no jogo. Algumas das seções da cidade efetivamente maximizaram o jogo em sua forma atual. Se quiséssemos aumentar a densidade dos objetos, teríamos que voltar ao código e reescrevê-lo para lidar com números muito maiores. (Tecnicamente falando, há muitas estruturas no código que dependem da indexação de 8 bits para economizar espaço.)
Aqui temos John Whyte, um dos 16 programadores do jogo. É interessante notarmos que tal limite de objetos que ele cita, foi já quebrado pelos modders há muitos anos, por diferentes modders, por diferentes ferramentas e diferentes métodos, inclusive, é o foco do Open Limit Adjuster, que possibilitou a criação do Project2DFX. Hoje criamos coisas como o Project Props.
Além de tal indexação de 8 bits, outra coisa interessante é o uso de somente 2 bytes para guardar a posição de algumas coisas, como carros estacionados (por isso não é possível posicionar carros estacionados tão perto um do outro; fastman92 limit adjuster resolve isso). É doido imaginar como antigamente cada byte fazia a diferença.

GameSpot: Com os rumores crescentes de "Pé Grande" circulando no jogo, há uma maneira de controlar a probabilidade de que um evento apareça? Um único evento pode ser programado para ocorrer extremamente raramente, digamos uma vez por ano?

John Whyte: Essa é uma boa ideia! Mas receio que não haja como os scripts identificarem a data e criarem eventos agendados dessa forma.
Aqui eu fiquei confuso com essa resposta, pois pegar a data do PC é algo extremamente simples. Provavelmente ele respondeu pensando na versão de PS2, que de fato pode ter dificuldades em trabalhar com a data atual.
Falando nisso, hoje há alguns mods que trabalham com a data do PC, alguns com easter eggs de primeiro de Abril (um deles é meu), ou Project2DFX que deixa as luzes coloridas perto do natal (opção no .ini). Eu gostaria que mais mods usassem dessa funcionalidade, é divertido, quando bem realizado.

GameSpot: Qual é a escala estimada do jogo no mundo real? Qual é o tamanho de San Andreas em termos "reais"?

John Whyte: O mapa tem 6 por 6 quilômetros ou 36 milhões de metros quadrados. Esse é apenas o mapa externo e não inclui os locais internos do jogo, que são muitos. Além disso, o jogador não está restrito à área povoada do mapa. O jogador pode pegar um barco ou avião e viajar em qualquer direção que desejar.
Bem, considerando isto, tecnicamente o mapa do GTA SA é um dos maiores do mundo, já que dá para viajar de barco/avião pro quase-infinito, né? Quer dizer, até o jogo começar a bugar devido à imprecisão de float.
Algo interessante é que eles foram tão para o limite, que o mapa do jogo é praticamente um quadrado de terra. Algumas pessoas veem isto de maneira negativa, mas pra mim demonstra o esforço que tiveram.

GameSpot: Quantos objetos (carros e coisas do tipo pedestre) estão ou podem estar ativos ao mesmo tempo? Este número aumentou na versão para PC da versão PS2?

John Whyte: Com certeza. A versão para PC tem uma distância de clipe [visão, desenho] maior, então mais do mapa está sempre visível, e o mapa tem muitos detalhes que tiveram que ser removidos da versão para PS2 para caber no espaço de memória menor. As distâncias de clipe para carros e pedestres também aumentaram. Precisamos tirar essas coisas mais adiante porque o PC funcionará em uma resolução mais alta. No total, isso significa que o PC está empurrando muito mais do que o PS2.
Ele não respondeu realmente. O número varia a cada local, clima, hora, mas gira em torno de 5~15 carros e pedestres. O jogo também carrega, por padrão, 12 diferentes modelos de veículos, o que é um número bem alto comparado até ao GTA V de PS3. O mínimo é 2 (normalmente o mínimo é usado logo no primeiro frame após uma cutscene por exemplo). Tais limites são ajustáveis no MixSets.

GameSpot: Como o mecanismo de script mudou desde Vice City? Como isso melhorou? Quais são alguns de seus novos recursos favoritos?

Chris Rothwell: Nossa equipe dedicada de programadores está sempre se esforçando continuamente para melhorar os conjuntos de recursos, a eficiência e a usabilidade do mecanismo de script durante o desenvolvimento da série GTA. Embora fundamentalmente a linguagem de script e o mecanismo não tenham mudado muito desde que foram usados ​​para fazer o GTA3 há cinco anos.
Uma coisa que eu achei interessante, é que Chris Rothwell está listado nos créditos como level designer. Então por que ele está respondendo de maneira técnica sobre a programação do jogo? Notável que o jogo teve mais programadores do que a lista de créditos diz.
Mas falando sobre o comentário dele, de fato, tanto que o nome da linguagem de script interna do jogo continua sendo "gta3script", e toda a essência da linguagem continua a mesma desde sempre. Na verdade, a base vem desde o GTA 2.
Tal linguagem de script foi recriada pelo LINK/2012 e hoje a usamos para criar mods CLEO da maneira que a Rockstar programou as missões, lojas etc do jogo. E quem programa, sabe que criar mods CLEO para GTA SA é basicamente o mesmo de GTA VC e GTA III, a diferença é que estes são mais limitados.
Pra você ter noção do quão antigo isto é, o nome oficial do comando de adicionar dinheiro para o player, mesmo no San Andreas, é "ADD_SCORE", sim, "score" em vez de "money".

Chris Rothwell continua:
Desde Vice City, inúmeras melhorias foram feitas para tornar o script mais poderoso, como a adição de arrays, instruções de troca [SWITCH], sequência de tarefas para inteligência artificial de personagem [TASK_SEQUENCE] e inúmeros comandos específicos do jogo. Uma ferramenta favorita adicionada durante San Andreas foi a capacidade de registrar as posições dos carros enquanto os dirigia pela cidade no jogo [carrec], podendo então reproduzir essas gravações dos carros em tempo real durante uma missão. Isso nos permitiu realmente polir e melhorar nossas missões em trilhos [on-rails] e cenas com script.
Infelizmente não temos a tal ferramenta de gravação de carros, e nunca foi realmente requisitada pela comunidade. Mas eu já vi isto sendo criado para o GTA VC.
A tal sequência de tarefas que ele disse é de fato algo muito bom do GTA SA, basicamente você cria uma sequência de ações e faz tal personagem executá-la.

Chris Rothwell continua:
Muitos dos novos recursos de jogo em San Andreas só foram possíveis devido a esses avanços na linguagem de script. Por exemplo, o casino baseado em 2D e jogos de console não eram viáveis ​​em Vice City até que uma série de comandos de sprite de exibição de heads-up foram adicionados durante o desenvolvimento de San Andreas. Também havia muito poucas animações personalizadas usadas durante as missões em Vice City, mas para San Andreas tínhamos uma interface de script de animação totalmente nova. Esse sistema permitiu que os designers implementassem uma jogabilidade com muita animação codificada inteiramente na linguagem de script, como no jogo de sinuca, no basquete, no para-quedas e em várias outras áreas.
De fato, uma das coisas que mais odeio em criar mods CLEO para GTA III e GTA VC é a dificuldade de lidar com animações, diferente do GTA SA, que você joga um arquivo .ifp no modloader, e no script, carrega tal arquivo, coloca o nome do arquivo e animação, pronto, o personagem faz a animação. Muito mais simples.

GameSpot: O que pode ser programado no jogo? Como os scripts são gerenciados?

Chris Rothwell: O mecanismo de script GTA é incrivelmente poderoso e flexível, e dentro do jogo há muito pouco que não pode ser afetado, alterado ou modificado pelo script. Em teoria, quase qualquer gênero de jogo poderia ser feito usando o motor GTA sem uma única alteração no executável apenas adicionando novos scripts e recursos de arte.
Esta é minha parte favorita. Ele citou, com todas as palavras, que quase qualquer gênero de jogo pode ser feito usando o GTA San Andreas como base, e sabemos disso. Há alguns mods de conversão e reforma totais que de fato são considerados jogos novos.

Chris Rothwell continua:
Temos um script geral de governança que chamamos de "main script". Entre outras coisas, este script principal mantém o controle de seu progresso no jogo, depois carrega e inicia um script de missão quando você pisa em um gatilho de missão ou inicia um dos trabalhos estranhos. Apenas um script de missão está na memória e em execução por vez. Além das missões, temos scripts de ambiente residentes na memória ao longo da duração do jogo que controlam uma grande variedade de sistemas do jogo. Exemplos disso são o telefone celular, saltos de acrobacias e scripts de interface de loja. Outro tipo de script de ambiente entra e sai da memória conforme o jogador se move pelo mapa [streaming]. Eles seriam usados ​​para encontros específicos de locais ou anexados aos vários objetos utilizáveis ​​ao redor do mapa, como o guindaste ou máquinas de venda automática.
O interessante de ler entrevistas oficiais é que entendemos quais são os nomes reais, oficiais, usados pelos desenvolvedores. Nós modders gostamos de preservar isto os termos, como "main script" (que já era esperado, mas é legal pra ter certeza). Os vazamentos da versão mobile deixou isto tudo muito mais claro.

GameSpot: Haverá a possibilidade de refazer o skin do personagem principal da mesma forma que na versão para PC de Vice City?

John Whyte: Reskinning é uma tarefa muito mais complicada em San Andreas. Isso ocorre porque o modelo para CJ tem três variações (normal, musculoso e gordo, dependendo da jogabilidade), e as roupas do modelo devem ser montadas item por item para ter controle total sobre o guarda-roupa de CJ. Ainda pode ser feito, mas provavelmente exigirá algumas ferramentas personalizadas para ser utilizável.
Bem que eles deviam liberar as ferramentas usadas de modo oficial, né? Nós já temos quase certeza que o jogo foi criado com base em plugins no 3DS Max Studio, algo que em grande parte criamos mods também assim. As roupas do CJ por exemplo, sempre usamos isto.

GameSpot: Se você for capaz de fazer o reskinning, como o jogador e também o artista [modder] lidarão com o fato de que o modelo do personagem pode mudar muito durante o jogo?

John Whyte: Por tentativa e erro!
Tá, ele não respondeu então eu mesmo vou responder: A ordem interna das vértices para cada mesh de cada variação, normal, musculoso e gordo, precisa ser exatamente a mesma para acontecer o displacement. Sendo assim, a maneira de fazer isto, é criar um modelo único, e para ter as variações, tire uma cópia do modelo e somente mova as vértices para deixá-lo gordo etc, sem apagar nem adicionar nenhuma. Caso contrário, coisas loucas vão acontecer.

GameSpot: Que contagem de polígonos a engine gráfica pode gerar? Isso é um aumento de Vice City? Como esse aumento foi realizado?

Obbe Vermeij: O código de renderização geralmente passou por uma grande reformulação. Foram feitas melhorias nas técnicas de seleção que impedem as coisas de serem renderizadas quando não estão visíveis na tela [occlusion culling]. Resultando em uma taxa de quadros [framerate] mais alta em combinação com toneladas de novos efeitos, dá ao jogo um novo visual incrível.
É interessante que, felizmente, não há um limite de contagem de polígonos, diferente de alguns outros jogos. GTA SA consegue rodar, por exemplo, carros de 1 milhão de polígonos num desempenho bem aceitável, desde que você aumente pelo menos um pouco o limite de memória streaming dele.

GameSpot: Como os ativos de textura [TXD] foram gerenciados entre todas as versões para que as texturas pudessem ser as mesmas do PS2, mas ser muito mais nítidas e detalhadas no PC?

John Whyte: As texturas foram todas originalmente criadas em sua resolução mais alta e depois cortadas para as plataformas que não tinham memória ou desempenho para lidar com isso.
Ele não respondeu realmente. Em geral são as mesmas texturas, com exceção de San Fierro que as ruas foram remasterizadas numa resolução bem maior. E por algum motivo, a versão de PC teve alguns bugzinhos nas texturas que a de PS2 não tinha.
O que me incomoda muito, e isto é um erro mesmo de outros jogos que tiveram port pro PC, é que, ao portar o jogo para PC, os desenvolvedores não reutilizam a textura fonte, em vez disso, convertem direto do formato do PS2, que é paletizado, assim fica aquela textura feia cheia de pontinhos granulados.

GameSpot: Como os reflexos são tratados quando projetados na lateral dos carros e as sombras no CJ?

John Whyte: As sombras são uma mistura de buffers e volumes de sombra para obter os resultados que desejamos. Infelizmente, é difícil conseguir uma aparência consistente com eles quando misturados. Os reflexos sobre os carros estavam sendo feitos em um ponto por ambiente - mapeando o conteúdo do buffer de tela no carro com um alfa baixo [uma versão simplificada de screenspace reflections?]. Mas não parecia certo em alguns casos, então o removemos.
Algo interessante aí, aparentemente a versão beta do PC haveria algo como screenspace reflections, usado até hoje em jogos modernos, que é uma forma leve e rápida de criar reflexos nos carros baseado no conteúdo atual da tela. Você já deve ter visto isto em mods gráficos antigos.

GameSpot: Por que você usa Z-buffers em vez de campos de partição de espaço binário para disposição de textura?

John Whyte: Muito do código em San Andreas é feito de uma maneira particular para mantê-lo bem sincronizado com as versões do console, caso contrário, demoraria muito mais para terminar! Nos consoles, temos que confiar muito mais no hardware gráfico para fazer as coisas, ao invés de sermos capazes de processar através da CPU.

GameSpot: Obrigado, pessoal. Foi esclarecedor.
Uma pena, o jogo tinha potencial para ser melhor, mas o prazo sempre bate.

Eu gosto de exemplificar isto com os gráficos da versão PC. No PS2 temos um filtro de cor exagerado que varia para laranja, amarelo, ciano, até roxo, algo que deu um toque estilizado ao jogo. No PC o gráfico é mais limpo, mas eles fizeram isto basicamente só editando o código do postfx para simplificá-lo. Foi como tirar algo complexo, deixar simples, e pronto, temos um novo gráfico, não houve nenhum ajuste final de cor. Em outras palavras, o arquivo principal dos gráficos do jogo, que cuida das cores, é o "timecyc.dat", que foi criado para o postfx do PS2, não do PC. Você até pode gostar dos gráficos originais do PC, mas não deixa de ser algo "feito de qualquer jeito". É possível ter gráficos realmente bonitos e modernos simplesmente editando este arquivo da maneira certa: Real Linear Graphics.

Visto que cada desenvolvedor trabalhou numa área específica e não no sistema geral do jogo, e que já se passaram tantos anos, é possível afirmar, sem medo, que muitos modders de hoje sabem mais sobre este jogo do que os próprios criadores dele.


Aviso:
Dê sugestões de mods para serem postados aqui (fórum) ou aqui (formulário).
Dê ideias de mods para GTA aqui.
É proibido discutir política, ideologias e religião aqui. Isto é um site de jogos.
Abrir Comentários