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

Physique Discussion :

Difficulté d'implémentation d'un moteur physique


Sujet :

Physique

  1. #1
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Difficulté d'implémentation d'un moteur physique
    Bonjour tout le monde, je suis a l'EPITA et il se trouve que j'ai un jeu a faire pour la fin de l'annee. Je suis charger du moteur physique, je dois le coder en delphi et jusque la je n'ai jamais programmer. Pour la premiere soutenance je dois deplacer un objet d'une case a une autre sur une grille(voir PJ). Pourriez vous m'aider car si j'ai saisi l'idee generale je ne vois pa du tout comment implementer sans affichage.
    Images attachées Images attachées  

  2. #2
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Bonjour tout le monde
    Salut !

    je suis a l'EPITA
    Je suis à l'EFREI, juste à côté (allez, c'est de bonne guerre ^^).


    Je ne comprends pas l'utilité d'un moteur physique pour ce que tu as besoin. Nous avons également un projet de jeu de plateau dans le même style pour janvier prochain en mode console, mais pour m'amuser je vais le faire avec la SFML, et pour bouger les pièces je n'utilise pas de moteur physique, ça me parait un peu "overkill".

    Perso, ce que j'ai fais, c'est juste une représentation 1D du tableau de jeu, avec, par exemple, des la valeur -1 si tu veux une case vide, ou la valeur 1 si tu veux une case avec un objet. Puis ta fonction de dessin itérera à travers ce tableau et dès qu'il rencontrera 1 tu dessineras un objet, ou -1 rien du tout.

    Si tu as besoin de mettre à jour (déplacer un objet d'une case à une autre par exemple), tu mets -1 sur l'ancienne case et 1 sur la nouvelle case, et ça sera fait automatiquement par ta fonction de dessin.

    C'est une solution toute bête, mais si on vous impose un moteur physique, peux-tu m'indiquer l'intérêt (tu as eu des consignes ?) ?

  3. #3
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    slt, lol. En fait, dans notre jeu, on va déplacer un tank et tirer sur des batiments et des unités adverses et on pense faire la map un peu sous forme d'une grille. Là ce que l'on veut c'est initialiser la position de notre tank puis le déplacer sur cette grille car on voit pas trop comment gérer le déplacement de notre tank donc avec une grille c'est plus facile. Pour l'instant on veut juste déplacer un point, mais je ne vois pas comment, lorsque j'aurais implémenter sous delphi, je pourrais vérifier que mon code marche, car en algo je galère et l'implémentation chez moi c'est pas tout à fait çà ^^.

  4. #4
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    j'oubliais, le moteur physique est imposé. Puis de toute façon on va en avoir besoin. Notre jeu se rapprocherait plutôt du genre du "Bit them all".

  5. #5
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    "Bit them all"
    Beat'them all plutôt ?

    Encore une fois je trouve que c'est un peu "trop" d'utiliser un moteur physique pour ce que vous avez faire si effectivement ce sont des déplacements par case, mais si on vous le demande....

  6. #6
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Ah, tu veux vraiment la guerre ^^
    je sais que mon anglais n'est pas terrible mais quand même. Oui c'est ce que je voulais dire mais le jeu ne se limitera pas à des déplacements, il y aura de la gestion de collision et d'autres choses que seul un moteur physique peut prendre en charge.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut
    Encore une fois je trouve que c'est un peu "trop" d'utiliser un moteur physique pour ce que vous avez faire si effectivement ce sont des déplacements par case, mais si on vous le demande....
    Salut, dans "moteur physique" il n'y a aucune notion de complexité. Son moteur physique peut être très simple et adapté au type de jeu visé : une gravité, des velocités, des position et une detection de collision par tile...
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  8. #8
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Tu es en première année à l'EPITA ? Si c'est le cas vous avancez plus vite que nous côté programmation ^^ (pour ceux qui se demanderaient, l'EFREI et l'EPITA sont deux écoles situées sur Villejuif, il y a une certaine "guéguérre amicale" entre les deux :p).

    Concernant ton problème, tu as donc des collisions... Mais concernant les déplacements eux même, si je comprends pas, tu pourras diriger tes tanks un peu comme tu veux sur ta carte avec les flèches ?

    Si c'est le cas je pense que vous devriez vous coder des petits algos de détection. C'est relativement facile à faire, j'avais fait ça il y a deux ans je crois.

    Dans un premier temps, tu peux "englober" tes objets dans une boîte englobante (en 2D, un simple rectangle, avec des coordonnées min et des coordonnées max). Si tu as peu d'éléments à l'écran tu peux te permettre de tester chaque élément avec chaque autre élément à chaque frame, ça ne posera pas de problème de performances.

    En gros, imagine que l'image représentant ton tank est "englobé" par un rectangle, identifiatn par les positions min et max. Par exemple, min_1 = (0.0, -2.0) et max_& = (3.0, 0.0), et un autre tank englobé par un rectangle avec min_2 = (3;0) et max_2 = (5;2).

    A partir de ces coordonnées, tu pourras facilement tester si les deux "boites englobantes" se chevauchent, si c'est le cas, alors IL EST POSSIBLE que tes deux objets se touchent (le rectangle n'est qu'une approximation de la forme exacte de l'objet), et si les boites ne se chevauchent pas, alors tu es sur que tes objets ne se touchent pas.

    Après, tu peux facilement étendre l'algorithme en faisant en sorte que, dès que les deux boites se touchent, faire un test "plus approfondi" (recherche du côté de pixel-perfect collision sur Google).


    Salut, dans "moteur physique" il n'y a aucune notion de complexité. Son moteur physique peut être très simple et adapté au type de jeu visé : une gravité, des velocités, des position et une detection de collision par tile...
    Exact, j'ai encore dit n'importe quoi . Donc oui bien sûr, je parlais évidemment d'utiliser un moteur physique comme ODE ou Newton, et aussi parce que j'étais trompé par sa première explication avec les cases qui d'après moi nécessitait aucunement un moteur physique. Mais effectivement, s'il doit gérer les collisions et ce genre de choses, oui un petit moteur s'impose

  9. #9
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    ouais je suis bien en premiere annee a l'epita, et la petite "gueguerre" n'a rien avoir avec une guerre. Tu etais au courant des rumeurs selon lesquels ionis va racheter ton ecole l'annee prochaine? (la je suis serieux), mais pour l'instant ce ne sont que des rumeurs.
    Pour ton histoire de rectangle, on avait penser englober notre tank dans un cube pour faciliter la gestion des collisions, comme tu disais, tu confirmes ainsi mon hypothese.
    On a notre premiere soutenance pour notre jeu a la fin des vacs, le moteur physique n'est pas obligatoire pour cette soutenance.
    On aimerait quand meme que le cube representant notre tank se deplace, il sera en effet deplacable par les fleches mais c'est en attente de confirmation.
    Le probleme c'est que je n'arrive pas a implementer mes codes en delphi, cependant j'y travaille. J'ai commencer a implementer.
    J'ai defini un tableau 2d de 800*800 cases le tank doit aller des coordonnees (1,1) dans le tableau et se rend aux coordonnees (800,800).
    Mais mon code est tres confu et je ne pense pas qu'il marche. Ce qui m'embete c'est que l'on a pas fait de tp delphi avec les tableaux 2d, donc j'ai essaye de me debrouiller avec des tutos mais tout n'est pas dit. Si tu veux je joindrait mon code a mon prochain message, si tu veux vraiment le voir.

  10. #10
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    salut fifron, on a pas encore decider de tous les aspects de notre moteur physique et il se trouve que mon groupe a disparu aujourd'hui alors que l'on devait decider de ses aspects.
    Mais, en tant que chef de projet j'ai des idees a lui soumettre: il y aura en effet la gestion des vitesses, la gestion des degats (barre de vie, diminuant lorsque collision) et des collision, il n'y aura pas degestion de la deformation du tank (lorsqu'il est abime), apres il y a peut etre des choses a rajouter on a pas encore decider de tous les aspects du jeu donc je ne peut pas detailler precisement le contenu du moteur physique.
    Pour conclure le jeu necessite vraiment un moteur physique.

  11. #11
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    ouais je suis bien en premiere annee a l'epita, et la petite "gueguerre" n'a rien avoir avec une guerre. Tu etais au courant des rumeurs selon lesquels ionis va racheter ton ecole l'annee prochaine? (la je suis serieux)
    Je rigole bien sûr, mais je sias pas chez vous mais chez nous il y a beaucoup de moqueries (amicales, bien sûr ). Par contre j'ai jamais entendu parler d'un rachat, sources ? Cela voudrait dire qu'on serait "affilé" à l'EPITA, l'EPITECH et consort ? J'avoue avoir quelques doutes mais pourquoi pas, moi ça me dérange pas...

    Pour revenir à ton problème, je pense que tu devrais te limiter dans ce que tu souhaites faire, surtout si tu n'as que peu d'expérience en programmation. Commence donc par bien limiter ce que tu souhaites faire, et essaye de penser avant de coder à comment tu pourrais faire pour faire fonctionner ce que tu veux. Liste l'ensemble des fonctions nécessaires (snas les coder) et essaye de voir comment elles peuvent interagir ensemble, ou alors des diagrammes de classe si Delphi est objet (j'avoue ne pas le savoir ).

    Désolé de ne pas pouvoir t'aider plus... Mais effectivement, pour les collisions, les boîtes englobantes me paraissent être un bon début, avec la possibilité d'étendre le système en utilisant le pixel-perfect collision. Si tu as besoin de la gravité, quelques formules physiques élémentaires devraient permettre de t'en sortir...

    Bon courage . C'est chiant les projets pendant les vacances, nous on en a 3-4 aussi ^^.

  12. #12
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Oui en un sens, tu serais affilié a l'EPITA et tout, mais c'est d'après des potes, et les sources d'information sont encore à vérifier. Sinon de mon côté je n'entend pasde moqueries au sujet de l'EFREI, mais bon ce n'est pas impossible que des personnes que je connais pas se moquent. La petite "gueguerre" amicale c'est plutot avec l'EPITECH et ils nous le rende bien, mais moi tout çà sa ne me concerne pas car j'ai un pote là bas.

    Ouais, tu as raison au sujet de moteur physique, on va le simplifier déja on a prévu que lorsque le tank heurte quelque chose, il s'arrête, il n'y a pas d'effet de recul, çà simplifie déjà pas mal les choses.

    J'ai joint mon code source pour les déplacements en PJ, tu pourras peut être me dire ce que tu en pense. PS: c'est sous delphi 2009, si tu l'as pas je te le passerai sous word 2007.
    Fichiers attachés Fichiers attachés

  13. #13
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Tout d'abord je n'ai jamais fait de Delphi, et je trouve ce langage d'une mocheté rare ^^. Donc désolé mais j'ai beaucoup de mal à suivre ton code.

    D'après ce que je comprends, et comme tu l'écris en commentaire à la fin, le tank se déplace tout seul. Tu souhaites y ajouter ensuite une gestion de la souris du clavier ?

  14. #14
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Enfin normalement çà gère automatiquement, mais je sais pas, il y a des erreurs dans mon code et je pense qu'il est incomplet donc si quelqu'un peut m'aider.
    Je compte en effet ajouté une gestion clavier souris.

  15. #15
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Je clos le sujet. En fait ce que je cherchais, un autre membre de ma team l'avait fait mais en raison d'un problème de communication entre membres je n'avais pas été mis au courant. Merci à tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Moteur physique 2D
    Par CaptainChoc dans le forum Physique
    Réponses: 6
    Dernier message: 07/08/2006, 22h47
  2. [FAQ] [3D] Physique, moteur physique
    Par Rafy dans le forum Contribuez
    Réponses: 7
    Dernier message: 04/06/2006, 17h51
  3. [Tuto] [3D] Moteur physique
    Par Rafy dans le forum Contribuez
    Réponses: 7
    Dernier message: 04/06/2006, 13h57
  4. Moteur Physique
    Par Jbx 2.0b dans le forum Physique
    Réponses: 6
    Dernier message: 11/03/2005, 12h29
  5. Moteur physique : comment l'implémenter ?
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 17/12/2003, 12h56

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