IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Moteurs de jeux vidéo Discussion :

Librairie pour la gestion de collision 2D ? Et autres questions


Sujet :

Moteurs de jeux vidéo

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Librairie pour la gestion de collision 2D ? Et autres questions
    Bonjour à tous,

    Tout d'abord merci à la communauté pour la qualité des articles mis à disposition. Je viens solliciter votre aide car je débute dans la programmation de jeux vidéos, que je réalise sur mon temps libre. Je ne suis cependant pas un débutant 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: créer un petit simulateur 2D pour expérimenter sur les IA, en faisant varier d'une part les implémentations (réseaux de neurones, procédés de décision markoviens, etc ...), mais aussi le contexte (variation des objectifs, milieu multi-agent ou pas, connaissance parfaite du monde ou pas ...).

    *Deuxième objectif: créer un framework qui puisse resservir dans la création de jeux vidéos. L'objectif du framework est de structurer la "logique des règles 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 implémenté dans une première version:
    -la gestion des modes de jeu (temps réel/tour par tour/semi-alterné, et le passage dynamique entre ces différents modes)
    -des "agents" qui peuvent reçevoir des "actions" par des contrôleurs (joueurs ou IA).

    J'aimerais qu'il inclue (outch le subjonctif) une représentation de l'univers de jeu (comprenant entre autre un offscreen), ainsi que la détection de collisions pour s'assurer que l'univers de jeu est cohérent (2 agents ne peuvent se chevaucher). J'aimerais que la gestion de l'offscreen et des collisions soit complétement séparée du moteur de rendu utilisé pour l'affichage du jeu à l'écran.

    Cependant implémenter la détection de collision ne m'intéresse pas du tout, pas plus que remettre deux objets à leur place une fois la collision détectée. J'en viens donc à mon point: Connaissez vous une bonne librairie Open Source qui fasse ça ? Si possible avec une bonne communauté derrière afin que mon framework ne soit pas obsolète d'ici 2 ans ...

    Question de fond, pensez vous que le projet de framework puisse intéresser la communauté ?

    Enfin, pour le développement, j'utilise actuellement Slick comme moteur de rendu. Quelle alternative peut on trouver pour réaliser des jeux java en 2D ? J'ai trouvé GTGE mais certains de ses choix d'implémentations me semblent trop contraignants. J'ai entraperçu Unity2D, mais l'utiliser dans le cadre de mon projet revient à sortir le rouleau-compresseur pour écraser une mouche.

    Sinon, des conseils en général ?

    A bientôt,
    Gorael

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Projet bien intéressant .

    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.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci pour la réponse rapide

    Super, je ne connaissais pas tous ces outils, je vais avoir de quoi faire ! Y a-t-il de grosses différences 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 même.

    j'imagine que, dans l'intelligence artificielle, il faut prendre en compte les collisions et non juste les faire respecter.
    Je ne suis pas sûr de comprendre ce que vous voulez dire par là. En général, dans la recherche en IA on cherche à éviter les collisions, dangereuses pour les "percutés" - robots ou humains. Donc si tout se passe idéalement aucun agent ne percute jamais aucun objet en simulation. Tout dépend bien sûr du contexte puisque si on modélise 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 vidéo ou par exemple, une épée qui rentre en collision avec un personnage va retirer X points de vie à celui-ci. Dans la recherche en IA on va simplement s'intéresser à s'il y a eu collision ou pas, et si oui, dans quel contexte. Par exemple une collision peut être tolérable si la vitesse relative des agents qui rentrent en collision est faible, car les dommages potentiels engendrés seront alors minimes. Mais on ne s'intéresse pas à modéliser lesdits dommages.

    J'ai saisi le sens de votre question ?

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Pour la différence des bibliothèques, il faut voir du côté de Bullet et Box2D. Je ne connais pas personnellement les différences.

    Je parlais des collisions entre entités du même groupe (du même camp). Un peu comme le groupement des unités dans StarCraft 2
    Après, je dois dire, si ça marche comme vous le prévoyez, c'est mieux et cela signifiera que j'avais un peu mal saisi .
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    En fait c'est moi qui ai du mal à saisir. Je ne comprends pas fondamentalement la différence entre faire une collision avec une unité de son camp ou une unité d'un camp adverse. Comme je le disais précédemment je débute dans la programmation de jeux donc je passe peut être à côté de qqchose d'important.

    De ce que je sais: le système de collision de GTGE proposait de ne vérifier 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 vidéo 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 développeur de personnaliser la gestion des collisions entre différents groupes, c'est ca ?

    EDIT: EDIT SUPPRIME

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Dans Starcraft, les mineurs (drone, sonde et VCS) ont un comportement particulier. Ce sont les seules unités capables de se chevaucher entièrement. D'ailleurs, dans le premier Starcraft, ce fut une source de bogues/cheat. Mais, il est vrai que vous devrez le gérer à un moment (la possibilité de laisser certaines unités se chevaucher)
    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.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Ah okay je comprend tout de suite mieux, merci

    Le problème est intéressant, à terme ça serait très sympa de le gérer !

  8. #8
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Dans l'intelligence artificielle, y a pas mal d'article (Google Scholar) sur ce sujet
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Auriez vous des références précises ? Ou à défaut l'énoncé du problème car pour l'instant je tombe soit sur des articles HS, soit sur des articles intéressants mais HS aussi

    Sinon à vue de nez j'aurais emmené tous les agents au point ciblé, chacun "poussant" les prédécesseurs qui se répartiraient en suivant une descente de gradient centré sur la cible.

    Mais bon tout dépend de l'énoncé du problème et de ce que l'on cherche à optimiser: puissance de calcul, distance du trajet parcouru par les unités, temps pour que les unités se mettent en place, ...

  10. #10
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    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 clés sont : "path finding, swarm, artificial intelligence, real time strategy"
    http://scholar.google.fr/scholar?q=s...r&as_sdt=0%2C5
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  11. #11
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 4
    Points : 4
    Points
    4
    Par défaut OZCollide
    Bonjour,

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

    C'est une librairie 3D de détection de collision. Alors tu parles de détection 2D mais qui peut le plus, peut le moins.
    La base de la librairie est basée sur des AABB trees. Il te suffit juste de mettre un Z " bidon " à 0 et te voilà en 2D.
    La librairie est extrêmement rapide, memory friendly (pour une utilisation sur console par exemple) et possède un large éventail de méthodes/fonctions documentés.

    A toi de voir.

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    merci pour ta réponse, je garde OZCollide dans un petit coin de ma mémoire au chaud. Dans un premier temps je vais néanmoins rester sur Box2D que j'ai déjà un peu découvert.

    J'en profite pour faire un petit point sur l'avancée du projet. Avancée pas très 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 particulièrement Box2D. En me promenant au hasard dans les sources de GDX j'ai découvert qu'il existe un package qui recoupe <<a peu près>> ce que j'ai commencé à implémenter. Le package s'appelle scene2D je crois. Je reste néanmoins sur ma solution perso qui est -je trouve- plus sioux. J'en dévoilerai un peu plus lorsque le projet sera en phase d'avancement plus conséquente.

    Maintenant je réfléchis à l'intégration de Box2D à mon projet, et à l'intégration de mon projet à un projet GDX.

    A bientôt,
    Gorael

Discussions similaires

  1. PC pour jeux, raid 5 ou Raptor et autres questions
    Par Korfandar dans le forum Ordinateurs
    Réponses: 5
    Dernier message: 16/05/2008, 18h11
  2. [FLASH MX2004] Gestion de collisions pour plateformes
    Par sourivore dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 10/05/2006, 13h08
  3. Réponses: 3
    Dernier message: 10/03/2006, 16h41
  4. Gestion des collisions - terrains
    Par Dranor dans le forum DirectX
    Réponses: 1
    Dernier message: 26/06/2003, 18h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo