Usando JavaFx No Desenvolvimento De Jogos

35
Usando JavaFX no desenvolvimento de jogos Hamilton Lima Abril 2009

Transcript of Usando JavaFx No Desenvolvimento De Jogos

Page 1: Usando JavaFx No Desenvolvimento De Jogos

Usando JavaFX no desenvolvimento de jogosHamilton LimaAbril 2009

Page 2: Usando JavaFx No Desenvolvimento De Jogos

Roteiro

•Introdução ao JavaFX•Programação para Jogos 2D•Desafios enfrentados com JavaFX•Conclusões

Page 3: Usando JavaFx No Desenvolvimento De Jogos

Introdução JavaFX

•Linguagem de Script•Oferece fácil integração com Java•Recursos visuais superiores a Swing•Aposta da SUN no mercado RIA

Page 4: Usando JavaFx No Desenvolvimento De Jogos

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

Page 5: Usando JavaFx No Desenvolvimento De Jogos

Distribuição de Flash players [1]

Page 6: Usando JavaFx No Desenvolvimento De Jogos

Ofertas de emprego em RIAmercado americano [2]

Page 7: Usando JavaFx No Desenvolvimento De Jogos

Ofertas de Java comparado com outras linguagens [3]

Page 8: Usando JavaFx No Desenvolvimento De Jogos

Cenário

•JavaFX tem A comunidade Java por trás

•A adoção é estratégica para competir no mercado RIA

Page 9: Usando JavaFx No Desenvolvimento De Jogos

zzzzz

pelamordeDeus ! Show me the code !!

Page 10: Usando JavaFx No Desenvolvimento De Jogos

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"• }• }• }

Page 11: Usando JavaFx No Desenvolvimento De Jogos

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; }• }• };

Page 12: Usando JavaFx No Desenvolvimento De Jogos

Movendo um objeto na tela• Stage {• title: "Movendo um quadrado pela tela"• width: 320• height: 280• scene: Scene {• content: [• myChar• ]• }• }

Page 13: Usando JavaFx No Desenvolvimento De Jogos

Um jogo mais complexo… [4]

Page 14: Usando JavaFx No Desenvolvimento De Jogos

Falando de Jogos 2D

•Loop principal•Eventos •Reações•Eventos baseados no loop do jogo

Page 15: Usando JavaFx No Desenvolvimento De Jogos

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

Page 16: Usando JavaFx No Desenvolvimento De Jogos

Coisas Legais

Page 17: Usando JavaFx No Desenvolvimento De Jogos

Criação loop principal

Roda indefinidamente com passos de 10 milisegundos

Page 18: Usando JavaFx No Desenvolvimento De Jogos

Criação loop principal

Procura nos elementos De Group que nodes são Updatable e executa método Update()

Page 19: Usando JavaFx No Desenvolvimento De Jogos

Exemplo de update()

Page 20: Usando JavaFx No Desenvolvimento De Jogos

Suporte a SVG•SVG – Scalable Vector Graphics•Pode ser redimensionado sem perder qualidade•Baseada em XML

Page 21: Usando JavaFx No Desenvolvimento De Jogos

Como funciona o suporte a SVG [5]

Page 22: Usando JavaFx No Desenvolvimento De Jogos

Usando o FXZ no código JavaFX

FXDLoader.load() cuidaDe trazer o conteúdo De um arquivo FXZ para A aplicação

Page 23: Usando JavaFx No Desenvolvimento De Jogos

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.

Page 24: Usando JavaFx No Desenvolvimento De Jogos

Suporte a colisãoSomente através de retangulos

Page 25: Usando JavaFx No Desenvolvimento De Jogos

Suporte a colisão

Colidiu com o retângulo Da circunferência

Page 26: Usando JavaFx No Desenvolvimento De Jogos

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] ! =)

Page 27: Usando JavaFx No Desenvolvimento De Jogos

Coisas nem tão legais

Page 28: Usando JavaFx No Desenvolvimento De Jogos

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

Page 29: Usando JavaFx No Desenvolvimento De Jogos

Suporte a áudio alternativa

•Implementação [9] com uso de biblioteca MP3 implementada em Java – Jlayer [8]

Page 30: Usando JavaFx No Desenvolvimento De Jogos

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

Page 31: Usando JavaFx No Desenvolvimento De Jogos

Conclusões▫Criação loop

principal▫Suporte a SVG▫Caching de sprites▫Suporte a colisão

▫Suporte a audio▫Distribuição

Page 32: Usando JavaFx No Desenvolvimento De Jogos

Conclusões

Page 33: Usando JavaFx No Desenvolvimento De Jogos

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

Page 34: Usando JavaFx No Desenvolvimento De Jogos

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/

Page 35: Usando JavaFx No Desenvolvimento De Jogos

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/