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