desenvolvimento de jogos em java
DESCRIPTION
Apresentação sobre desenvolvimento de jogos e como desenvolver um Breakout básico.TRANSCRIPT
DESENVOLVIMENTO
Bruno Croci - http://bruno.croci.me/
DE JOGOSCOM JAVA
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]
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
IdeiaMais 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.
● 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.
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.
http://code.google.com/p/libgdx/downloads/list
Download
Última versão: 0.9.6http://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