Carregar apresentação
A apresentação está carregando. Por favor, espere
1
Desenvolvendo jogos com LibGDX com LibGDX
Matheus Bodo @matheusbodo
2
LibGDX -Criado por Mario Zechner
-Mais de 50 jogos publicados no Android Market, segundo o site oficial.
3
Utiliza a linguagem Java
-Continua em desenvolvimento
4
Multi-plataforma -Aumenta a produtividade, pois não é necessário fazer deploy no celular toda hora. -Estão trabalhando no suporte para iOS através de IKVM e MonoTouch.
5
Open Source -Vantagens essenciais de ser open source: estudar o código e possibilidade de fazer alterações caso seja necessário. -Boa documentação -Vários exemplos de jogos no repositório oficial
6
Performance Boa performance: -Open GL
-Otimizações usando código nativo -Evita gerar Garbage Collector
7
Fácil de usar Fácil de usar -API intuitiva
-De novo: boa documentação (Wiki, JavaDocs, Forum, Blog, Twitter)
8
Arquitetura do LibGDX -Arquitetura do LibGDX
-Application: cuida do ciclo de vida da aplicação -Files: leitura e escrita em arquivos. Não vai ser coberto na apresentação. -Audio: provê funcionalidades para utilizar sons nos jogos -Input: permite acessar dados de entrada do usuário -Graphics: abstração de gráficos usando OpenGL -Outros módulos, como Box2D.
9
Ciclo de Vida Ciclo de vida de um jogo
-Create: carregar recursos na memória -Render: chamada o maior número de vezes possível (evite alocar objetos aqui) -Pause: salvar o estado do jogo -Dispose: desalocar recursos
10
Game e Screen -Principais classes do módulo Application
Game: implementação default de ApplicationListener Screen: abstração para as várias telas do jogo Importante: render é chamado a maior quantidade de vezes possível, por isso deltaTime é importante para fazer as coisas dependerem do tempo.
11
Gráficos
12
Câmera -Similar à uma câmera filmadora
-Tem o papel de capturar imagens da cena para a tela. -Funções: mover, zoom -Conversão de coordenadas -Na cena, as coordenadas crescem da esquerda para a direita, de baixo para cima.
13
Viewport -Necessário definir o viewport na câmera.
-Viewport: região retangular onde a cena é projetada. Não é necessariamente do mesmo tamano da tela. -A unidade de medida é a mesma utilizada para definir a cena.
14
Câmera PerspectiveCamera OrthographicCamera
-PerspectiveCamera: 3D. A cena é projetada no viewport em relação a um PONTO observador. -OrtographicCamera: 2D. A cena é projetada no viewport em relação a um plano infinito observador. PerspectiveCamera OrthographicCamera
15
Texture -Texture: uma imagem carregada na memória.
-Principal responsável pelo tamanho da aplicação gerada. -Dimensão em potência de 2 -Sugestão: dividir em vários arquivos, mas não ultrapassar 2048 pixels, para tentar otimizar a performance do Open GL. -Dividir os sprites nas texturas baseados nas telas que vão ser usados.
16
SpriteBatch -Classe utilitária utilizada para desenhar sprites na cena. -Acumula comandos de desenho para otimizar o uso do OpenGL. -A posição x,y one a imagem é desenhada no canto bottom-left
17
Imagens -TextureRegion: região retangular de uma textura.
-Sprite: tipo especial de TextureRegion que guarda a posição, tamanho, eixo de origem e rotação -Animation: conjunto de TextureRegions. A TextureRegion que vai ser desenhada depende do tempo do jogo.
18
Textos _BitmapFont: lê informações de fonte dos arquivos .fnt e .png
-TextBounds: calcula o tamanho em pixels do texto nas configurações atuais da fonte. -Posição x,y do texto desenhado é a top-left
19
Audio -Também muito importante -Deixa o jogo muito mais rico
-Pode prover uma experiência de uso muito boa ao jogador. -Formatos suportados: mp3, ogg e wave
20
Music - Music: Ideal para musica de fundo (arquivos de som grandes). Som é carregado de acordo com a necessidade. O arquivo não fica inteiro na memória. -Cuidado com o tamanho dos sons. Pode aumentar significativamente o tamanho da aplicação e causar problemas de memória.
21
Sound -Sound: Ideal para efeitos sonoros (arquivos pequenos). Fica carregado inteiro na memória.
22
Entrada de Dados -Receber a interação do jogador
23
InputProcessor -Interface utilizada para tratar input de dados.
-Outras entradas possíveis: acelerômetro e bússola através de Gdx.input
24
Mouse e Touch touchDown(int x, int y, int pointer, int button)
touchUp(int x, int y, int pointer, int button) touchDragged(int x, int y, int pointer) touchMoved(int x, int y) scrolled(int amount) -Eventos tratados pelo InputProcessor -TouchMoved e Scrolled não são chamados no Android
25
Mouse e Touch touchDown(int x, int y, int pointer, int button)
touchUp(int x, int y, int pointer, int button) touchDragged(int x, int y, int pointer) touchMoved(int x, int y) scrolled(int amount) -Eventos tratados pelo InputProcessor -TouchMoved e Scrolled não são chamados no Android
26
Keyboard keyDown(int keycode) keyUp(int keycode)
keyTyped(char character) -Key typed: chamado várias vezes enquanto a tecla estiver pressionada
27
Exemplo: Bricks
28
Mais informações http://libgdx.badlogicgames.com/
ZECHNER, Mario. Beginning Android Games. Apress, 2011.
29
Dúvidas? bodo.matheus@gmail.com @matheusbodo
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.