Usando JavaFX no desenvolvimento de jogos Hamilton Lima Abril 2009
Roteiro <ul><li>Introdução ao JavaFX </li></ul><ul><li>Programação para Jogos 2D </li></ul><ul><li>Desafios enfrentados co...
Introdução JavaFX <ul><li>Linguagem de Script </li></ul><ul><li>Oferece fácil integração com Java </li></ul><ul><li>Recurs...
Competidores do JavaFX <ul><li>Silverlight da Microsoft </li></ul><ul><ul><li>Lançado em 2008 </li></ul></ul><ul><li>Adobe...
Distribuição de Flash players [1]
Ofertas de emprego em RIA mercado americano [2]
Ofertas de Java comparado  com outras linguagens [3]
Cenário <ul><li>JavaFX tem A comunidade Java por trás </li></ul><ul><li>A adoção é estratégica para competir no mercado RI...
zzzzz <ul><li>pelamordeDeus !  Show me the code !! </li></ul>
JavaFX Hello World <ul><li>Stage { </li></ul><ul><li>title: &quot;Application title&quot; </li></ul><ul><li>width: 250 </l...
Movendo um objeto na tela <ul><li>var myChar :Rectangle = Rectangle { </li></ul><ul><li>x: 20, </li></ul><ul><li>y: 20 </l...
Movendo um objeto na tela <ul><li>Stage { </li></ul><ul><li>title: &quot;Movendo um quadrado pela tela&quot; </li></ul><ul...
Um jogo mais complexo… [4]
Falando de Jogos 2D <ul><li>Loop principal </li></ul><ul><li>Eventos  </li></ul><ul><li>Reações </li></ul><ul><li>Eventos ...
Desafios de jogos em JavaFX <ul><li>Coisas legais </li></ul><ul><ul><li>Criação loop principal </li></ul></ul><ul><ul><li>...
Coisas Legais
Criação loop principal Roda indefinidamente  com passos de  10 milisegundos
Criação loop principal Procura nos elementos  De Group que nodes são  Updatable e  executa método  Update()
Exemplo de update()
Suporte a SVG <ul><li>SVG – Scalable Vector Graphics </li></ul><ul><li>Pode ser redimensionado sem perder qualidade </li><...
Como funciona o suporte a SVG [5]
Usando o FXZ no código JavaFX FXDLoader.load() cuida De trazer o conteúdo  De um arquivo FXZ para  A aplicação
Caching de sprites  Um Pool de objetos como  Outro qualquer, com a  Diferença de somente  Fazemos caching da criação Do ob...
Suporte a colisão Somente através  de retangulos
Suporte a colisão Colidiu com o retângulo  Da circunferência
Alternativa para a limitação da colisão <ul><li>Usar uma boudingbox menor que o elemento desenhado para calcular a colisão...
Coisas nem tão legais
Suporte a áudio <ul><li>JavaFX tem embutido a engine de audio e video da On2 [7] </li></ul><ul><li>Somente suporta uma com...
Suporte a áudio alternativa <ul><li>Implementação [9] com uso de biblioteca MP3 implementada em Java – Jlayer [8] </li></ul>
Distribuição do resultado final <ul><li>Applet  </li></ul><ul><ul><li>Não possui progressbar, talvez uma solução como a us...
Conclusões <ul><ul><li>Criação loop principal </li></ul></ul><ul><ul><li>Suporte a SVG </li></ul></ul><ul><ul><li>Caching ...
Conclusões
Como me achar ? <ul><li>Procure debaixo da cama </li></ul><ul><li>Comente no meu blog  www.athanazio.com </li></ul><ul><li...
Referências <ul><li>[1] Flash Player penetration ,  http://www.adobe.com/products/player_census/flashplayer/ </li></ul><ul...
Referências <ul><li>[6]  How to create a RPG like game,  </li></ul><ul><li>http://silveiraneto.net/2008/12/08/javafx-how-t...
Próximos SlideShares
Carregando em…5
×

Usando JavaFx No Desenvolvimento De Jogos

2.258 visualizações

Publicada em

Publicada em: Tecnologia, Diversão e humor
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
2.258
No SlideShare
0
A partir de incorporações
0
Número de incorporações
11
Ações
Compartilhamentos
0
Downloads
46
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Usando JavaFx No Desenvolvimento De Jogos

  1. 1. Usando JavaFX no desenvolvimento de jogos Hamilton Lima Abril 2009
  2. 2. Roteiro <ul><li>Introdução ao JavaFX </li></ul><ul><li>Programação para Jogos 2D </li></ul><ul><li>Desafios enfrentados com JavaFX </li></ul><ul><li>Conclusões </li></ul>
  3. 3. Introdução JavaFX <ul><li>Linguagem de Script </li></ul><ul><li>Oferece fácil integração com Java </li></ul><ul><li>Recursos visuais superiores a Swing </li></ul><ul><li>Aposta da SUN no mercado RIA </li></ul>
  4. 4. Competidores do JavaFX <ul><li>Silverlight da Microsoft </li></ul><ul><ul><li>Lançado em 2008 </li></ul></ul><ul><li>Adobe Flash / Flex / Air </li></ul><ul><ul><li>Flash desde 1996, Flex em 2005 </li></ul></ul><ul><li>JavaFX lançado no final de 2008 </li></ul>
  5. 5. Distribuição de Flash players [1]
  6. 6. Ofertas de emprego em RIA mercado americano [2]
  7. 7. Ofertas de Java comparado com outras linguagens [3]
  8. 8. Cenário <ul><li>JavaFX tem A comunidade Java por trás </li></ul><ul><li>A adoção é estratégica para competir no mercado RIA </li></ul>
  9. 9. zzzzz <ul><li>pelamordeDeus ! Show me the code !! </li></ul>
  10. 10. JavaFX Hello World <ul><li>Stage { </li></ul><ul><li>title: &quot;Application title&quot; </li></ul><ul><li>width: 250 </li></ul><ul><li>height: 80 </li></ul><ul><li>scene: Scene { </li></ul><ul><li>content: Text { </li></ul><ul><li>font : Font { </li></ul><ul><li>size : 16 </li></ul><ul><li>} </li></ul><ul><li>x: 10, y: 30 </li></ul><ul><li>content: &quot;Hello World&quot; </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  11. 11. Movendo um objeto na tela <ul><li>var myChar :Rectangle = Rectangle { </li></ul><ul><li>x: 20, </li></ul><ul><li>y: 20 </li></ul><ul><li>width: 60, </li></ul><ul><li>height: 60 </li></ul><ul><li>fill: Color.RED </li></ul><ul><li>onKeyPressed: function(e: KeyEvent){ </li></ul><ul><li>if( e.code == KeyCode.VK_LEFT ){ myChar.x -= 3; } </li></ul><ul><li>if( e.code == KeyCode.VK_RIGHT ){ myChar.x += 3; } </li></ul><ul><li>if( e.code == KeyCode.VK_UP ){ myChar.y -= 3; } </li></ul><ul><li>if( e.code == KeyCode.VK_DOWN ){ myChar.y += 3; } </li></ul><ul><li>} </li></ul><ul><li>}; </li></ul>
  12. 12. Movendo um objeto na tela <ul><li>Stage { </li></ul><ul><li>title: &quot;Movendo um quadrado pela tela&quot; </li></ul><ul><li>width: 320 </li></ul><ul><li>height: 280 </li></ul><ul><li>scene: Scene { </li></ul><ul><li>content: [ </li></ul><ul><li>myChar </li></ul><ul><li>] </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  13. 13. Um jogo mais complexo… [4]
  14. 14. Falando de Jogos 2D <ul><li>Loop principal </li></ul><ul><li>Eventos </li></ul><ul><li>Reações </li></ul><ul><li>Eventos baseados no loop do jogo </li></ul>
  15. 15. Desafios de jogos em JavaFX <ul><li>Coisas legais </li></ul><ul><ul><li>Criação loop principal </li></ul></ul><ul><ul><li>Suporte a SVG </li></ul></ul><ul><ul><li>Caching de sprites </li></ul></ul><ul><ul><li>Suporte a colisão </li></ul></ul><ul><li>Coisas nem tão legais </li></ul><ul><ul><li>Suporte a audio </li></ul></ul><ul><ul><li>Distribuição </li></ul></ul>
  16. 16. Coisas Legais
  17. 17. Criação loop principal Roda indefinidamente com passos de 10 milisegundos
  18. 18. Criação loop principal Procura nos elementos De Group que nodes são Updatable e executa método Update()
  19. 19. Exemplo de update()
  20. 20. Suporte a SVG <ul><li>SVG – Scalable Vector Graphics </li></ul><ul><li>Pode ser redimensionado sem perder qualidade </li></ul><ul><li>Baseada em XML </li></ul>
  21. 21. Como funciona o suporte a SVG [5]
  22. 22. Usando o FXZ no código JavaFX FXDLoader.load() cuida De trazer o conteúdo De um arquivo FXZ para A aplicação
  23. 23. Caching de sprites Um Pool de objetos como Outro qualquer, com a Diferença de somente Fazemos caching da criação Do objeto pois a cada Solicitação fazemos uma cópia do objeto.
  24. 24. Suporte a colisão Somente através de retangulos
  25. 25. Suporte a colisão Colidiu com o retângulo Da circunferência
  26. 26. Alternativa para a limitação da colisão <ul><li>Usar uma boudingbox menor que o elemento desenhado para calcular a colisão. </li></ul><ul><li>Valeu Silveira Neto [6] ! =) </li></ul>
  27. 27. Coisas nem tão legais
  28. 28. Suporte a áudio <ul><li>JavaFX tem embutido a engine de audio e video da On2 [7] </li></ul><ul><li>Somente suporta uma combinação mágica de MP3 </li></ul><ul><ul><li>48000Hz compactada com 96bits </li></ul></ul><ul><li>Ticket de bug aberto </li></ul>
  29. 29. Suporte a áudio alternativa <ul><li>Implementação [9] com uso de biblioteca MP3 implementada em Java – Jlayer [8] </li></ul>
  30. 30. Distribuição do resultado final <ul><li>Applet </li></ul><ul><ul><li>Não possui progressbar, talvez uma solução como a usada no PulpCore [10], de criar um Applet loader. </li></ul></ul><ul><li>Webstart </li></ul><ul><ul><li>Interface com usuário em inglês </li></ul></ul><ul><ul><li>JNLP é baixado precisando o usuário mandar executar </li></ul></ul><ul><ul><li>JavaFX RunTime SOMENTE online, não pode fazer download com o Jogo </li></ul></ul>
  31. 31. Conclusões <ul><ul><li>Criação loop principal </li></ul></ul><ul><ul><li>Suporte a SVG </li></ul></ul><ul><ul><li>Caching de sprites </li></ul></ul><ul><ul><li>Suporte a colisão </li></ul></ul><ul><ul><li>Suporte a audio </li></ul></ul><ul><ul><li>Distribuição </li></ul></ul>
  32. 32. Conclusões
  33. 33. Como me achar ? <ul><li>Procure debaixo da cama </li></ul><ul><li>Comente no meu blog www.athanazio.com </li></ul><ul><li>Fale com meu secretário, o Sr. Wilson </li></ul><ul><li>Grite meu nome bem alto debaixo de uma amendoeira no Cachambi </li></ul>
  34. 34. Referências <ul><li>[1] Flash Player penetration , http://www.adobe.com/products/player_census/flashplayer/ </li></ul><ul><li>[2] Job offers in RIA, http://www.indeed.com/jobtrends?q=JavaFX,+silverlight,+adobe+flex </li></ul><ul><li>[3] Job offers Java against JavaScript, C#, VbScript, Flash, http://www.indeed.com/jobtrends?q=Java,+javascript,+c%23,+vbscript,+flash </li></ul><ul><li>[4] código fonte dos cabeçudinhos, http://svn.vacavitoria.com/cabecudinhos_1/ </li></ul><ul><li>[5] processo de criação de interface, http://www.athanazio.com/2009/03/10/javafx-processo-de-criacao-de-interface/ </li></ul>
  35. 35. Referências <ul><li>[6] How to create a RPG like game, </li></ul><ul><li>http://silveiraneto.net/2008/12/08/javafx-how-to-create-a-rpg-like-game/ </li></ul><ul><li>[7] On2 technologies, http://www.on2.com/ </li></ul><ul><li>[8] Jlayer – pure Java mp3 library, http://www.javazoom.net/javalayer/javalayer.html </li></ul><ul><li>[9] Implementação de suporte a MP3 com Jlayer, http://svn.vacavitoria.com/cabecudinhos_1/mp3AsMediaPlayer/ </li></ul><ul><li>[10] PulpCore biblioteca para jogos 2D em Applet, http://www.interactivepulp.com/pulpcore/ </li></ul>

×