Dicas para se fazer um jogo de computador

ANTES DE COMEÇAR…

Lembre-se de que jogos de computador são o conjunto de várias artes diferentes formando uma só. A idéia de arte é altamente subjetiva, por isso você nunca irá agradar a todos. Entretanto tenha em mente de que se a sua intenção for criar um jogo por remuneração, e não prazer, seu trabalho terá que ter um público alvo e satisfazê-lo. Defina seu objetivo e seu público alvo antes de começar.

Preocupe-se em descobrir suas limitações antes de começar a criar seu jogo. Se você não sabe fazer algo necessário ao seu projeto, você tem que aprender a fazer ou aliar-se imediatamente a quem saiba. O seu trabalho ficará muito mais difícil se você tiver que aprender algo ou procurar por algum talento durante a fase de produção. Meu projeto levou três meses para ser concluído, mas acredito que poderia ser feito em menos da metade do tempo caso eu já tivesse os elementos que faltavam antes do início da produção: conhecimento sobre efeitos sonoros e música.

Comece um projeto com a certeza de que você pode terminá-lo. É melhor um Jogo da Velha completo do que um Doom IV em seus sonhos. Você precisa de uma boa estrutura de produção e de boas idéias. Entretanto tenha em mente que você pode compensar a falta de idéias com uma ótima estrutura de produção (é o que acontece com praticamente todas as empresas de softwares profissionais criando clones dos mesmos jogos de sempre só que com mais tecnologia), ou a falta de estrutura de produção com ótimas idéias (Tetris). Se você não tiver nem idéias, nem estrutura de produção, o máximo que você conseguirá é um jogo com gráficos e sons fracos e sem nenhuma jogabilidade. Não tente fazer sem dinheiro, sem conhecimento técnico e sem tempo, um trabalho igual ao de uma empresa com recursos, meses disponíveis e profissionais especializados.

Um jogo de computador é composto de ENTRADA / PROCESSAMENTO e SAÍDA, assim como qualquer coisa em informática. Você deve saber receber os dados via teclado, mouse e/ou joystick (entrada), atualizar os dados do jogo em função da entrada recebida (processamento) e por último mostrar as imagem e o som (saída). Contudo, estes devem ser vistos apenas como os conhecimentos básicos. Tenha em mente que é fácil fazer um efeito de vídeo, ou tocar um som, ou receber a entrada de dados do joystick, etc. O que é realmente difícil é sincronizar todas as rotinas de maneira perfeita, impedindo uma entrada de dados errada (não captar o movimento do jogador, por exemplo), um processamento errado (ativar algo fora da hora, não detectar uma colisão, etc.), ou uma saída errada (imagens fora do lugar, som fora de hora, etc).

Um jogo inicializa seus dados, carrega o que precisa, vai para a tela de título e de lá ou começa o jogo ou volta para o sistema operacional. Ao acabar o jogo, voltará para a tela de título. Isto é o básico da lógicade programação de jogos. Se você pretende incluir mais coisas (menu de opções, galeria de imagens, recordes, etc.), é melhor imaginar o fluxograma antes de começar. Mas isso não é tudo, lembre-se de que o bloco principal do jogo é a parte mais complexa de toda a estrutura.

Planeje sempre, escrevendo tudo o que puder antes de começar a trabalhar. Você pode remendar seu código para implementar uma característica nova no jogo depois, mas tenha em mente que remendar dá muito mais trabalho do que escrever algo que já estava em seus planos. Ex.: meu jogo teria modo de dois jogadores, que não foi implementado porque ao me lembrar disso, o programa estava em um estado de montagem que teria que ser praticamente reconstruído para suportá-lo.

Ao colocar uma estrutura FOR, IF, WHILE, REPEAT, etc., automaticamente feche o final da sua estrutura e depois comece a escrever sua parte interna, tudo devidamente indentado. Tive diversos problemas ao esquecer de fechar uma estrutura, e depois procurar atentamente por toda a listagem do programa até descobrir onde estava o erro. Afinal, devo ter até umas cinco estruturas uma dentro da outra em algumas partes do meu jogo.

Grave seu trabalho em mais de um diretório, em mais de um meio de armazenamento, e se possível, em mais de um lugar (em casa e no trabalho). Grave cada dia de alteração de seu fonte em um arquivo diferente (e diretório, preferencialmente). Assim, você não perderá muito trabalho no caso de uma alteração em seu código comprometer seu funcionamento.

Faça o seu programa o mais modular possível. É mais fácil corrigir ou melhorar algo que apareça freqüentemente em seu programa se estiver em uma função separada.

Opções de jogo (dificuldade, volume de som e música, etc.) devem obrigatoriamente ser variáveis globais. Assim, estarão disponíveis para alteração a cada momento com facilidade, e servirão bem para a construção de um menu de opções no seu jogo.

Ao incluir a entrada de dados em seu jogo, não se esqueça de incluir teclas para avançar de fase automaticamente, conceder imunidade, vidas, etc. Isso vai poupar muito na hora de depurar os erros (i.e.: você não perderá tempo até chegar em uma fase para checar se ela está como você quer). Se quiser, faça estas teclas atreladas a uma variável global no início do programa, para que você possa ativar ou desativar os macetes rapidamente na hora de compilar uma versão final do software.

Seu jogo pode ficar muito mais divertido com apenas um simples ajuste nos valores das variáveis (dificuldade, velocidade dos inimigos, número de vidas, etc.).

Ao incluir um novo elemento de jogo, trace uma “teia mental” de quais outros elementos podem ser afetados por sua inclusão. Você deverá imediatamente checar toda esta teia. Muitas vezes uma pequena alteração praticamente invalidou outras partes do jogo.

Você não deverá ser o único beta-tester de seu jogo. Outras pessoas irão inspecionar seu jogo melhor do que você (para o pai, o filho vai ser sempre o mais bonito), e irão jogar de maneira diferente de você. Não tenha dúvidas de que irão achar erros que você não acharia.

Gaste parte do seu tempo desenvolvendo ferramentas para seu programa. É proveitoso gastar um dia inteiro trabalhando para resolver o trabalho de uma hora, se você faz o trabalho de uma hora várias vezes.

Quando algum colega vê o seu software, existem vários tipos de reação possível a ele… “interessante”, “maneirinho”, e “c******! Tem até o …”. O “interessante” significa fraco. O “maneirinho” quer dizer regular. E se alguém diz “C****** ! Tem até o detalhezinho da mosquinha pousando em cima da mesa!” ou frase parecida, significa que seu jogo está realmente ficando bom.

Quanto aos gráficos e som: assistindo ao jogo, as pessoas analisam detalhes. Jogando, elas vêem o jogo como um todo. Tenha em mente que gráficos e sons detalhados chamam a atenção do jogador antes de começar, e o ajudam a manter imerso no jogo após começar. Gráficos são particularmente importantes para jogos comerciais: ninguém compra um jogo com imagens feias na embalagem. Ou seja, os gráficos não são tão importantes quanto uma boa jogabilidade, mas com certeza eles vendem o jogo.

Gaste mais tempo concentrando-se na jogabilidade do que na tecnologia. Aquele jogo com altíssima tecnologia em 3D em tempo real, som surround, atores de Hollywood e controles que não respondem direito jamais vai ser tão divertido quanto um jogo de Atari.

Se você quer fazer um jogo para se divertir, faça-o do jeito que você gosta. Se você quer fazer um jogo para ser vendido, faça-o do jeito que os outros gostam.

Todo mundo gosta de jogos de computador. Aquela pessoa que diz que odeia jogos de computador muito provavelmente não conhece o jogo que gosta.

Seja original no seu jogo. Ninguém joga aquilo que já enjoou. Há alguns anos atrás, li em uma matéria na antiga revista CPU MSX uma frase que guardo até hoje: “Não digo que você não possa fazer o seu próprio PacMan. Faça-o, mas de uma maneira diferente do que todos nós já conhecemos”. Lembre-se de que os jogos no mesmo estilo de sempre podem até vender, mas os jogos recordistas eram diferentes do conhecido: Tetris, Wolfenstein 3D, Asteroids, Space Invaders, Grand Theft Auto, etc.

No seu jogo, nunca mostre todos os elementos disponíveis de cara. Vá gradualmente introduzindo novas características… Este é o melhor caminho para manter o jogador preso. No momento em que as novidades acabarem, o jogo acaba para o jogador.

No caso de um jogo em que o usuário assume um personagem, é fundamental ter um bom personagem e um bom cenário. Ninguém irá querer personificar alguém sem graça, e nem tampouco entrar em um mundo sem nada de interessante.

– Este texto é de autoria de Leandro Correia, escrito em dezembro de 2003. Este texto pode ser distribuído livremente em qualquer meio, comercial ou não, desde que exibido sem alterações.