Ir ao conteúdo
  • Cadastre-se

Introdução a criação de jogos


Jéferson D.

Posts recomendados

Objetivo

Não faz muito que vim parar aqui no setor de programação e desenvolvimento, e neste meio tempo tenho ouvido muita gente comentar sobre desenvolver jogos. Bem, muitos devem estar indagando: "E você entende disto por acaso?"... na verdade, não faz pouco tempo que me interessei e busquei me aprofundar na área, porém a falta de mercado propício no Brasil me fez regredir e tornar a tarefa apenas em um hobbie, nada que se possa julgar profissional. Como estou com tempo de sobra, resolvi redigir este guia básico a quem já sabe programar e que pretende lhe assegurar os primeiros passos na área e quem sabe, caso tenho mais sorte, até iniciar no crescente mercado de desenvolvimento de jogos eletronicos (games). Lembre-se, ninguém começa uma carreira já no auge, tem que se construir a mesma aos poucos e somente com muito empenho se chegará lá em cima. Vamos ao que interessa.

Introdução

Já é de tempos que as pessoas que me conhecem vem a mim perguntando com se faz um jogo. Muitas delas já começam dizendo: "Quero aprender a criar um jogo que nem Halflife, StarCraft e Final Fantasy", embora a lista possa variar pelo gosto de cada um, sempre é a mesma história, desenvolver um jogo que esteja no mesmo auge do seu preferido.

Em primeiro lugar, criar um jogo é uma área muito complexa, pois há vários aspectos a se listar e componentes muito complexos a se abranger.

Outro tópico importante é a falta de realismo no que se diz respeito a expectativas por parte de muitos iniciantes, ora, Halflife, StarCraft e Final Fantasy são jogos desenvolvidos por uma equipe enorme e que geralmente contam com muito dinheiro para o mesmo. Além disto, cada um dos envolvidos nestes projetos já possuem anos de experiencia na área, então querer começar por ai já é o primeiro passo para desistir antes mesmo de começar.

Grave na sua mente que não é possível, não importa o empenho, desenvolver jogos daquele calibre logo de cara. Insistir nisto é perder um tempo precioso de aprendizagem e ser vencido pelo desanimo de não conseguir terminar nada do que se começa. Uma vez assimilado isto, você já está pronto para iniciar.

Afinal de contas, por onde começo

Muitos dos desenvolvedor profissionais concordam que o melhor projeto para se começar é um simples joguinho de tetris. Por quê? Simples, tetris é um jogo que contém todos elementos básicos encontrados em todos os games criados no mundo, além do que, não precisa ser um artista para criar um jogo de tetris realmente bom. Qualquer um pode desenhar alguns bloquinhos no paint e com um pouco de empenho, até criar algo de qualidade comercial.

tetris.jpg

A vantagem, no tetris você poderá finalmente criar um jogo completamente funcional e o melhor, não precisa de uma larga equipe para isto. Além do que, não precisa estudar muito para se saber como funciona um joguinho de tetris, não é mesmo?

Quanto aos aspectos didáticos, em tetris você fará uso de elementos que qualquer jogo que você venha a criar irá ter, mesmo que você trabalhe para uma Valve ou Blizzard da vida. Ele contém elementos de loop (ou seja, o jogo continua até que acabe por derrota ou o jogador resolva sair), o jogo lê as teclas e responde em tempo real (questão de entrada e execução de comandos), atualiza os elementos na tela (nenhum jogo permanece com seus elementos inalterados para sempre, né?) e checa condições de derrota e vitória. Como já disse, cada simples jogo que você criar daqui pra frente irá fazer isto destes elementos, então treine duro e não desista até ter conseguido um resultado satisfatória na sua primeira empreitada.

Uma vez feito pelo primeira vez, você já terá uma noção de quão longo e difícil será desenvolver os futuros projetos, diga-se mais complexos. Agora a parte dura do negócio: se você não consegue implementar este projeto e acha que pode seguir adiante, pare a pense, pois se desistir aqui, quem dirá em projetos maiores onde a complexidade é várias vezes maior.

Certo, e agora?

Então, fez seu caminho até aqui, hein? Então você está pronto para seu próximo desafio: Breakout. Este jogo é muito similar ao tetris, porém com um sistema muito mais avançado de detecção de colisões do que aquele encontrado no seu primeiro projeto. Você também precisa implementar um sistema de deflexão simples, onde o curso da bolinha varia de acordo com a posição que ela bate no paddle, paredes e blocos.

breakout.jpg

Outro desafio importante é a construção de níveis e a introdução aos sistema de save/load encontrada em muitos jogos profissionais. Você pode investir mais na arte e na física do jogo, criando um jogo de boa qualidade.

pacman.gif

Uma vez ultrapassados todos os desafios do breakout, agora você está pronto para criar seu próximo grande projeto: Pacman. Aqui vemos pela primeira vez o uso de A.I. nos inimigos, algo que se tornará muito importante no meio profissional. Basei-se no projeto original, onde cada fantasma possuia uma função especifica no jogo ao tentar pegá-lo com um time. Para quem não sabe, a A.I. original de Pac-man classifica os fantasmas em quatro modos: um tenta te pegar pelo caminho mais curto, outro tenta te pegar em alguma junção que você irá para fugir do primeiro fantasma, outro tenta te interceptar usando os tuneis de "teletrasporte" e o ultimo busca ficar na proteção de alguma area que você precise passar para terminar o nível. Este tipo de A.I foi muito avançada naquele tempo e hoje é um ótimo excercio para aperfeiçoar a sua.

SuperFlashMarioBrothers.gif

Por último, tente criar um side-scroller como Mario e Sonic, onde você terá contato com elementos mais avançados, tais quais interação com os personagens (aliados e inimigos), fisica avançada de colisão, plataformas, power-ups e todos os outros elementos que já conhecemos. Procure começar com algo simples, como a primeira versão do Mario para Nintendo (aka nintendinho). Depois parta para algo mais grande, como o uso de armas, inimigos dotadas de A.I. e coisas do genero side-scroller shooter.

Acabou?

Se você concluiu com sucesso todos os projetos propostos aqui, meus parabens, você acaba de adquirir todo conhecimento básico necessário para o ramo de maneira prática e por que não, divertida. Porém, muito mais lhe espera ao longo desta empreitada. Meu objetivo basico aqui foi guiar quem quer começar e não sabe por onde, de forma que se envolvendo em coisas simples como esta, o mesmo possa vir a se aperfeiçoar e se envolver e coisas maiores e a níveis mais profissionais. Lembrando novamente, este guia não ensina nada de maneira pratica, apenas lhe dá o mapa de onde ir para ter um caminho mais fácil. Segui-lo ou não é sua escolha, mas posso dizer que muitos seguiram e não se arrependeram.

Bem é isto,

Logo que possível irei introduzir aqueles que não tem conhecimento algum de programação, ensinar qual as melhores linguagens, engines, ensinar sobre SDK's, gráficos, sons e outros aspectos importantes. Até lá.

:cool:

Link para o comentário
Compartilhar em outros sites

Gostei. Parabéns. Bastante realista e com exemplos de "por onde começar" que eu indicaria exatamente igual.

Deveria virar post fixo. Toda semana aparece post (ou posts) de gente querendo fazer MMORPG, e que nunca tentaram fazer nem um Tetris.

JP

p.s.: você humilde demais! Só por esse post já se vê que você é menos rookie que muito "hacker" poraí :)

Link para o comentário
Compartilhar em outros sites

Aspectos básicos

Tudo bem, o tópico acima sugere que você já possui conhecimentos ao menos medianos de programação e claro, já possua uma linguagem preferida para trabalhar. Agora, irei apresentar alguns aspectos teóricos a quem nunca programou, não faz a menor ideia do que forma um jogo a não ser gráficos e programação e gostaria muito de iniciar o aprendizado pelo melhor caminho possível. Novamente perseverança e humildade são qualidades essenciais para se começar bem.

Qual linguagem escolher

Existem hoje várias linguagens de programação muito boas para se começar: Java, Basic, C, Pascal, etc. Atualmente existe muito debate sobre qual a melhor linguagem para um iniciante. Sempre que alguém me pergunta, sugiro de imediato o C/C++. Embora muitos dos profissionais me critiquem alegando que esta é uma linguagem muito avançada para um iniciante, eu discordo. Eu começei programando em C++ e posso dizer que não há melhor, uma vez que grande parte das grandes linguagens, é programada em C. Além do que, C/C++ é uma linguagem muito usada e o iniciante com certeza irá encontrar muito material disponível para estudo. Não faz diferença alguma se você começa com C ou C++, aprender a outra é algo que se pode chamar de trivial.

Porém, iniciando no C++, certifique-se de possuir pelo menos algum conhecimento de programação procedural antes de prosseguir a programação orientada a objetos (esta habilidade de suportar ambos tipos de programação é ponto forte para começar com C++).

Caso resolva iniciar no C++ e esteja encontrando tempos dificeis em seu aprendizado, sinta-se livre para tentar uma linguagem mais simples, como Pascal ou Basic. Mas acredito que, com um pouco de empenho e disponibilidade de um bom material de aprendizagem, você não irá encontrar maiores dificuldades aprendendo C.

Agora você deve estar perguntando: "certo, e como eu aprendo C/C++". Sua melhor escolha é se inscrever em algum curso ou buscar livros sobre o assunto (e não se importe em encontrar o melhor exemplar, pois seguindo neste ramo irá exigir que você adquira um monte deles). Não tem dinheiro para comprar livros ou se inscrever em cursos? A internet está cheia de ótimos tutoriais e apostilas gratuitos sobre a C/C++ (ex. apostilando.com, imasters). Sempre vale a dica: antes de aprender qualquer linguagem, busque estudar a fundo lógica matemática, algebra e lógica de programação (o famoso portugol). Outro ponto importante é começar programando para plataformas simples que não involvam ambientes gráficos, como DOS e UNIX.

Compiladores

Os programas que você escreve (source code) é basicamente armazenado com um arquivo texto *.txt, ou seja, até o bloco de notas do windows pode ser usada para programar. Porém, algo precisa pegar este texto e converte-lo em algo que possa ser executado, a isto damos o nome de compilador.

Existe uma larga lista de compiladores disponíveis, de gratuitos a pagos. A escolha do compilador depende muito do Sistema Operacional e da plataforma para qual você irá desenvolver. Caso você queria desenvolver para windows eu recomendo o Visual C++, que é um ambiente de programação extremamente poderoso e repleto de recursos para tornar sua vida mais fácil. Você pode ainda consultar pessoas experimentadas na sua plataforma ou S.O. de escolha para obter ajuda na escolha do melhor compilador para você.

Mais tarde iremos falar de SDK's (Kits de desenvolvimento) como DirectX SDK, o que torna o Visual C++ uma boa pedida. Por último, temos linguagens de programação diretamente voltadas a programação de jogos (ex. Dark Basic, provinda do Basic), mas uma vez que você saiba programar em C, aprende-las será muito mais fácil do que se imagina.

Escolhendo uma plataforma

Ainda que você venha a programar para diversas plataformas, o melhor é que você escolha uma e se dedique a ela enquanto está em fase de aprendizagem. Uma vez que você esteja pronto para começar a desenvolver games, já pode considerar uma mudança de plataforma ou prosseguir o aperfeiçoamente naquele que escolheu inicialmente. Vejamos agora as plataformas mais usadas para desenvolvimento de jogos:

Windows Se você quer eventualmente trabalhar no ramo profissional ou apenas quer que muitas pessoas tenham acesso ao seu jogo, então esta é a plataforma que você irá querer usar. A maior parte do seu publico alvo usa o Windows e particularmente não vejo nenhuma mudança neste cenário tão cedo. Além do mais, você já deve ter ouvido falar no DirectX, que é exclusivo para este sistema e a que mais evolui em termos técnologicos para uso de desenvolvedores. DirectX é uma biblioteca que permite acesso direto ao hardware, o que significa que você poderá desenvolver jogos de alta-performance.

DOS Foi uma plataforma vastamente usada a algum tempo, mas estes tempos já foram. Embora alguns desenvolvedores de nível amador ainda desenvolvam em DOS, atualmente nenhum jogo a nível profissional é programado em DOS. Se você está começando a desenvolver jogos, não começe com DOS. Embora seja grande a quantidade de tutoriais ensinando a programar nesta plataforma, é também crescente o numero de tutoriais voltados a Windows e outras plataformas mais rentáveis. Caso queira ainda assim aprender algo dela, não fique muito tempo, pois não será de muita valia no futuro.

Linux Linux é uma variação do Unix que vem se tornando popular por vários fatores como estabilidade, preço e mesmo por adeptos do movimento anti-Microsoft. Ainda que o numero de usuários Linux seja relativamente pequeno, o crecente entusiasmo em torno da plataforma a torna uma opção bem viável para se desenvolver jogos.

Macintosh A maior parte dos usuários de Mac são fíeis a plataforma, embora em numero relativamente pequeno. Embora sejam escassos os recursos para se desenvolver nesta plataforma, eles estão por ai, só saber achar.

Consoles O mercado profissional em torno dos consoles é imenso e altamente rentável. Entretanto, desenvolver para consoles em níveis não profissional é algo nada plausível e você provavelmente só começara a desenvolver aqui quando estiver trabalhando para um estudio de games num ambiente profissional.

Concluindo

Agora vamos discutir sobre a criação de jogos propriamente dita, vou presumir que você escolheu desenvolver em C/C++ para Windows, usando o Visual C++. Antes de desenvolver qualquer jogo, certifique-se de ter bons conhecimentos de C/C++ e entenda recursos como ponteiros, vetores, estruturas (structs), funções e classes. Tenha certeza que consegue usar cada um deles de maneira tão natural quanto você faz calculos matemáticos de adição de subtração.

Fique claro que meu objetivo não é ensina-lo a desenvolver um game do zero, não ainda. Para tanto, busque expandir seus conhecimentos com livros, apostilas, tutoriais e toda fonte de conhecimento possível, por mais simplório e banal que possa parecer, tudo se acrescenta. E quando estiver aprendendo, lembre-se de seguir algumas dicas importantes, não só aqui como em qualquer outro lugar.

a) Enquanto aprende, evite se unir em equipes para desenvolver, isto só atrasa seu aprendizado.

B) Não fique apenas acumulando conhecimento, aplique na prática imediatamente. Assim você evita esquecer o que aprendeu e o trabalho de refazer tudo novamente.

c) Jogue muito (gostou né?), assim você aprenderá a criar boas idéias e aprenderá sobre erros que você provavelmete não irá querer cometer nos seus projetos.

d) Termine o que começar, não fique naquela de "tava indo bem, mas agora tenho uma ideia melhor" ou ainda "não tá bom, melhor começar de novo".

Agindo desta forma você nunca vai ir a parte alguma e nunca provará para si mesmo que tudo não passa de mera falação. Mesmo que seu jogo seja nota 0, empenhe-se em terminá-lo, aprimore-o e aprenda com seus erros. Desta forma você irá progredir e acumular confiança em si mesmo para somente ir em frente.

e) Ajude os outros, conforme adquire conhecimento, não seja egoista de guardar tudo para si mesmo, e ainda você irá aprender muita coisa nova meramente ensinando os outros (serve em qualquer area, sério!).

Agora você já possui o conhecimento do que precisa para concretizar este seu sonho. Pergunte a si mesmo, é isto mesmo que eu quero? Caso sim e caso não seja mero impulso, seja bem-vindo e lembre-se, enquanto você está vivo, você está aprendendo, pare por um minuto e já basta para perder tudo o que foi conquistado. Grave ai: aprender, aprender, aprender...

Em breve talvez iniciemos a parte prática, mas antes vou preparar um bom conteúdo para começarmos.

Grande parte conhecimento usado aqui foi adquirido das matérias publicas por Dave Astle no site gamdev.net. Outras incluem livros como Beginning 3D Game Programming de Tom Miller e Beginning C++ Game Programming de Michael Dawson

-Fariajp: Agredecimentos pelo elogio, realmente estou apenas iniciando na área, quem sabe algum dia, possa por Senior Programmer ai em baixo. Afinal, o que seria do homem sem um objetivo na vida?

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!