# Applications > Dveloppement 2D, 3D et Jeux > Moteurs de jeux vido >  Librairie pour la gestion de collision 2D ? Et autres questions

## Gorael

Bonjour  tous,  ::): 

Tout d'abord merci  la communaut pour la qualit des articles mis  disposition. Je viens solliciter votre aide car je dbute dans la programmation de jeux vidos, que je ralise sur mon temps libre. Je ne suis cependant pas un dbutant en info puisque sort d'une cole d'ing.  ::): 

Voici la description de mon projet:

*En termes de technos je me base sur du java (BOUH spa bien on me dira, mais bon la flemme -_-).

*Premier objectif purement personnel: crer un petit simulateur 2D pour exprimenter sur les IA, en faisant varier d'une part les implmentations (rseaux de neurones, procds de dcision markoviens, etc ...), mais aussi le contexte (variation des objectifs, milieu multi-agent ou pas, connaissance parfaite du monde ou pas ...).

*Deuxime objectif: crer un framework qui puisse resservir dans la cration de jeux vidos. L'objectif du framework est de structurer la "logique des rgles du jeu" pour n'importe quel type de jeu (STR, platformer, ...). Cet objectif est rempli "au passage" et peut tre amen  devenir Open Source.

Actuellement j'ai implment dans une premire version: 
-la gestion des modes de jeu (temps rel/tour par tour/semi-altern, et le passage dynamique entre ces diffrents modes)
-des "agents" qui peuvent reevoir des "actions" par des contrleurs (joueurs ou IA). 

J'aimerais qu'il inclue (outch le subjonctif) une reprsentation de l'univers de jeu (comprenant entre autre un offscreen), ainsi que la dtection de collisions pour s'assurer que l'univers de jeu est cohrent (2 agents ne peuvent se chevaucher). J'aimerais que la gestion de l'offscreen et des collisions soit compltement spare du moteur de rendu utilis pour l'affichage du jeu  l'cran. 

Cependant implmenter la dtection de collision ne m'intresse pas du tout, pas plus que remettre deux objets  leur place une fois la collision dtecte. J'en viens donc  mon point: Connaissez vous une bonne librairie Open Source qui fasse a ? Si possible avec une bonne communaut derrire afin que mon framework ne soit pas obsolte d'ici 2 ans ...

Question de fond, pensez vous que le projet de framework puisse intresser la communaut ?

Enfin, pour le dveloppement, j'utilise actuellement Slick comme moteur de rendu. Quelle alternative  peut on trouver pour raliser des jeux java en 2D ? J'ai trouv GTGE mais certains de ses choix d'implmentations me semblent trop contraignants. J'ai entraperu Unity2D, mais l'utiliser dans le cadre de mon projet revient  sortir le rouleau-compresseur pour craser une mouche.

Sinon, des conseils en gnral ?

A bientt,
Gorael

----------


## LittleWhite

Bonjour,

Projet bien intressant  ::ccool:: .

Je propose de regarder du cot de Box2D (et comme on est en Java JBox2D) ou encore Bullet (JBullet), mais j'imagine que, dans l'intelligence artificielle, il faut prendre en compte les collisions et non juste les faire respecter.
En Java, pour de le rendu 2D, vous avez LibGDX, qui est assez populaire.

----------


## Gorael

Merci pour la rponse rapide  ::): 

Super, je ne connaissais pas tous ces outils, je vais avoir de quoi faire ! Y a-t-il de grosses diffrences fondamentales entre JBox2D et JBullet ?

Petit apart je n'ai pas l'habitude du vouvoiement sur internet, mais puisque vous me vouvoyez je vais faire de mme.




> j'imagine que, dans l'intelligence artificielle, il faut prendre en compte les collisions et non juste les faire respecter.


Je ne suis pas sr de comprendre ce que vous voulez dire par l. En gnral, dans la recherche en IA on cherche  viter les collisions, dangereuses pour les "percuts" - robots ou humains. Donc  si tout se passe idalement aucun agent ne percute jamais aucun objet en simulation. Tout dpend bien sr du contexte puisque si on modlise un missile, on va au contraire chercher la collision.

La "prise en compte des collisions", pour moi, n'a de sens que dans un jeu vido ou par exemple, une pe qui rentre en collision avec un personnage va retirer X points de vie  celui-ci. Dans la recherche en IA on va simplement s'intresser  s'il y a eu collision ou pas, et si oui, dans quel contexte. Par exemple une collision peut tre tolrable si la vitesse relative des agents qui rentrent en collision est faible, car les dommages potentiels engendrs seront alors minimes. Mais on ne s'intresse pas  modliser lesdits dommages.

J'ai saisi le sens de votre question ?

----------


## LittleWhite

Pour la diffrence des bibliothques, il faut voir du ct de Bullet et Box2D. Je ne connais pas personnellement les diffrences.

Je parlais des collisions entre entits du mme groupe (du mme camp). Un peu comme le groupement des units dans StarCraft 2  ::): 
Aprs, je dois dire, si a marche comme vous le prvoyez, c'est mieux et cela signifiera que j'avais un peu mal saisi  ::): .

----------


## Gorael

En fait c'est moi qui ai du mal  saisir. Je ne comprends pas fondamentalement la diffrence entre faire une collision avec une unit de son camp ou une unit d'un camp adverse. Comme je le disais prcdemment je dbute dans la programmation de jeux donc je passe peut tre  ct de qqchose d'important.

De ce que je sais: le systme de collision de GTGE proposait de ne vrifier que les collisions entre certains groupes. La motivation tait de limiter les calculs. Est ce que c'est de ca dont vous parlez ?

J'ai pris une vido de StarCraft 2 pour essayer de comprendre (

).
A plusieurs moments on voit des ouvriers qui vont chercher des cristaux, il ne semble pas y avoir de collision entre eux.

Je dois faire attention dans mon framework,  laisser la possibilit au dveloppeur de personnaliser la gestion des collisions entre diffrents groupes, c'est ca ?

EDIT: EDIT SUPPRIME

----------


## LittleWhite

Dans Starcraft, les mineurs (drone, sonde et VCS) ont un comportement particulier. Ce sont les seules units capables de se chevaucher entirement. D'ailleurs, dans le premier Starcraft, ce fut une source de bogues/cheat. Mais, il est vrai que vous devrez le grer  un moment (la possibilit de laisser certaines units se chevaucher)  ::P: 
Non, moi, je parlais de a :



Il y a quatre cents zerglings  la fin, et aucun ne se chevauche. Pourtant, nous n'avons pas les classiques effets de queue, que l'on peut voir dans toute IA basique. L, ils arrivent bien  se grouper correctement.

----------


## Gorael

Ah okay je comprend tout de suite mieux, merci  ::): 

Le problme est intressant,  terme a serait trs sympa de le grer !

----------


## LittleWhite

Dans l'intelligence artificielle, y a pas mal d'article (Google Scholar) sur ce sujet  :;):

----------


## Gorael

Auriez vous des rfrences prcises ? Ou  dfaut l'nonc du problme car pour l'instant je tombe soit sur des articles HS, soit sur des articles intressants mais HS aussi  ::mrgreen:: 

Sinon  vue de nez j'aurais emmen tous les agents au point cibl, chacun "poussant" les prdcesseurs qui se rpartiraient en suivant une descente de gradient centr sur la cible.

Mais bon tout dpend de l'nonc du problme et de ce que l'on cherche  optimiser: puissance de calcul, distance du trajet parcouru par les units, temps pour que les units se mettent en place, ...

----------


## LittleWhite

Un des avantages avec ce que les gars de Blizzard ont fait, c'est que c'est stable rapidement.
Bon, je n'ai pas trouv exactement ce que je voulais, mais les mots cls sont : "path finding, swarm, artificial intelligence,  real time strategy"
http://scholar.google.fr/scholar?q=s...r&as_sdt=0%2C5

----------


## tsarevitch

Bonjour,

je peux te proposer OZCollide :
www.tsarevitch.org/ozcollide

C'est une librairie 3D de dtection de collision. Alors tu parles de dtection 2D mais qui peut le plus, peut le moins.
La base de la librairie est base sur des AABB trees. Il te suffit juste de mettre un Z " bidon "  0 et te voil en 2D.
La librairie est extrmement rapide, memory friendly (pour une utilisation sur console par exemple) et possde un large ventail de mthodes/fonctions documents.

A toi de voir.

----------


## Gorael

Bonjour,

merci pour ta rponse, je garde OZCollide dans un petit coin de ma mmoire au chaud. Dans un premier temps je vais nanmoins rester sur Box2D que j'ai dj un peu dcouvert.

J'en profite pour faire un petit point sur l'avance du projet. Avance pas trs rapide mais c'est normal: c'est sur mon temps libre et j'ai environ quinze cent douze autres passions ...

Donc j'ai appris  utiliser libGDX dans les grandes lignes et plus particulirement Box2D. En me promenant au hasard dans les sources de GDX j'ai dcouvert qu'il existe un package qui recoupe <<a peu prs>> ce que j'ai commenc  implmenter. Le package s'appelle scene2D je crois. Je reste nanmoins sur ma solution perso qui est -je trouve- plus sioux. J'en dvoilerai un peu plus lorsque le projet sera en phase d'avancement plus consquente.

Maintenant je rflchis  l'intgration de Box2D  mon projet, et  l'intgration de mon projet  un projet GDX.

A bientt,
Gorael

----------

