Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Desenvolvimento de Jogos em Java

Desenvolvimento de Jogos em Java

Apresentação básica sobre como construir um jogo de Breakout em Java usando a libGDX.

Bruno Croci

November 22, 2012
Tweet

More Decks by Bruno Croci

Other Decks in Programming

Transcript

  1. Bruno Croci • Estudante de SI; • desenvolvedor de jogos

    na HIVE; • trabalha com programação de jogos há mais de dois anos; • desenvolve e estuda joguinhos há quase dez anos; • curte metal \m/. • http://crocidb.com/blog • http://bruno.croci.me/ • @CrociDB • [email protected]
  2. Desenvolvimento de Jogos • Atividade multidisciplinar ◦ Programador ◦ Artista

    ◦ Designer ◦ Escritor ◦ Roteirista ◦ Produtor ◦ Testador ◦ Músico ◦ Engenheiro de Som ◦ . . .
  3. • Antigamente os jogos eram feitos por uma única pessoa.

    • O Programador era resonsável por desenvolver, implementar os gráficos e sons depois de, claro, ter a ideia.
  4. • Livro sobre game design de 1984 do Chris Crowford;

    • conta algumas histórias sobre o desenvolvimento de alguns de seus jogos; • explica bem o workflow de desenvolvimento da época; • nova edição (2011) para kindle com comentários atuais do autor sobre suas ideias.
  5. • Análise da plataforma do Atari 2600; • demonstra a

    dificuldade que era desenvolver para essa plataforma; • um bom histórico da evolução dos jogos (e do desenvolvimento).
  6. • Mas ainda hoje há bons jogos sendo produzidos por

    uma única pessoa ou pequenas equipes; • compartilhamento de assets pela internet; • compra de assets; • contratação de freelancers;
  7. Estágios do Desenvolvimento • Ideia • Conceitos e Definições •

    Prototipação • Produção • Publicação
  8. Breakout / Arkanoid • Primeiro Breakout foi implementado por Steve

    Wozniak para a Atari, em 1976! • O conceito e a ideia, entretando, foi feito por Nolan Bushnell, fundador da Atari. • Embora o jogo tivesse sido criado para arcade, ele foi portado para os console posteriores da Atari. • Arkanoid é um jogo que implementa a mesma jogabilidade do Breakout e foi desenvolvido por uma empresa japonesa em 1986 para Arcade.
  9. • Mostra o que é diversão e como ela é

    aplicada em jogos; • texto bem humorado e de fácil compreensão; • clássico da área de jogos. • Tratado completo sobre desenvolvimento de jogos; • fala desde a fase de ideias até a fase de publicação; • indicado para todos que trabalham com jogos • Principal livro sobre game design atualmente; • cobre todos os aspectos do design de jogos, desde princípios psicológicos, sem ser muito teórico.
  10. Raquete • Movimento lateral de acordo com a entrada do

    usuário • Não pode ultrapassar as paredes laterais
  11. Tijolos • Não têm movimento • Ficam dispostos no cenário

    • Ao serem tocados pela bola são destruídos
  12. Game • Finaliza quando: ◦ O jogador quebra todos os

    tijolos com a bola. Neste caso o jogador ganha. ◦ Todas as bolas do jogador foram disperdiçadas, resultando em derrota. • O jogador tem 3 bolas. Quando uma bola cai no buraco, outra é usada.
  13. Desenvolvimento • Plataforma ◦ Desktop ◦ Android? • Linguagem de

    Programação ◦ Java • Kit de Desenvolvimento ◦ libGDX
  14. Por que Java? • Todos vocês sabem (?) • Multi-plataforma

    • Java não é muito usada para jogos: ◦ todas as grandes engines de jogos são escritas em C/C++; ◦ não tem suporte em consoles; ◦ performance muitas vezes demanda acesso direto ao hardware; ◦ no mundo independente é um pouco diferente.
  15. Por que libGDX? • roda em Desktop e Android; •

    exporta para HTML5; • usa OpenGL ES, ou seja, tem aceleração por hardware; • suporte a 2D e 3D; • biblioteca de física embutida; • serialização por json; • ferramenta de criação de projeto simples; • editor de partículas; • código aberto; • etc.
  16. Esqueleto da aplicação • create - é executado quando o

    jogo é iniciado; • dispose - é executado quando a aplicação é fechada; • render - é executado a cada frame do jogo (loop principal); • resize - é executado quando a janela é redimensionada (ou quando muda a direção no aparelho); • pause/resume - é executado quando a tecla home do aparelho é pressionada e quando o foco volta ao aplicativo respectivamente.
  17. Problemas & Melhoras • implementar física mais realista; • melhorar

    colisão (há vários bugs quando a bola bate no tijolo ou na raquete); • implementar sistema de pontos/tempo e número de bolas; • implementar tela de menu; • colocar sons; • gráficos mais bonitos; • sistema de fases com vários níveis de dificuldade; • etc.
  18. Publicação • Desktop ou Applet: ◦ Gerar um arquivo JAR

    ◦ Distribuir o jogo em sites de jogos gratuitos como o GameJolt. • HTML5: ◦ Vários sites de jogos com suporte a HTML5: Kongregate, HTML5Gamer.net, HTML5Games. com, etc. • Android: Colocar no Google Play • Criar um site para o jogo • Divulgar em fóruns de jogos e comunidades em redes sociais.