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

Java Discussion :

Conception du mouvement dans un jeu 2D


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2013
    Messages : 13
    Par défaut Conception du mouvement dans un jeu 2D
    Salut à tous,

    Je réfléchis en ce moment à la conception d'un petit jeu de plate-forme 2D type mario bros. Je m'interrogeais sur la mise en place du mouvement. J'ai un objet personnage. Cet objet personnage est composé d'un objet action. C'est ce dernier qui permet le mouvement : goRight(), goLeft() et jump(). Lorsque mon joueur appuie sur une touche de son clavier, je pensais déclencher l'action correspondante dans un nouveau Thread. Ce qui permettrait ainsi de pouvoir aller à doite tout en faisant un saut par exemple (ou une attaque, etc).

    Utiliser les Threads ainsi est-il judicieux, suis-je à côté de la plaque?
    En vous remerciant,
    Noémie.

  2. #2
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    La premiere chose à préciser, c'est quel framework tu utilises (swing, probablement ?).
    Si le but n'est pas de faire un moteur "from scratch" et que tu n'en utilises pas, pourquoi ne pas utiliser un moteur ? Ca permet de simplifier pas mal de choses.
    Bon, concernant, les threads, à priori, ca ne me parait pas etre l'idéal pour ce genre de problématque. A voir quel framework tu utilises...

  3. #3
    Membre averti
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2013
    Messages : 13
    Par défaut
    Merci de ta réponse hwoarang. Pour ne rien te cacher, je débarque sur Java et je ne connais aucun Framework de jeu 2D java. Donc oui, j'étais parti sur du swing. Que suggères-tu comme moyen à mettre en oeuvre?

  4. #4
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Pour pouvoir gérer plusieurs action en même temps, il faut que tu stockes l'ensemble des touches qui sont actives à chaque Frame, et que tu exécutes toutes les opérations associés au moment de la phase de calcul. De cette manière tu pourras avancer/sauter/tirer en même temps sans problème

  5. #5
    Membre averti
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2013
    Messages : 13
    Par défaut
    Est-ce que tu veux dire que je devrais faire une espèce de pile qui contient les actions à réaliser dans l'ordre où elles ont été commanditées?

  6. #6
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    C'est à peu près ça oui. Lorsque qu'une touche est actionnée, plutôt que de réaliser l'action immédiatement, tu stockes cette information dans une liste ( ou autre c'est toi qui décide ), et à chaque Frame tu traites toutes les commandes actives.

    Ce genre de procédé marche très bien sur des petits jeux qui ne demande pas forcement beaucoup de précision dans l'exécution des commandes (c'est pas comme un FPS par exemple où il faut une gestion beaucoup plus fine étant donné que cela peux se jouer à une Frame près pour dire si tu es mort ou pas ).

  7. #7
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Si tu utilises swing, je suppose que tu comptais creer ton jeu à partir d'un JPanel en redefinissant paintComponent.
    Il faut savoir qu'avec swing, les operations de mise à jour graphiques ne sont pas thread safe pour des raisons de performance. Par conséquent, toutes les modifications de composants swing doivent se faire dans le thread de l'EDT (c'est le nom du thread qui s'occupe de l'IHM). C'est également ce thread qui appelle les fonctions des différents listeners de Java (ActionListener, MouseListener, ...).

    Bref, dans ton cas, tu va vouloir agir sur commande (quand l'utilisateur presse une touche) mais aussi par rapport au temps (s'il ne touche rien, tes monstres doivent bouger quand meme). Donc tu es obligé de gérer un thread qui met à jour les positions des monstres, des boules de feu, ... et qui envoie au thread d'affichage les informations qui vont bien (via des variables partagées entre les 2 threads par exemple). Le thread de calcul aura également pour fonction d'activer régulièrement le thread d'affichage pour rafraichir.
    En général, c'est comme ca que fonctionnent les jeux.

    Concernant les frameworks, pour un jeu 2D, il y a par exemple SDL. Pour un jeu 3D, il y a jMonkey (que j'aime bien ).
    Ils ont l'avantage d'utiliser des moyens efficaces de gérer les communications entre thread et de présenter des API plus simples pour gérer les problemes que tu auras inévitablement (création de l'IHM - avant d'etre dans le jeu lui-meme, affichage des messages, gestion du son, gestion du réseau, ...)

  8. #8
    Membre averti
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2013
    Messages : 13
    Par défaut
    Merci, vos réponses m'aident bien

    Je réagis par rapport au framework 2D (le 3D ne m'interressant pas pour le moment) : j'ai lu que Java SDL n'était plus mis à jour depuis des années, il existe toujours une solution viable pour développer sous SDL en java?

    Dans tous les cas, y'a-t-il d'autres frameworks performant pour le 2D (en java toujours).

    Un grand merci à vous.

Discussions similaires

  1. [Conception] Bâtiments dans un jeu de stratégie
    Par Invité dans le forum Modélisation
    Réponses: 0
    Dernier message: 26/04/2011, 14h20
  2. [Conception] Gestion de l'Environnement dans un jeu
    Par Neolander dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 21/03/2008, 12h30
  3. [AS2] dialogue dans un jeu
    Par ooyeah dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 09/11/2005, 16h02
  4. soumettre un formulaire contenu dans un jeu de cadre
    Par nicoulou dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/06/2005, 21h50
  5. probleme mouvement dans un paysage
    Par nonoRedDevils dans le forum OpenGL
    Réponses: 24
    Dernier message: 24/06/2004, 12h12

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