Metal Gear Nanna – Criando jogos usando C++ e Open GL – Parte I

Metal Gear NannaIniciei um novo hobby neste final de semana: criação de jogos. De todas as atividades, a que mais me diverte sem sombra de dúvidas consiste em programar (há momentos nos quais tenho de me beliscar para acreditar que me pagam para isto!).

Após ter desenvolvido zilhões de aplicações empresariais/corporativas, acabo por ter a impressão/certeza de que sempre estou executando as mesmas tarefas: CRUD, validação de dados, formulários, bancos de dados, etc. Que tédio!

A solução para acabar com o problema consiste em buscar algo completamente diferente do feijão com arroz. O que poderia ser mais distinto que o desenvolvimento de um jogo?

  • A interface com o usuário não é a partir de formulários
  • Não preciso lidar com banco de dados algum (ainda irei escrever um dia sobre a minha teoria de que bancos de dados emburrecem programadores)!
  • É significativamente mais complexo, pois preciso gerenciar detalhes de gerenciamento de recursos com muito maior detalhamento.
  • Não estou preso a nenhuma restrição comercial!

Objetivos pessoais

Meus objetivos pessoais neste projeto consistem em me aprofundar no aprendizado do C++ e OpenGL a partir de uma aplicação real. Já faz no mínimo uns 6 anos que sei C++, porém nunca tive uma oportunidade de usá-la em um projeto real. Visto que a oportunidade não veio, porque não criá-la?

Além disto, ano passado fiz a matéria “Computação Gráfica” na faculdade, aonde aprendi OpenGL, que abriu meus olhos para o fato de que desenvolver aplicações gráficas não é algo tão complexo como até então imaginava. Na realidade, como exporei nesta série de posts, é quase fácil.

Enredo e Objetivo

O personagem principal da história é Nanna (minha esposa (aliás, uma bela maneira de homenagear quem amamos, não é mesmo?)), que após entrar para o grupo dos Vigilantes do Peso precisa vencer as tentações da vida dietética. A jogabilidade será basicamente a mesma presente no jogo Metal Gear original para MSX.

(a propósito, enquanto escrevia este post, descobri que existe uma versão do jogo para PC que pode ser baixada aqui)

Metal Gear original para o MSX

Nanna deverá chegar à sede dos vigilantes do peso saindo de sua casa. Mas o caminho não é tão tranquilo quanto aparenta, pois Nanna precisa evitar os malditos “Traficantes de Delícias” que, caso a vejam, acabarão por convencê-la a comer alguma coisa.

Cada um destes traficantes possui um raio de visão que Nanna deverá evitar. Caso a vejam, automáticamente nossa heroina perderá pontos. O jogo termina se uma das condições abaixo for satisfeita:

  • Nanna está com pontos menores ou iguais a zero.
  • Nanna chegou à sede dos vigilantes do peso em todas as fases.

Ainda não pensei se será possível restaurar pontos perdidos, porém nada impede que, além dos malditos traficantes, também existam “academias” espalhadas pelos diversos níveis do jogo aonde Nanna poderá voltar à boa forma.

Plataforma adotada

Como mencionei acima, um dos objetivos deste projeto consiste em me aprofundar em C++ e OpenGL. Dentre as diversas IDEs existentes atualmente, acabei por adotar o Dev-C++ pelas razões abaixo:

  • Possui pouquíssimos recursos, o que faz com que eu me sinta o mais próximo possível do compilador.
  • Possui integração com as bibliotecas do OpenGL que precisarei.
  • Caso no futuro eu desista desta IDE, ela não impõe nenhuma estrutura de diretórios ou restrição que me impeça de no futuro utilizar o editor/IDE que eu queira.

Será utilizada a biblioteca GLUT do OpenGL para o desenvolvimento deste jogo. GLUT significa Open GL Utility Toolkit, que consiste em uma biblioteca de funcionalidades da Open GL cujo principal objetivo consiste em abstrair o sistema operacional da aplicação, tornando-a assim multiplataforma. Dentre estes detalhes, encontra-se a criação de janelas e componentes de interface. A biblioteca GLUT foi implementada para basicamente todos os principais sistemas operacionais em uso atualmente. Sendo assim, você poderá pegar o código fonte qeu disponibilizarei e compilá-lo no sistema operacional de sua preferência.

Configurando o ambiente de desenvolvimento

Instalado o Dev-C++ em seu site oficial (http://www.bloodshed.net/devcpp.html), tudo o que você precisará fazer consiste em instalar a biblioteca GLUT no mesmo.

Abrindo o Dev-C++, clique no item de menu “Check for Updates/Packages…”. Surgirá uma janela tal como na imagem abaixo:

Localize o pacote GLUT na listagem presente e em seguida clique no botão “Download selected”. Pronto: o GLUT será baixado e em seguida instalado para uso pelo Dev-C++.

O que está por vir

Não tenho experiência ALGUMA no desenvolvimento de jogos, sendo assim, estou adotando um raciocínio out of the box neste processo, ou seja, o motor responsável pelo funcionamento de Metal Gear Nanna será inteiramente baseado na minha experiência como jogador de Metal Gear 1 e 2 para MSX.

Como consequência, irei reinventar inúmeras vezes a roda neste processo, o que é exatamente a intenção aqui. Pretendo com isto saber a fundo como funcionam todos os aspectos no desenvolvimento de jogos no nível mais baixo possível.

No próximo post irei disponibilizar o código fonte já criado e expor o modelo por trás do funcionamento de Metal Gear Nanna (e, espero, irei também expor gráficos bem melhores do que os obtidos por mim até a escrita deste post).

Até lá!

12 Comments

Add Yours →

Muito boa iniciativa, mas não te recomendo o uso do Dev-C++ pelo fato dele ser antigo e gerar pessimas mensagens de erro. Uma boa sugestão seria o Code::Blocks, praticamente os mesmos recusos, só que mais atualizado.

Responda

admin Reply:

Hmm… não o conheço.

Mas vou dar uma olhada e assim que tiver uma posição posto aqui minhas opiniões a respeito.

Responda

– É o único jogo que você se dá mal se achar um easter egg.
– Inclua elementos como as Baianas, o Assacabrasa e o Pastel.
– Fase bônus: Não ser visualizada pelo vendedor de bichinhos infláveis da Savassi (perde-se a grana da academia)

Responda

admin Reply:

Ta ai! Talvez os “traficantes de delícias” possam ser substituidos por Baianas!!!

Daria um ar nonsense ideal pro jogo, e ainda divertiria a protagonista!

Excelente idéia!!!

Responda

Sensacional!! Sempre quis partir pra criação de jogos. É sensacional, pede muito mais da criatividade do que desenvolvimento de aplicações. Porém também exige muito conhecimento de plataformas de mais baixo nível, comunicação com recursos de hardware e etc!

:D mantenha novidades em dia

Responda

admin Reply:

Foi exatamente por isto que comecei o hobby!

Pode ficar tranquilo, cada novo incremento no Metal Gear Nanna vou postar aqui. :)

Responda

Acompanhando!

Meu sonho é programar jogos.

Até agora só tenho com C e Java, faço faculdade de Ciência da Computação.

Responda

visite-nos: constructcode.blogspot.com, paticipe também: em relação ao Dev-C++ foi descontinuado, em seu lugar nasceu o poderoso: Code::Blocks is a full-featured IDE 8.02(Integrated Development Environment)o qual uso e é lógico (código) aberto: http://www.codeblocks.org, e programa-se OPENGL com ele que Maravilhoso. Convido geral todos a dar uma olhada no blogsite: constructcode.blogspot.com, troque figurinha conosco: nilson.lana@uol.com.br a disposição. seja seguidores e de uma forcinha!!fúuúúúíiii!!! 14/07/09

Responda

eu gostaria de pedir q continuasse com o uso do deve-c++
sou um humilde universitário ainda…
e me ajudaria muito…
ainda mais q é o ramo da programação q eu gostaria de entrar…
e foi oq me deu mais incentivo em fazer meu curso…
quero acompanha-lo…
me incentivei mais ainda quando vi essa sua postagem…
obrigado desde agora…
vlw

Responda

admin Reply:

Opa,
na realidade, eu pretendo continuar com o Dev-C++ mesmo, pois tem atendido até agora a 100% das minhas necessidades.

Responda

Olá meu caro, bom saber que você possui o mesmo hobby que eu. Eu me juntei com um cabeção da comunidade PDJ criador do framework Easy2D e estou criando um jogo de RTS (estratégia em tempo real). Estou usando C++ e IDE Code::Blocks. Qualquer dúvida pode mandar que te ajudo.

Como os demais, eu aconselho vc a usar o Code::Blocks. Eu usava tb o Dev-C++ e adorava, mas depois que passei a mexer com o Cobe::Blocks vi que supera e muito o outro. As mensagens de erro são melhores, possui menos bugs e é mais completo. Se o Dev está te atendendo, então continue com ele. Mas em algum momento vc vai precisar de algo que ele não poderá atender.

Responda

Deixe um comentário

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.