SlideShare une entreprise Scribd logo
1  sur  34
CRIANDO JOGOS DIGITAIS EM JAVA

Autor
Michel Pinheiro Montenegro (michel.montenegro@gmail.com):
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
Java 2D
O 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.)
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.
Java 2D (AWT/Swing)
Java 2D
Dentre 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
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.
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();
• }
Android & Java2D
Java2D            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
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.
Perspectiva isométrica ou 2.5D
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.
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.
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.
NiftyGui - Exemplo
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.
JMonkeyEngine & NetBeans(IDE)
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.
RedDwarf (Antigo projeto DarkStar)
Qual base de dados devemos usar?
• XML?


• TXT?


• Banco de Dados?


• Banco de Dados Embarcado?


• Objeto Serializado?


• Outros?
Engine(s) Java para 3D




         Ardor 3D
Jogos de Sucesso feitos em Java
  Wurm OnLine [JWS-2.5d]   Wakfu [2.5d]
Jogos de Sucesso feitos em Java
RuneScape [3D-Applet]
“O Livro Guiness Mundial dos Recordes reconheceu RuneScape como o
MMORPG gratuito mais popular do mundo, pela segunda vez seguida”
Jogos de Sucesso feitos em Java
Taikodom [3D]
Jogos de Sucesso feitos em Java
MineCraft [3D]
Jogos de Sucesso feitos em Java
             Angry Birds [2D]




Angry Birds (Versão em Java): http://celularesmpx.blogspot.com/2011/05/jogo-angry-birds-
java.html
Wikia: http://pt.wikipedia.org/wiki/Angry_Birds
Estrategia de criação de Mapas(Tiles)
Interação entre personagens (Conversa)
Criando um sistema de Skills
Como trabalhar o sistema de Missões
Definindo/balanceando atributos do herói
Criando Climas
Definindo um Sistema de Batalha
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++.
Engine




    www.einformacao.com.br

“Transforme a Fraqueza em Força!”

Contenu connexe

Tendances

FLTK Summer Course - Part I - First Impact
FLTK Summer Course - Part I - First ImpactFLTK Summer Course - Part I - First Impact
FLTK Summer Course - Part I - First ImpactMichel Alves
 
Introdução a game api do java me
Introdução a game api do java meIntrodução a game api do java me
Introdução a game api do java meErisvaldo Junior
 
Jugday - Java Básico
Jugday - Java BásicoJugday - Java Básico
Jugday - Java BásicoPaloma Costa
 
Java alem das aplicacoes comerciais convencionais
Java alem das aplicacoes comerciais convencionaisJava alem das aplicacoes comerciais convencionais
Java alem das aplicacoes comerciais convencionaisLeonardo Simberg
 
Desenv. jogos em java e Proj. Parallax
Desenv.  jogos em java e Proj. ParallaxDesenv.  jogos em java e Proj. Parallax
Desenv. jogos em java e Proj. ParallaxMichel Montenegro
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaÁlvaro Farias Pinheiro
 
Curso Java Basico
Curso Java BasicoCurso Java Basico
Curso Java BasicoJoel Lobo
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesOziel Moreira Neto
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem JavaUFPA
 
INdT Mobile Labs - Sparta
INdT Mobile Labs - SpartaINdT Mobile Labs - Sparta
INdT Mobile Labs - SpartaHeitor Carlos
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos JavaMarcio Marinho
 
Arquitetura De Ap Is GráFicas Do Java Dtv Lwuit E Dtv Ui
Arquitetura De Ap Is GráFicas Do Java Dtv   Lwuit E Dtv UiArquitetura De Ap Is GráFicas Do Java Dtv   Lwuit E Dtv Ui
Arquitetura De Ap Is GráFicas Do Java Dtv Lwuit E Dtv UiErisvaldo Junior
 
Java programação orientada a objetos
Java   programação orientada a objetosJava   programação orientada a objetos
Java programação orientada a objetosPaulo Carvalho
 

Tendances (19)

FLTK Summer Course - Part I - First Impact
FLTK Summer Course - Part I - First ImpactFLTK Summer Course - Part I - First Impact
FLTK Summer Course - Part I - First Impact
 
Introdução a game api do java me
Introdução a game api do java meIntrodução a game api do java me
Introdução a game api do java me
 
Jugday - Java Básico
Jugday - Java BásicoJugday - Java Básico
Jugday - Java Básico
 
Java alem das aplicacoes comerciais convencionais
Java alem das aplicacoes comerciais convencionaisJava alem das aplicacoes comerciais convencionais
Java alem das aplicacoes comerciais convencionais
 
Desenv. jogos em java e Proj. Parallax
Desenv.  jogos em java e Proj. ParallaxDesenv.  jogos em java e Proj. Parallax
Desenv. jogos em java e Proj. Parallax
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com Java
 
Curso Java Basico
Curso Java BasicoCurso Java Basico
Curso Java Basico
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem Java
 
INdT Mobile Labs - Sparta
INdT Mobile Labs - SpartaINdT Mobile Labs - Sparta
INdT Mobile Labs - Sparta
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Apostila Jogos
Apostila Jogos Apostila Jogos
Apostila Jogos
 
Java modulo 01 - Introdução
Java modulo 01 - IntroduçãoJava modulo 01 - Introdução
Java modulo 01 - Introdução
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
 
Arquitetura De Ap Is GráFicas Do Java Dtv Lwuit E Dtv Ui
Arquitetura De Ap Is GráFicas Do Java Dtv   Lwuit E Dtv UiArquitetura De Ap Is GráFicas Do Java Dtv   Lwuit E Dtv Ui
Arquitetura De Ap Is GráFicas Do Java Dtv Lwuit E Dtv Ui
 
Java20141215 17[1]
Java20141215 17[1]Java20141215 17[1]
Java20141215 17[1]
 
Java programação orientada a objetos
Java   programação orientada a objetosJava   programação orientada a objetos
Java programação orientada a objetos
 
Java e orientação a objetos
Java e orientação a objetosJava e orientação a objetos
Java e orientação a objetos
 
Android Aula 5
Android Aula 5Android Aula 5
Android Aula 5
 

En vedette

Criando jogos com Java ME: Diversão e retorno financeiro!
Criando jogos com Java ME: Diversão e retorno financeiro!Criando jogos com Java ME: Diversão e retorno financeiro!
Criando jogos com Java ME: Diversão e retorno financeiro!Antonio Marin Neto
 
Android ICS Highlights - AndroidRec
Android ICS Highlights - AndroidRecAndroid ICS Highlights - AndroidRec
Android ICS Highlights - AndroidRecAntonio Marin Neto
 
Desenvolvimento de Jogos: Analise da Arquitetura e sua Evolução Social
Desenvolvimento de Jogos: Analise da Arquitetura e sua Evolução SocialDesenvolvimento de Jogos: Analise da Arquitetura e sua Evolução Social
Desenvolvimento de Jogos: Analise da Arquitetura e sua Evolução SocialMichel Montenegro
 
Explorando novas telas com o Google TV
Explorando novas telas com o Google TVExplorando novas telas com o Google TV
Explorando novas telas com o Google TVAntonio Marin Neto
 
Astronomia de Vitrúvio e a datação da sua época - Tese de Marcos Calil
Astronomia de Vitrúvio e a datação da sua época - Tese de Marcos CalilAstronomia de Vitrúvio e a datação da sua época - Tese de Marcos Calil
Astronomia de Vitrúvio e a datação da sua época - Tese de Marcos CalilMarcos Calil
 
Netbeans 6.0: Aplicações Java Desktop
Netbeans 6.0: Aplicações Java DesktopNetbeans 6.0: Aplicações Java Desktop
Netbeans 6.0: Aplicações Java Desktopelliando dias
 
Cooltiva-te :: "A Cor E Seus Efeitos Na Personalidade" por Jorge Ramalho
Cooltiva-te :: "A Cor E Seus Efeitos Na Personalidade" por Jorge RamalhoCooltiva-te :: "A Cor E Seus Efeitos Na Personalidade" por Jorge Ramalho
Cooltiva-te :: "A Cor E Seus Efeitos Na Personalidade" por Jorge RamalhoCooltiva-te
 
Poética do espaço
Poética do espaçoPoética do espaço
Poética do espaçoCooltiva-te
 
Homem vitruviano2
Homem vitruviano2Homem vitruviano2
Homem vitruviano2janloterio
 
A função social do arquiteto
A função social do arquitetoA função social do arquiteto
A função social do arquitetoCarlos Elson Cunha
 
Criando uma Agenda simples com NetBeans
Criando uma Agenda simples com NetBeansCriando uma Agenda simples com NetBeans
Criando uma Agenda simples com NetBeansSerge Rehem
 
Projeto calculadora em_java
Projeto calculadora em_javaProjeto calculadora em_java
Projeto calculadora em_javasamuelthiago
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesRosicleia Frasson
 
HABITAÇÃO DE INTERESSE SOCIAL NO BRASIL E NO MUNDO
HABITAÇÃO DE INTERESSE SOCIAL NO BRASIL E NO MUNDOHABITAÇÃO DE INTERESSE SOCIAL NO BRASIL E NO MUNDO
HABITAÇÃO DE INTERESSE SOCIAL NO BRASIL E NO MUNDOFellipe Lucas
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsLinkedIn
 

En vedette (20)

Criando jogos com Java ME: Diversão e retorno financeiro!
Criando jogos com Java ME: Diversão e retorno financeiro!Criando jogos com Java ME: Diversão e retorno financeiro!
Criando jogos com Java ME: Diversão e retorno financeiro!
 
Android ICS Highlights - AndroidRec
Android ICS Highlights - AndroidRecAndroid ICS Highlights - AndroidRec
Android ICS Highlights - AndroidRec
 
Desenvolvimento de Jogos: Analise da Arquitetura e sua Evolução Social
Desenvolvimento de Jogos: Analise da Arquitetura e sua Evolução SocialDesenvolvimento de Jogos: Analise da Arquitetura e sua Evolução Social
Desenvolvimento de Jogos: Analise da Arquitetura e sua Evolução Social
 
Explorando novas telas com o Google TV
Explorando novas telas com o Google TVExplorando novas telas com o Google TV
Explorando novas telas com o Google TV
 
Astronomia de Vitrúvio e a datação da sua época - Tese de Marcos Calil
Astronomia de Vitrúvio e a datação da sua época - Tese de Marcos CalilAstronomia de Vitrúvio e a datação da sua época - Tese de Marcos Calil
Astronomia de Vitrúvio e a datação da sua época - Tese de Marcos Calil
 
Netbeans 6.0: Aplicações Java Desktop
Netbeans 6.0: Aplicações Java DesktopNetbeans 6.0: Aplicações Java Desktop
Netbeans 6.0: Aplicações Java Desktop
 
Cooltiva-te :: "A Cor E Seus Efeitos Na Personalidade" por Jorge Ramalho
Cooltiva-te :: "A Cor E Seus Efeitos Na Personalidade" por Jorge RamalhoCooltiva-te :: "A Cor E Seus Efeitos Na Personalidade" por Jorge Ramalho
Cooltiva-te :: "A Cor E Seus Efeitos Na Personalidade" por Jorge Ramalho
 
Poética do espaço
Poética do espaçoPoética do espaço
Poética do espaço
 
Gaston bachelard - Seminario
Gaston bachelard - SeminarioGaston bachelard - Seminario
Gaston bachelard - Seminario
 
Homem vitruviano2
Homem vitruviano2Homem vitruviano2
Homem vitruviano2
 
A função social do arquiteto
A função social do arquitetoA função social do arquiteto
A função social do arquiteto
 
Criando uma Agenda simples com NetBeans
Criando uma Agenda simples com NetBeansCriando uma Agenda simples com NetBeans
Criando uma Agenda simples com NetBeans
 
3way curso-formacao-java-web-completo
3way curso-formacao-java-web-completo3way curso-formacao-java-web-completo
3way curso-formacao-java-web-completo
 
Projeto calculadora em_java
Projeto calculadora em_javaProjeto calculadora em_java
Projeto calculadora em_java
 
Aula 2
Aula 2Aula 2
Aula 2
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e Primefaces
 
Forma e função
Forma e funçãoForma e função
Forma e função
 
HABITAÇÃO DE INTERESSE SOCIAL NO BRASIL E NO MUNDO
HABITAÇÃO DE INTERESSE SOCIAL NO BRASIL E NO MUNDOHABITAÇÃO DE INTERESSE SOCIAL NO BRASIL E NO MUNDO
HABITAÇÃO DE INTERESSE SOCIAL NO BRASIL E NO MUNDO
 
Slideshare
SlideshareSlideshare
Slideshare
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving Cars
 

Similaire à CRIANDO JOGOS DIGITAIS COM JAVA

Java 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral DetalhadoJava 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral DetalhadoRegis Magalhães
 
Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Aécio Costa
 
Introdução à Programacao em Processing
Introdução à Programacao em Processing Introdução à Programacao em Processing
Introdução à Programacao em Processing Jorge Cardoso
 
Apresentação java
Apresentação javaApresentação java
Apresentação javamunosai
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo JavaTI Infnet
 
Arquitetura de apis gráficas do java dtv - lwuit e dtv-ui
Arquitetura de apis gráficas do java dtv - lwuit e dtv-uiArquitetura de apis gráficas do java dtv - lwuit e dtv-ui
Arquitetura de apis gráficas do java dtv - lwuit e dtv-uiErisvaldo Junior
 
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...Arquitetura executável: Documentando e automatizando a comunicação da equipe ...
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...WeOp - The Operations Summit
 
Minicurso de TotalCross e Litebase
Minicurso de TotalCross e LitebaseMinicurso de TotalCross e Litebase
Minicurso de TotalCross e LitebaseNécio de Lima Veras
 
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...Opencadd Advanced Technology
 
Apresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoApresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoThiago Marinho
 
Ferramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento ÁgilFerramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento ÁgilInael Rodrigues
 
SEAC: Um Simulador Online para Ensino de Arquitetura de Computadores
SEAC: Um Simulador Online para Ensino de Arquitetura de ComputadoresSEAC: Um Simulador Online para Ensino de Arquitetura de Computadores
SEAC: Um Simulador Online para Ensino de Arquitetura de ComputadoresEduardo de Lucena Falcão
 

Similaire à CRIANDO JOGOS DIGITAIS COM JAVA (20)

JavaME
JavaMEJavaME
JavaME
 
Java 01 Java Visao Geral
Java 01 Java Visao GeralJava 01 Java Visao Geral
Java 01 Java Visao Geral
 
Java 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral DetalhadoJava 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral Detalhado
 
Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!
 
Palestra
PalestraPalestra
Palestra
 
Introdução à Programacao em Processing
Introdução à Programacao em Processing Introdução à Programacao em Processing
Introdução à Programacao em Processing
 
Apresentação java
Apresentação javaApresentação java
Apresentação java
 
JavaME - Aula 1
JavaME - Aula 1JavaME - Aula 1
JavaME - Aula 1
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo Java
 
Arquitetura de apis gráficas do java dtv - lwuit e dtv-ui
Arquitetura de apis gráficas do java dtv - lwuit e dtv-uiArquitetura de apis gráficas do java dtv - lwuit e dtv-ui
Arquitetura de apis gráficas do java dtv - lwuit e dtv-ui
 
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...Arquitetura executável: Documentando e automatizando a comunicação da equipe ...
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...
 
Minicurso de TotalCross e Litebase
Minicurso de TotalCross e LitebaseMinicurso de TotalCross e Litebase
Minicurso de TotalCross e Litebase
 
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...
 
Java -aula_01
Java  -aula_01Java  -aula_01
Java -aula_01
 
Mini aula-java
Mini aula-javaMini aula-java
Mini aula-java
 
Mini aula-java
Mini aula-javaMini aula-java
Mini aula-java
 
JavaME - Aula 2
JavaME - Aula 2JavaME - Aula 2
JavaME - Aula 2
 
Apresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoApresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - Conceito
 
Ferramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento ÁgilFerramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento Ágil
 
SEAC: Um Simulador Online para Ensino de Arquitetura de Computadores
SEAC: Um Simulador Online para Ensino de Arquitetura de ComputadoresSEAC: Um Simulador Online para Ensino de Arquitetura de Computadores
SEAC: Um Simulador Online para Ensino de Arquitetura de Computadores
 

CRIANDO JOGOS DIGITAIS COM JAVA

  • 1. CRIANDO JOGOS DIGITAIS EM JAVA Autor Michel Pinheiro Montenegro (michel.montenegro@gmail.com): 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
  • 2. Java 2D O 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.)
  • 3. 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.
  • 5. Java 2D Dentre 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
  • 6. 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.
  • 7. 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(); • }
  • 8. Android & Java2D Java2D 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
  • 9. 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.
  • 11. 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.
  • 12. 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.
  • 13. 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.
  • 15. 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.
  • 17. 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.
  • 19. Qual base de dados devemos usar? • XML? • TXT? • Banco de Dados? • Banco de Dados Embarcado? • Objeto Serializado? • Outros?
  • 20. Engine(s) Java para 3D Ardor 3D
  • 21. Jogos de Sucesso feitos em Java Wurm OnLine [JWS-2.5d] Wakfu [2.5d]
  • 22. Jogos de Sucesso feitos em Java RuneScape [3D-Applet] “O Livro Guiness Mundial dos Recordes reconheceu RuneScape como o MMORPG gratuito mais popular do mundo, pela segunda vez seguida”
  • 23. Jogos de Sucesso feitos em Java Taikodom [3D]
  • 24. Jogos de Sucesso feitos em Java MineCraft [3D]
  • 25. Jogos de Sucesso feitos em Java Angry Birds [2D] Angry Birds (Versão em Java): http://celularesmpx.blogspot.com/2011/05/jogo-angry-birds- java.html Wikia: http://pt.wikipedia.org/wiki/Angry_Birds
  • 26. Estrategia de criação de Mapas(Tiles)
  • 28. Criando um sistema de Skills
  • 29. Como trabalhar o sistema de Missões
  • 32. Definindo um Sistema de Batalha
  • 33. 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++.
  • 34. Engine www.einformacao.com.br “Transforme a Fraqueza em Força!”