Concrete Logo
Hamburger button

Como desenvolver seu próprio jogo – Parte 1

  • Blog
  • 7 de Março de 2014
Share

Criando projeto e objetos

Muitos dos desenvolvedores de software chegaram onde estão hoje movidos por uma paixão: o desejo de fazer o seu próprio jogo, exatamente do jeito como querem, e fazer com que esse seja o melhor jogo de todos. Porém, muitos nem mesmo chegam a enfrentar os desafios envolvidos em fazer um jogo, por mais simples que sejam. Talvez por falta de tempo, ou por não saber por onde começar, ou por olhar as ferramentas existentes e concluir que vai ser muito difícil fazer aquele monte de gráficos.

A realidade é que a maioria das ferramentas que existem hoje para desenvolvimento de jogos são baseadas em um fluxo de trabalho focado na arte do jogo, na qual você começa trabalhando a parte visual e depois vai acrescentando a lógica aos poucos, até chegar ao resultado. Muitas vezes, a adição de lógica se resume a adicionar código pronto de outros desenvolvedores que vendem plugins para a plataforma escolhida.

Nesta série de posts, vamos tentar fazer uma abordagem diferente, utilizando uma plataforma focada no desenvolvedor tradicional. Ou seja, ela nos proverá a infraestrutura necessária para falar com placa de vídeo, placa de som e outros periféricos, mas grande parte do código será escrito por nós mesmos.

Para essa série, vamos utilizar o jMonkey, plataforma em Java para desenvolvimento de jogos. Dentre as grandes vantagens desta plataforma está uma comunidade ativa e código fonte disponível para consultas, caso necessário. Vamos postar todos os códigos e criar um repositório com o código disponível para quem quiser clonar. Porém, é recomendável conhecimento pelo menos intermediário de Java para a correção de eventuais problemas que possam acontecer, ok?

Instalando o jMonkey

Os downloads do jMonkey estão disponíveis neste link. Lá temos versões para Windows, Linux e Mac. Todos os instaladores já vêm com um JDK compatível embutido, e é recomendável que se continue utilizando esse JDK.

Atualizando o jMonkey

Depois da instalação da plataforma, é necessário atualizá-la. Eu particularmente gosto de colocar as atualizações consideradas “instáveis”, pois sempre têm novos recursos para testar e usar. Eles avisam que pode quebrar a IDE, mas eu nunca tive problemas.

Para habilitar as atualizações instáveis, acesse o menu “Tools/Plugins” e clique na aba “Settings”. Deve-se habilitar a opção “jMonkeyEngine SDK Nightly (Breaks!)”, conforme a imagem:

jmonkey1

Voltando na aba de “Updates”, clique em “Check for Updates” e depois de ele checar, clique em “Update” para atualizar o seu jMonkey para a versão mais recente. Dependendo do número de atualizações e da velocidade da sua internet, pode demorar um pouco.

Antes de instalar efetivamente, confirme a tela que informa que os plugins não são assinados. Deixe marcada a opção “Restart Now” e conclua a instalação dos plugins.

Primeiro projeto

O jMonkey possui uma série de tutoriais para ensinar alguns conceitos básicos da plataforma, mas eles não são interligados. Para facilitar o entendimento, acho válido que façamos um projeto inicial bem simples, e que trabalhemos em cima dele aos poucos, explicando como as coisas funcionam e ligando umas às outras na prática.

Acho que um jogo clássico que podemos usar como base para começar é o Pong. Todo o código da série estará disponível neste repositório mercurial.

Para começar, vamos criar um projeto vazio no jMonkey.

1) Selecionamos o menu “File -> New Project…”

2) Em categorias, selecionamos “JME3”

3) Em projetos, selecionamos “BasicGame”

4) Clicar em “Next”

jmonkey2

5) Na próxima tela, deve-se preencher o nome do projeto em “Project Name” (no nosso caso “Pong”) e clicar em “Finish”. Ao final do procedimento, um projeto será criado no jMonkey.

jmonkey3

 Vamos destacar a estrutura criada para o projeto para explicar um pouco da organização do jMonkey.

O projeto de jogo padrão do jMonkey cria uma estrutura de pasta de recursos (assets) para facilitar a organização. É interessante manter essa organização dentro da pasta “Project Assets”, mesmo que todas as pastas sejam renomeadas ou recriadas, pois várias ferramentas da plataforma assumem que os recursos estarão dentro dessa pasta.

O mais importante para nós, no momento, é o código Java gerado. Por padrão, é criada a classe “mygame.Main” que já é um exemplo funcional. Se quiser, vale estudar por curiosidade o código ali presente, e executá-la (clicando no botão de “Play” – verde – na barra de tarefas jmonkey4). Essa versão inicial apenas renderiza um cubo totalmente azul na tela, e permite que se utilize o mouse para rotacionar e as teclas WASD para movimentar a câmera.

Para manter as coisas simples no momento, vamos substituir gradativamente o código dessa classe ao longo dos artigos, podendo sempre ir testando aos poucos as alterações.

Criando os objetos

Agora, vamos criar os objetos que utilizaremos no nosso Pong. Como precisaremos criá-los no método de inicialização da plataforma, e precisaremos acessá-los posteriormente no método de callback de atualização, é necessário declarar os objetos como variáveis de classe.

Substituímos o código dentro do método “simpleInitApp()” pelo código abaixo:

Se tentarmos rodar agora o nosso projeto, receberemos uma exception: “java.lang.IllegalStateException: No material is set for Geometry: Bola”, acompanhada do respectivo stack trace.

Esse é um problema fácil de resolver, e poderíamos ter evitado que ele acontecesse desde o início. Porém, é bom para exemplificar o quão informativas são as exceções no jMonkey.

Criamos os objetos, o que define a sua estrutura. Ou seja, quantos vértices e onde esses vértices estão posicionados, e quais as arestas entre os vértice serão consideradas. Porém, não incluímos a informação do que renderizar em cada face do objeto, que é responsabilidade do material.

Vamos, então, criar um novo material para todos os objetos usarem, para que tenhamos uma cena funcional para prosseguirmos.

No início do método “simpleInitApp()”, criamos o material:

E mais adiante no método, logo após criarmos os três objetos, adicionamos o código abaixo, para associar o material com os três objetos criados:

Pronto! Agora já temos o início de um projeto, com objetos formados, apesar de não serem muito iterativos no momento. No próximo post, vamos terminar de arrumar os nossos objetos nas suas posições corretas, colocar a câmera em um ângulo melhor e configurar as primeiras teclas para movimento dos nossos “jogadores”. Fique atento!

Se você não entendeu algo ou sentiu dificuldade em alguma parte até aqui, deixe seu comentário. Se quiser conferir como o código fica no final dessa parte, basta checar o repositório: Parte um.