PUBLICIDADE

Topo

Histórico

Thais Weiller

Por trás do jogo: como é o trabalho do programador de games?

Thais Weiller

03/03/2020 13h54

Programador da Ubisoft em documentário sobre bastidores no canal da produtora (Reprodução/YouTube)

Depois da apresentação das áreas de desenvolvimento de jogos, eu convidei diferentes profissionais para falarem da sua área diretamente aqui no Blog. O de hoje é do Rafael Ferrari, co-fundador da Skullfish Studios (empresa de jogos de São Paulo, que recebeu aceleração pela GameFounders, na Malásia). Antes, foi programador de empresas como Skyzone e Glu Mobile, e líder de programação em VR pela Black River Studios/Samsung.

Mas afinal de contas, o que faz um programador de jogos?

A resposta é simples e parece bastante óbvia: ele programa jogos. Mas o que exatamente é programar jogos? Pode-se dizer que programar jogos é praticamente dizer ao computador ou hardware como as ações do usuário, como toques em teclas de teclados, ou botões do gamepad, serão interpretados e o que cada ação vai fazer dentro do jogo.

O programador de jogos também faz com que diversas áreas, como arte e animação, por exemplo, funcionem de forma consistente e correta dentro do jogo.

Vamos "programar" um exemplo para exemplificar melhor.

Em nosso jogo, o Game Designer gostaria que nosso personagem ande para frente, para trás e para os lados, usando as setas do teclado. Como faríamos essas ações? Em uma linguagem de programação simplificada (sem foco em nenhuma linguagem), poderíamos fazer da seguinte maneira:

se (jogador apertar seta para cima)
personagem andar para cima
se não(jogador apertar seta para baixo)
personagem andar para trás
se não(jogador apertar seta para esquerda)
personagem andar para esquerda
se não(jogador apertar seta para direita)
personagem andar para direita

Imagens do jogo em desenvolvimento Toys 'n' Traps, da Skullfish Studios.

Como vocês podem ver na imagem acima, agora temos nosso personagem se mexendo. Porém, ele ainda não tem nenhuma animação sendo tocada. Ele fica deslizando, e precisamos colocar agora o trabalho do Animador no jogo. E como fazemos isso agora?

se (jogador apertar seta para cima)
personagem andar para cima
toca animação de andar pra frente
se não(jogador apertar seta para baixo)
personagem andar para trás
toca animação de andar pra trás
se não(jogador apertar seta para esquerda)
personagem andar para esquerda
toca animação de andar para esquerda
se não(jogador apertar seta para direita)
personagem andar para direita
toca animação de andar para direita

Imagens do jogo em desenvolvimento Toys 'n' Traps, da Skullfish Studios.

Agora temos nosso personagem funcionando e andando de maneira correta, com a animação correspondente para cada movimento. 

Vamos supor, agora, que nosso Game Designer gostaria que nosso personagem disparasse um tiro para frente, toda vez que você apertar a tecla Z. E que esse tiro cause, por exemplo, um valor de dano ao inimigo. Como poderia ficar nosso código?

se (jogador apertar tecla Z)
personagem atira

O código acima fará com que o personagem execute a ação de atirar. Mas como a bala vai se movimentar e detectar o que bateu? 

//código da arma
Personagem atira -> arma coloca uma nova bala, na frente da arma

//código da bala
em toda atualização, adicione 1 posição a mais na posição atual da bala
se (colidir em algo)
se (for um inimigo)
aplicar dano de 5 no inimigo
destruir a bala

 

Imagens do jogo em desenvolvimento Toys 'n' Traps, da Skullfish Studios.

Para o personagem de fato atirar, no caso acima, tivemos 2 códigos novos a adicionar. Ensinamos a arma a colocar uma bala na frente dela, e ensinamos a bala a se movimentar para frente, e, caso encontre uma colisão, e essa colisão for de um inimigo, aplicar o dano correto, e sumir.

O cargo de programação de jogos pode ter diversas áreas de especialização. Acima, mostramos apenas um exemplo do que seria um programador de jogos, com foco em gameplay. Abaixo, uma lista de algumas outras possibilidades:

  • Programador de Interface: é o responsável por fazer toda interface do jogo funcionar corretamente. Sabe o mapa que mostra sua posição, ou o contador de vidas que você tem? Então: provavelmente um programador de interfaces que trabalhou alí.  Geralmente trabalha próximo do Artista de Interface, para uma melhor implementação.
  • Programador de Câmera: em alguns jogos com câmeras mais complexas, existem alguns responsáveis em apenas trabalhar na movimentação e comportamento da câmera. Ela pode, muitas vezes, piorar e muito todo a experiência planejada pro jogo.
  • Programador de Gameplay: como usado no exemplo inicial, é o responsável por implementar ações de dentro do jogo. Movimentar personagens, atirar, pular, subir em escadas, correr, etc, são possíveis implementações que este profissional poderá realizar. Geralmente trabalha próximo do Game Designer, para uma melhor implementação.
  • Programador de Ferramentas: este profissional desenvolve ferramentas que facilitam o workflow e implementações de outras áreas do jogo. Por exemplo: podemos fazer uma ferramenta, onde o Game Designer pinta todo o level em 2D, com, e a ferramenta identifica toda configuração e posicionar corretamente no 3D dentro do jogo. Muitas vezes também pode desenvolver ferramentas entre softwares: um artista 3D, pode solicitar uma função que o software não tenha, para facilitar a implementação da arte no jogo.
  • Programador de Inteligência Artificial: como o próprio nome diz, é o responsável em desenvolver a Inteligência Artificial (IA) de prováveis personagens de dentro do jogo. Qual o comportamento dos personagens não controláveis (NPCS), ou então, como um carro de corrida adversário será controlado contra você, em um jogo de corrida, são uma das tarefas que este profissional pode realizar.
  • Programador de Backend: este profissional trabalha com as atividades de "bastidores" do jogo. Quando você baixa um jogo de celular, por exemplo, e se cadastra usando sua rede social, esses dados são salvos em uma banco de dados. O gerenciamento e interpretação das informações salvas, são feitas pelo programador backend. Implementar recompensas diárias, que você recebe sempre que volta ao jogo, pode ser feito em um trabalho em conjunto com um programador de Gameplay, por exemplo.

Se você tem interesse em se aprofundar mais no assunto, as linguagens de programação e ferramentas mais usadas para jogos atualmente, são:

Sobre a autora

Thais Weiller é mestre pela ECA-USP pesquisando game design, com uma dissertação que virou um livro e um blog. Ela trabalhou em games como “Oniken”, “Odallus”, “Finding Monsters”, “Rainy Day” entre outros, e também fundou, junto com Danilo Dias, a desenvolvedora JoyMasher. Atualmente, Thais dá aulas de design de jogos na PUC do Paraná.

Sobre o Blog

Quais os mitos e fantasias que influenciam nosso comportamento e afetam nossa paixão pelos games? Neste espaço, Thais vai trazer a perspectiva dos pesquisadores e desenvolvedores de jogos para nos ajudar a entender os games de uma maneira diferente.