34
CRIANDO JOGOS DIGITAIS EM JAVA Autor Michel Pinheiro Montenegro ([email protected]): Mais de 14 anos de experiência profissional na área de T. I. Bacharel em Sistemas de Informação pelo Instituto de Estudos Superiores da Amazônia - IESAM. Esta cursando sua pós-graduação em Latu Sensu em Engenharia de Sistemas pela Escola Superior Aberta do Brasil - ESAB. Participação em grandes projetos para o Estado como Transparência-Pará. Possui 16 cursos extracurriculares na área de T.I

Criando jogos digitais em java

Embed Size (px)

DESCRIPTION

Este Slide foi feito para uma palestra sobre Jogos Digitais em Java, mostrando padrões e similaridades existentes em diferentes abientes, como por exemplo (Criando um jogo em Java no Android ou PC).

Citation preview

Page 1: Criando jogos digitais em java

CRIANDO JOGOS DIGITAIS EM JAVA

Autor Michel Pinheiro Montenegro ([email protected]): Mais de 14 anos de experiência profissional na área de T. I. Bacharel em Sistemas de Informação pelo Instituto de Estudos Superiores da Amazônia - IESAM. Esta cursando sua pós-graduação em Latu Sensu em Engenharia de Sistemas pela Escola Superior Aberta do Brasil - ESAB. Participação em grandes projetos para o Estado como Transparência-Pará. Possui 16 cursos extracurriculares na área de T.I

Page 2: Criando jogos digitais em java

Java 2DO Java 2D é implementado como uma extensão do Abstract

Window Toolkit (AWT).

AWT tornou-se muito poderoso depois da adição de outra extensão: o Swing.

Era delegado a AWT a tarefa de desenhar janelas, botões e caixas de texto ao sistema operacional. Porém isso não era muito portável e limitava severamente a performance do Java em aplicações mais sérias. Então, associaram a AWT uma nova extensão, chamada Swing, que desenharia integralmente todos os componentes de tela. Ao fazer isso, a biblioteca Java 2D ganhou grande importância.)

Page 3: Criando jogos digitais em java

Java 2D• O Swing rapidamente tornou-se o padrão do Java para

todo o tipo de aplicação desktop.

• Uma de suas grandes reclamações sempre foi a performance, o que motivou os desenvolvedores da Sun a investir em otimizações agressivas no Java 2D. Entre elas, está a aceleração de hardware (integrada com OpenGL), possibilidade de trabalhar em modo janela exclusivo (FSEM), otimizações agressivas na biblioteca de manipulação de imagens, entre outras coisas.

Page 4: Criando jogos digitais em java

Java 2D (AWT/Swing)

Page 5: Criando jogos digitais em java

Java 2DDentre as principais capacidades do Java 2D, podemos citar:

• Um modelo uniforme de desenho para dispositivos de vídeo e impressoras

• Um grande número de primitivas geométricas (pontos, linhas, retângulos, arcos e elipses e curvas), e um mecanismo para se desenhar qualquer forma geométrica

• Mecanismos para detectar colisão em texto e imagens

• Modelos de composição (Alpha Composition), que permitem escolher como combinar imagens que se interceptam

• Modelo de cores avançado

• Diretivas para controlar a qualidade do desenho

• Classes para manipulação uniforme dos principais formatos de imagem

Page 6: Criando jogos digitais em java

Java 2D

Espaço de coordenadas

O Java 2D permite o trabalho em dois tipos de sistemas de coordenadas:

As coordenadas do dispositivo: se referem ao sistema do hardware que está sendo trabalhado. Vão alterar de acordo com a resolução de tela, ou o tamanho da folha, por exemplo.

As coordenadas de usuário: São um sistema lógico, usado pelo seu programa. Elas são uniformes e independentes de dispositivo, é o próprio Java 2D que se encarrega da conversão de um sistema para outro.

Page 7: Criando jogos digitais em java

Java 2D• O contexto gráfico• Todo desenho no Java 2D é feito através da classe Graphics2D. Essa classe. que

deriva da classe Graphics, representa o contexto gráfico sobre o qual o desenho será feito.

• public void pintarFantasma(Graphics g) {•    //1. Copiamos o contexto gráfico•    Graphics2D g2d = (Graphics2D) g.create();•  •    //2. Desenhamos o fantasma 80% transparente•    AlphaComposite alpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.8);•    g2d.setComposite(alpha); • g2d.translate(10, 10);      • g2d.rotate(Math.toRadians(50));•    g2d.drawImage(x, y, phantomImage, null);•  •    //3. Descartamos a cópia do contexto gráfico•    g2d.dispose();• }

Page 8: Criando jogos digitais em java

Android & Java2DJava2D Android Descrição

Graphics Canvas Onde tudo é desenhado e manipulado

AffineTransform Matrix serve para fazer conversões de coordenadas, por exemplo. Serve também para fazer rotações, translações e modificações de escala.

BufferedImage Bitmap e Drawable podemos requisitar ao objeto Graphics de qualquer imagem, que realize uma pintura ou escreva texto sobre imagens da mesma forma que fazemos para desenhar os componentes de tela

Page 9: Criando jogos digitais em java

Android & Java2D• Observação sobre o AffineTransform (Matrix): O Java2D só

sabe desenhar uma elipse deitada ou em pé, mas não inclinada. Se você setar corretamente as coordenadas com transformações, o Java2D consegue desenhar a elipse inclinada, por exemplo. Isso também serve para desenhar texto ou qualquer outra figura inclinada, invertida ou com a escala alterada.

Page 10: Criando jogos digitais em java

Perspectiva isométrica ou 2.5D

Page 11: Criando jogos digitais em java

LWJGL - Lightweight Java Game Library

• Lightweight Library se traduz como “Biblioteca leve”• OpenGL (Open Graphics Library)• OpenCL (Open Computing Language)• OpenAL (Biblioteca Áudio Aberto)

LWJGL fornece acesso aos controladores, como Gamepads, volante e Joysticks.Lembrando que LWJGL esta para Java como SDL (Simple DirectMedia Layer) esta para C++.

Assim como C++, o Java usa Bindings(Ligações) para acesso a bibliotecas nativas (Lembrando que Java foi feito em cima de C/C++)

Esta biblioteca esta acima da camada do Java2D.

Page 12: Criando jogos digitais em java

Slick2D• Utiliza internamente LWJGL

• Tornar a transição de Java2D para OpenGL de forma fácil.

• Gerar distribuição via WebStart sem complexidade.

• Ajuda com renderização, som, entrada de colisão e outras coisas.

• A planos de em algum momento trabalharem com 3D.

• Suporte a “Maquinas de Estado”.

• Funciona com Applets, Desktop e tem recentemente uma versão para Android.

Page 13: Criando jogos digitais em java

NiftyGui• É uma biblioteca Java que suporta a construção de interfaces de usuário

interativas, para jogos ou aplicações similares.

• Nifty independe de renderers(Java2D, LWJGL, Slick2D, JME render), pode por exemplo usar o LWJGL para renderização via OpenGL.

• Configuração via XML ou classes Java

• Usado tanto no Slick2D, JmonkeyEngine(3D)

• Da suporte a aventos como ao clicar e tantos outros controles referente a entrada de dados (Teclado e Mouse), da suporte a som e musica.

• Obs.: TWL seria o concorrente do NiftyGUI quando oassunto e o Slick2D(Pois o TWL foi feito especificamente para o Slic2D), ambos TWL e NiftyGUI estão gerando versões para o Android.

Page 14: Criando jogos digitais em java

NiftyGui - Exemplo

Page 15: Criando jogos digitais em java

JMonkeyEngine• JMonkey Engine (jME) é um framework Open Source de alta

performance para desenvolvimento de aplicações Java que utilzem recursos 3D. A primeira versão do framework foi criada por Mark Powell em 2003, enquanto pesquisava sobre o processo renderização utilizado em OpenGL.

• A arquitetura do framework é baseada em grafos de cenas, ou seja, os dados do ambiente estão organizados em uma estrutura de árvore, onde um nodo origem pode ter um conjunto de nodos filhos. Estes nodos filhos, por sua vez, têm uma referência única de seu nodo de origem (também chamado nodo pai). Toda essa estrutura tem o objetivo de tornar o processo de renderização mais ágil.

Page 16: Criando jogos digitais em java

JMonkeyEngine & NetBeans(IDE)

Page 17: Criando jogos digitais em java

RedDwarf (Antigo projeto DarkStar)

DarkStar era solução de middleware (open source) para MMOG escrito em Java pela equipe do Projeto Darkstar na Sun Microsystems.

Zona de sobrecarga, corrupção de dados, e subutilização de servidores.

Tem suporte a um banco de dados proprio (Berkeley DB).

Algumas caracteristicas do projeto: Balanceamento de carga da CPU, Meta-serviços, Armazenamento de dados persistentes usando Berkeley DB, transações, prevenção de duping, canal de comunicação (Channel, TCP e UDP), Estruturas de dados escalaveis, Protocolos plugáveis e Ferramentas administrativas, Task, Managed-Objects.

Page 18: Criando jogos digitais em java

RedDwarf (Antigo projeto DarkStar)

Page 19: Criando jogos digitais em java

Qual base de dados devemos usar?• XML?

• TXT?

• Banco de Dados?

• Banco de Dados Embarcado?

• Objeto Serializado?

• Outros?

Page 20: Criando jogos digitais em java

Engine(s) Java para 3D

Ardor 3D

Page 21: Criando jogos digitais em java

Jogos de Sucesso feitos em JavaWurm OnLine [JWS-2.5d] Wakfu [2.5d]

Page 22: Criando jogos digitais em java

Jogos de Sucesso feitos em JavaRuneScape [3D-Applet]

“O Livro Guiness Mundial dos Recordes reconheceu RuneScape como o MMORPG gratuito mais popular do mundo, pela segunda vez seguida”

Page 23: Criando jogos digitais em java

Jogos de Sucesso feitos em Java

Taikodom [3D]

Page 24: Criando jogos digitais em java

Jogos de Sucesso feitos em Java

MineCraft [3D]

Page 25: Criando jogos digitais em java

Jogos de Sucesso feitos em Java

Angry Birds (Versão em Java): http://celularesmpx.blogspot.com/2011/05/jogo-angry-birds-java.htmlWikia: http://pt.wikipedia.org/wiki/Angry_Birds

Angry Birds [2D]

Page 26: Criando jogos digitais em java

Estrategia de criação de Mapas(Tiles)

Page 27: Criando jogos digitais em java

Interação entre personagens (Conversa)

Page 28: Criando jogos digitais em java

Criando um sistema de Skills

Page 29: Criando jogos digitais em java

Como trabalhar o sistema de Missões

Page 30: Criando jogos digitais em java

Definindo/balanceando atributos do herói

Page 31: Criando jogos digitais em java

Criando Climas

Page 32: Criando jogos digitais em java

Definindo um Sistema de Batalha

Page 33: Criando jogos digitais em java

Conclusão• Todas as linguagens de programação que suporta desenho

trabalha sobre um canvas ou similar(Ex.: Delphi, VB, etc.).

• Java é uma linguagem muito poderosa e pouco explorada na área de Jogos.

• Quando paramos para comparar outras tecnologias de criação de jogos, em especial 2D, notamos que os conceitos são iguais, o eu muda são os facilitadores(IDE, Bibliotecas, etc.), e Java não fica atrás das mais populares, como seria o caso de quem desenvolve para C++.

Page 34: Criando jogos digitais em java

Engine

www.einformacao.com.br

“Transforme a Fraqueza em Força!”