[Por trás dos Games] Aquecendo os motores – Parte 1

terça-feira, março 3, 2009 8:00

Raphael Lopes Baldi, Gerente de Pesquisa e Desenvolvimento da Aquiris Game Experience, Graduando em Ciência da Computação na UFRGS, Programador a 11 anos.

Salve leitores do AperteF5!

Torque Game Engine

Torque Game Engine

No último post falei sobre os anos 90. Cheguei a ser chato falando do Wolfenstein 3D e do Doom, mas isso faz parte. Você precisa conhecer os games mais importantes (pelo menos) de todos os tempos para entender as motivações das empresas e dos desenvolvedores (estou considerando que você deseja se tornar um desenvolvedor um dia). Você precisa entender como funciona a cabeça de participantes de equipes experientes, os problemas que elas enfrentam e a complexidade que é desenvolver jogos com a qualidade dos que apresentei até agora. Essa é a vida de um desenvolvedor de jogos! Bem vindo ao meu mundo <<risada maligna>>! A partir de agora, além de artigos na linha dos anteriores – falando um pouco mais da história dos jogos, olhando para os jogos de uma forma mais holística -, escreverei artigos mais específicos, focando na carreira como programador de jogos. Sempre que possível, no entanto, tentarei trazer comentários a respeito das outras áreas.

Então você quer ser um programador de jogos? Se você quer mesmo ser um programador de jogos já deve ter visto essa pergunta uma porção de vezes em uma quantidade razoável de sites/blogs. Ela não é feita à toa e, por isso, farei-a novamente: então você quer ser um programador de jogos? Você tem certeza disso? Espero que continue com essa certeza ao final deste artigo. Em um artigo que li na Game Career Guide (uma revista que recebo uma vez por ano como parte integrante da assinatura da Game Developer Magazine) vi um parágrafo genial sobre os programadores de jogos. Fazia uma comparação entre as principais áreas que englobam o desenvolvimento de um game. Dizia que artistas criam mundos e personagens fantásticos, “game designers” são capazes de definir como o jogo funcionará, mas sem a programação eles acabariam com um monte de artes bonitas e palavras. A programação tem a missão de fazer o jogo funcionar, de trazer as idéias de várias pessoas (incluindo suas próprias) à existência.

God of War

God of War - Chains of Olympus

O desenvolvimento de jogos é, sem sombra de dúvida, uma das áreas mais complexas da computação, pois envolve uma série de conhecimentos específicos de diversas áreas: gráficos, animações, inteligência artificial, interface gráfica do usuário (GUI – Graphical User Interface), redes, simulações físicas, áudio, entradas de dados, bancos de dados, dentre outras. É, também, a área mais recompensadora: é muito mais legal falar para os seus amigos que você trabalhou no último God of War do que no desenvolvimento do último sistema de missão crítica da Dell. Mas tudo tem um preço.

Como disse em artigos anteriores, um programador nada mais é do que um solucionador de problemas, na maioria das vezes problemas tão complexos que a mente humana não é capaz de resolver sem o auxílio de máquinas digitais (não estou falando de câmeras fotográficas). O programador de jogos é, além disso, um otimizador: além de resolver problemas complexos, ele tem que ser capaz de escrever códigos que rodam extremamente rápido, que possam ser reutilizados e sejam flexíveis o bastante para que possam ser adaptados quando necessário e tudo isso com um prazo a cumprir. Você normalmente será solicitado a realizar tarefas em áreas totalmente desconhecidas para você e também a realizar os sonhos mais loucos de diretores de arte e designers. Você também poderá trabalhar construindo ferramentas para aumentar a agilidade da equipe de arte ou facilitar a prototipagem de jogos futuros.

“Tudo bem, Raphael, é isso que eu quero!”

Se você está com a frase acima em mente, prepare-se para enfrentar os desafios mais divertidos de sua vida!

Personagem 3D

Personagem 3D

A segunda pergunta que você deve se fazer (a primeira é “então você quer ser um programador de jogos?”) é: qual meu nível de conhecimento de computadores e programação? Não se sinta envergonhado e não minta para você mesmo. Diga a verdade, você passou os últimos meses “programando” em HTML e acha que já sabe o suficiente sobre linguagens de programação? Sabendo isso é possível determinar quais deverão ser seus próximos passos. Falarei, hoje, apenas do caminho principal a seguir, mas outras coisas deverão ser feitas paralelamente. Falarei sobre elas mais tarde.

Se você está começando a programar agora, fez uma ótima escolha optando pelos jogos: será muito mais divertido aprender. Você deverá estar preparado para se decepcionar quando as coisas não derem certo e, principalmente, a terminar as coisas que começar. Estava lendo o artigo do Guilherme Rambo e me deparei com uma pergunta que você deve estar se fazendo agora: “qual linguagem de programação eu devo escolher?”. A resposta para essa pergunta é fácil, você não precisa escolher: use o C++! Brincadeiras a parte, o C++ é a linguagem mais utilizada na indústria profissional, principalmente pela estabilidade e robustez que apresenta. Eu poderia indicar o Java também, pela orientação a objetos, mas prefiro indicar o C++ por causa dos ponteiros. Aprenda a utilizá-los sem medo (eles não mordem… muito…)! Ponteiros são muito importantes no trabalho com dispositivos de entrada e saída, principalmente com a placa de vídeo.

A primeira coisa que recomendo você a aprender no C++ é como fazer um comentário! Comente seu código sempre! É muito difícil para outras pessoas te ajudarem quando não entenderem o que você pretendia fazer (comentários em inglês são muito bem vindos e, aliás, aprender inglês é uma de suas “side missions” enquanto aprende a programar). Participe de fóruns, leia tudo sobre C++, aprenda a trabalhar com a documentação da linguagem (o inglês é novamente importante), aprenda a fazer comentários. O primeiro jogo que você deve tentar fazer é o famoso “Adivinhe o número”. O computador sorteia um número e pergunta para o usuário qual é esse número. A cada chute ele diz se o número informado é maior ou menor do que o número sorteado. Quando o jogador acerta o número, o computador exibe a mensagem “Parabéns!” e pergunta se deve sortear um novo número ou encerrar a execução. Você aprenderá muito sobre laços (while, do… while, for) e sobre entrada e saída de dados (mandem seus projetos por email se quiserem, para que eu diga como está funcionando sua linha de raciocínio).

Forca

Forca

Depois de fazer o “Adivinhe o número” tente implementar o “Forca”. Esse é um pouco mais complexo (não precisa desenhar nada). A cada ciclo, a tela é limpa, na parte superior é mostrada a palavra (com as letras que já foram adivinhadas e sublinhados nas letras que faltam), logo abaixo são aprensetadas as letras que já foram informadas e abaixo o número de partes restantes no corpo. A partir da lógica será fácil, posteriormente, inserir gráficos alucinantes, aliás, esse ponto é importante: a lógica é o que importa, o “core” (núcleo) do sistema, como as coisas funcionam. Inserir elementos gráficos, áudios, etc, é uma etapa simples quando o jogo em si funciona bem.

Outra dica: programe muito, leia livros de programação em C++ (recomendo o C++ Como Programar do Deitel), leia trechos de código e entenda como, por que e o que os programadores pretendiam fazer com seus programas. Depois de escrever seus programas, tente otimizá-los: isso te ajudará a aprender mais sobre a linguagem e a perceber os pontos críticos do código.

Semana que vem darei dicas para os programadores um pouco mais experientes.

Grande abraço!

Dúvidas, sugestões e reclamações – raphaelbaldi@apertef5.com.br.

Você pode comentár este artigo, ou fazer uma trackback para o seu site.

5 Comentários to “[Por trás dos Games] Aquecendo os motores – Parte 1”

  1. pedro-11anos-dourados MS é gremio escreveu:

    3 de março de 2009 as 14:03

    muito legal

    e continuo dizendo que quero desenvolver jogos
    um abraço

  2. Caio escreveu:

    3 de março de 2009 as 14:23

    Bem interessante e informativo o artigo só gostaria de fazer um adendo sobre a linguagem de programação… desculpe se eu fiz uma má interpretação mas depende da área que a pessoa vai querer trabalhar por exemplo se quiser trabalhar utilizando em conjunto hardware vai o c/c++ ou outra de médio e baixo nível tanto que é mais usada para desenvolvimento de jogos ^^ Mas se for por exemplo web ou até mesmo desktop ai já seria linguagens de auto nível como python… mas claro tudo isso vai depender do qual a pessoa se adequar melhor, como se o código que ele está desenvolvendo fosse um texto(meio irônico já que um código na minha opinião é um texto indiretamente ;x)

  3. Tiago Ribas escreveu:

    4 de março de 2009 as 9:36

    Vou tentar esse da Forca! Do numero eu ja fiz comecei a progrmar C ja faz um mês,
    Qual é a diferença entre o C e o C++.

  4. Raphael Baldi escreveu:

    4 de março de 2009 as 23:07

    Pedro, estás começando mais cedo do que eu ;-) . Comecei no mundo da programação com 12 :-P . Até é interessante comentar que, em outros países, pessoas mais novas já são influenciadas a investir tempo estudando para a carreira que pretendem seguir no futuro. Para quem tem a idade do Pedro, recomendo começar com linguagens mais básicas: aprendam HTML (apesar de não ser uma linguagem de programação propriamente, ajudará a aprender a estruturar as coisas), depois passe para o JavaScript, Basic, enfim, se quiserem mais detalhes sobre esse caminho mais primário, me mandem um email ;-) .

    Caio, valeu pelo comentário! Normalmente sugiro o C/C++ por ser uma linguagem adotada na maior parte da indústria formal de games e por ser, ao meu ver, uma das mais fáceis de aprender para quem está começando (tenho discussões com alguns professores que preferem o Pascal inclusive). A principal vantagem do C/C++ é a presença dos ponteiros. Passar do C/C++ para linguagens de mais alto nível depois é um abraço ;-) . O outro motivo que aponto essa linguagem para quem quer começar com games é a quantidade de material e pessoal disponível na internet para ajudar. Um fato interessante sobre linguagens de alto nível é que elas são muito utilizadas para “scripting” nos jogos (isso vai ser assunto de um artigo no futuro), principalmente LUA, Python e Perl.

    Tiago, estás no caminho! A principal diferença entre o C e o C++ é que o C é uma linguagem funcional (baseada no encadeamento de funções), enquanto o C++ possibilita a programação Orientada a Objetos (embora possa ser utilizada como linguagem funcional). O C++ possui diversas bibliotecas extras (inclusive muitos professores preferem usar o C no aprendizado por ser mais simplificado) que facilitam o trabalho de desenvolvimento de sistemas complexos (por isso é largamente utilizada no mercado de jogos).

  5. João Pedro Barros escreveu:

    8 de março de 2009 as 23:03

    tenho a Game Career Guide de 2008 aqui e achei mto boa, teria como tu disponibilizar essa nova ae? Tu paga a assinatura dela?
    flw
    []’s

Escreva seu comentário: