Phys2D vs JBox2D

Atualmente estou empolgado com a criação de jogos utilizando JavaFX. Particularmente gostei muito de fazer esse jogo de sinuca. Apanhei MUITO da parte física, mas mesmo assim gostei de fazê-lo.

A alguns dias encontrei a Phys2D (uma engine de física 2D escrita em Java) e comecei a usar. Gostei muito, é MUITO BEM orientada a objetos, facil de usar (apesar da falta de documentação), e tem alta performance. Mas enquando refazia o jogo de sinuca utilizando Phys2D me deparei com  um problema grave da Phys2D!!! Ela não implementa CCD (continuous collision detection) que serve para que um objeto nunca passe atravez de outro não importa a velocidade que ele esteja. Sem o CCD, quando uma bola de sinuca muito rápida bate nas bordas da mesa, ela simplismente escapa da mesa e xau! Adeus bolinha! Tentei algumas configurações para melhorar a detecção de colisão mas não adiantou! Se a bolinha colidir muito rápido, xau!

Então, fui atraz da JBox2D que já tinha visto o nome mas não dei importancia porque já estava utilizando a Phys2D. Primeiro fiquei impressionado com os exemplos do site do JBox2D!!! (os exemplos do Phys2D simplismente não rodaram). Também já tinha lido que a JBox2D era uma simples conversao da Box2D que é implementada em C. E não tinha nada de Orientação a Objeto (o que dificulta na integração com código Java). Fui testar já que a JBox2D implementava o precioso CCD além de ser um pouco mais rápido que o Phys2D. Realmente implementa como pude ver no manual da engine original Box2D (bem completo, só que voltado para programadores C). O problema do JBox2D é que não existe Orientação a Objeto nenhuma ali! É terrivel! Acesso direto às variaveis internas! Apesar da documentação, é complicado (pra um programador Java) criar algo complexo com JBox2D.

Atualmente ainda estou decidindo se fico com a facilidade e simplicidade do Phys2D sem o CCD, ou se enfrento a complexidade do JBox2D com o CCD. Estou inclinado a decidir pelo JBox2D porque dependendo dos jogos que for criar, o CCD pode ser essencial!!! (ou quem sabe incluir CCD no código do Phys2D???).

Ainda vou estudar melhor as possibilidades, e qdo decidir posto aqui! =D

Obs.: recomendo efusivamente que vejam os exemplos do JBox2D!

Update: dei uma olhada no código das 2 engines! São bem complexas! To achando melhor criar classes Wrap para o JBox2D.

6 Responses to “Phys2D vs JBox2D”


  1. 1 Clodoaldo 21/07/2009 às 15:32

    axo q vc vai ter q optar pelo jbox2d pelo menos pro joguinho de sinuca… jogar a bola fora da mesa n ta rolando n. Se fosse de verdade agente botava a bola de volta com a mão… mas no jogo? (hum, sera q eu dei uma ideia pra nosso 2d game designer? hehe)

    abração!

  2. 2 Tomaz Lavieri 23/07/2009 às 21:22

    Com certeza JBox2D … e sua solução de Wraps para esta biblioteca pode vim a ser usada por muitas pessoas, e quem sabe um dia, utilizada pelos próprios autores da API.

  3. 3 Gastón 06/06/2010 às 00:06

    Oi Raphael, como vai? ‘To vendo que o post e um pouco velho, mais gostaria de saber que engine voÇé acabou usando. Estou fazendo um jogo de plataforma com Slick e queria utilizar Phys2d (que tem uma API bem bolada), mais nao ter CDD (que nao sei se vou a utilizar, mais…) e o fato de estar desatualizada me fez duvidar…o que vocé acha? Será melhor utilizar o patrâo Adapter com a JBox2D?

  4. 4 Raphael Marques 06/06/2010 às 08:20

    Tinha decidido usar a JBox2D exatamente por ser mais completa.

    Se eu gastasse tempo na Phys2D e depois precisasse de CCD iria sofrer.

    Minha ideia era fazer uma camada mais simples tipo a Phys2D que utilizasse a JBox2D por baixo dos panos. Ou seja, eu nao acessaria diretamente a JBox2D. Mas não terminei, tava bem complexo.

    Então, eu aconselho ir pra JBox2D porque uma hora ou outra vc vai precisar de um CCD.

    o/

  5. 5 sombriks 01/05/2011 às 17:41

    Vocês deveriam dar uma olhada em como está a versão nova, o testbed está incrível:
    http://code.google.com/p/jbox2d/downloads/detail?name=jbox2d-testbed-2.1.2-alpha.jar&can=2&q=

  6. 6 Gastón 04/05/2011 às 01:51

    @sombriks: Acho ainda melhor a noticia de que o criador de Phys2D fez um wrapper no Jbox2D. Chama-se Fizzy se mal nao me lembro. Parece ser o melhor dos dois mundos! hehe


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s





%d blogueiros gostam disto: