DESENVOLVIMENTO
DE   JOGOS
       COM JAVA




             Bruno Croci - http://bruno.croci.me/
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
                              ●   bruno@croci.me
Desenvolvimento de Jogos
● Atividade multidisciplinar
   ○   Programador
   ○   Artista
   ○   Designer
   ○   Escritor
   ○   Roteirista
   ○   Produtor
   ○   Testador
   ○   Músico
   ○   Engenheiro de Som
   ○   ...
PROGRAMADOR

  ARTISTA

 DESIGNER
● 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.
● 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.
● 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).
● 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;
Braid

        Super Meat Boy
Estágios do Desenvolvimento


●   Ideia
●   Conceitos e Definições
●   Prototipação
●   Produção
●   Publicação
Ideia
    Mais um




 Clone
   de
Breakout
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.
● Tratado completo
                       sobre
                       desenvolvimento de
                       jogos;
                     ● fala desde a fase de
                       ideias até a fase de
                       publicação;
                     ● indicado para todos
● Mostra o que é       que trabalham com
  diversão e           jogos
  como ela é
  aplicada em
  jogos;                                      ● Principal livro sobre
● texto bem                                     game design
  humorado e de                                 atualmente;
  fácil                                       ● cobre todos os
  compreensão;                                  aspectos do
● clássico da área                              design de jogos,
  de jogos.                                     desde princípios
                                                psicológicos, sem
                                                ser muito teórico.
Conceito
Bola


● É movida automaticamente
● Rebate
  ○ Paredes laterais
  ○ Teto
  ○ Raquete
  ○ Tijolos
Raquete



● Movimento lateral de acordo com
  a entrada do usuário
● Não pode ultrapassar as paredes
  laterais
Tijolos


● Não têm movimento
● Ficam dispostos no cenário
● Ao serem tocados pela bola são destruídos
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.
Prototipação



● Testes de
 ○ mecânica de jogo;
 ○ plataforma;
 ○ métodos de entrada;
 ○ etc.
Arte




http://crocidb.com/files/java-game/assets.zip
Desenvolvimento


● Plataforma
  ○ Desktop
  ○ Android?
● Linguagem de Programação
  ○ Java
● Kit de Desenvolvimento
  ○ libGDX
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.
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.
Download

http://code.google.com/p/libgdx/downloads/list



  Última versão: 0.9.6
      http://code.google.com/p/libgdx/downloads/detail?name=libgdx-0.9.6.zip&can=2&q=
Criando um Projeto




   gdx-setup-ui.jar
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.
Loop Principal
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.
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.
Projeto
● Código-fonte:
  ○ https://github.com/CrociDB/breakout-java-workshop
● Slides:
  ○ http://crocidb.com/files/java-game/slides.pdf
● Jogo:
  ○ http://crocidb.com/files/java-game/breakout.jar
●   http://crocidb.com/blog
●   http://bruno.croci.me/
●   @CrociDB
●   bruno@croci.me

Desenvolvimento de Jogos em Java

  • 1.
    DESENVOLVIMENTO DE JOGOS COM JAVA Bruno Croci - http://bruno.croci.me/
  • 2.
    Bruno Croci ● Estudantede 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 ● bruno@croci.me
  • 4.
    Desenvolvimento de Jogos ●Atividade multidisciplinar ○ Programador ○ Artista ○ Designer ○ Escritor ○ Roteirista ○ Produtor ○ Testador ○ Músico ○ Engenheiro de Som ○ ...
  • 7.
  • 8.
    ● Antigamente osjogos 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.
  • 9.
    ● Livro sobregame 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.
  • 10.
    ● 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).
  • 11.
    ● Mas aindahoje há bons jogos sendo produzidos por uma única pessoa ou pequenas equipes; ● compartilhamento de assets pela internet; ● compra de assets; ● contratação de freelancers;
  • 12.
    Braid Super Meat Boy
  • 13.
    Estágios do Desenvolvimento ● Ideia ● Conceitos e Definições ● Prototipação ● Produção ● Publicação
  • 14.
    Ideia Mais um Clone de Breakout
  • 16.
    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.
  • 17.
    ● Tratado completo sobre desenvolvimento de jogos; ● fala desde a fase de ideias até a fase de publicação; ● indicado para todos ● Mostra o que é que trabalham com diversão e jogos como ela é aplicada em jogos; ● Principal livro sobre ● texto bem game design humorado e de atualmente; fácil ● cobre todos os compreensão; aspectos do ● clássico da área design de jogos, de jogos. desde princípios psicológicos, sem ser muito teórico.
  • 18.
  • 19.
    Bola ● É movidaautomaticamente ● Rebate ○ Paredes laterais ○ Teto ○ Raquete ○ Tijolos
  • 20.
    Raquete ● Movimento lateralde acordo com a entrada do usuário ● Não pode ultrapassar as paredes laterais
  • 21.
    Tijolos ● Não têmmovimento ● Ficam dispostos no cenário ● Ao serem tocados pela bola são destruídos
  • 22.
    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.
  • 23.
    Prototipação ● Testes de ○ mecânica de jogo; ○ plataforma; ○ métodos de entrada; ○ etc.
  • 24.
  • 25.
    Desenvolvimento ● Plataforma ○ Desktop ○ Android? ● Linguagem de Programação ○ Java ● Kit de Desenvolvimento ○ libGDX
  • 26.
    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.
  • 28.
    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.
  • 30.
    Download http://code.google.com/p/libgdx/downloads/list Últimaversão: 0.9.6 http://code.google.com/p/libgdx/downloads/detail?name=libgdx-0.9.6.zip&can=2&q=
  • 31.
    Criando um Projeto gdx-setup-ui.jar
  • 33.
    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.
  • 34.
  • 36.
    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.
  • 37.
    Publicação ● Desktop ouApplet: ○ 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.
  • 38.
    Projeto ● Código-fonte: ○ https://github.com/CrociDB/breakout-java-workshop ● Slides: ○ http://crocidb.com/files/java-game/slides.pdf ● Jogo: ○ http://crocidb.com/files/java-game/breakout.jar
  • 39.
    http://crocidb.com/blog ● http://bruno.croci.me/ ● @CrociDB ● bruno@croci.me