Historique des modifications - Message

Message #7838

Sujet: Système de collisions de type RPG


Type Date Auteur Contenu
Création du message 28-01-2010 14:54:21 Hawk
Bonjour à tous,

Comme vous le savez peut-être (ou pas), je travaille sur un moteur de RPG 3D basé sur Irrlicht. En ce moment, je me pose beaucoup de question quant au moteur de collisions. C'est un moteur qui se veut assez simple, mais je cherche le meilleur moyen de le réaliser.

Concrètement, de quoi doit-il être capable ?
Dans l'idée que j'en ai, il y a deux parties assez distinctes dans ce moteur : les collisions Objet/Objet et les collisions Objet/Terrain.

Pour la gestion des collisions Objet/Objet, il s'agit des collisions 2 à 2 entre objets qui peuvent interagir ou être en mouvement, typiquement, du héros avec un autre personnage, ou de deux personnages entre eux, ou d'un personnage avec une caisse. Ici, une détection de bounding box est largement suffisante, il s'agit juste de savoir si ces deux objets sont à une distance assez petite pour qu'ils puissent interagir.

Pour la gestion du terrain, là encore, ça reste assez simple, je souhaite juste que les personnages mobiles puissent se déplacer sur le sol, qu'ils montent les pentes pas trop raides, et descendent à la hauteur du sol. Ils ne peuvent bien sûr pas passer à travers les bâtiments (de toute façon, un mur est une pente trop raide). Pour la gestion de l'eau, certains objets peuvent flotter dessus, et les autres ne peuvent pas marcher dessus. Par exemple, le héros ne pourra pas traverser une rivière, mais s'il y a une plateforme sur l'eau qui flotte, alors il pourra marcher dessus pour traverser.

Voilà pour la présentation de ce que j'ai en tête. Maintenant mon problème : est-ce que c'est faisable avec Irrlicht seul, ou bien j'aurais besoin d'une bibliothèque externe ?

D'après mon investigation, j'ai déjà quelques éléments de réponses :
  • Irrlicht : Avec un CollisionAnimator, je peux régler le problème de la gestion du terrain de manière simple, mais je ne sais pas si c'est très performant ? De plus, il y a des paramètres qui ne sont pas évidents à régler. Pour ce qui est des collisions Objet/Objet, il n'y a pas de méthode simple comme ça, mais je pense qu'un calcul de distance entre les différents objets peut régler le problème, j'ai déjà un système similaire dans mon moteur qui fonctionne assez bien. Reste le problème des performances, mais avec des solutions de découpage de monde (type octree ou autre), je devrais m'en sortir.
  • Les bibliothèques externes : j'ai regardé un peu Newton et ODE (pas encore PhysX), elles ont l'air bien performantes, mais assez usine à gaz pour ce que je souhaite faire. Du coup, j'hésite à me lancer dedans.


Comme ça fait plusieurs semaines que je pense sur la question, je me suis dis que peut-être je pourrais avoir des retours d'expériences de personnes qui ont déjà fait des moteurs de collisions et qui seraient en mesure de me conseiller.

D'avance merci.

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
145 invités en ligne
membre en ligne: -
RSS Feed