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

Développement 2D, 3D et Jeux Discussion :

Dév jeux en java


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre confirmé Avatar de stouf()
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 89
    Par défaut Dév jeux en java
    Bonjour à tous,

    Je me suis décidé pour le java pour développer un petit tetris dans un premier temps et plus si affinité ^^
    je suis développeur java (plus tot coté gestion)
    ma question est par ou commencer pour faire un ptit jeux en java svp ?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    salut,

    j'aurais tendance à te conseiller de commencer par rechercher quel framework tu comptes utiliser pour la 2D et l'animation.
    Une ou deux pistes (qui sont loin d'être les seules):
    - JavaFX
    - pulpcore que j'aime bien personnellement de par sa légèreté et sa compatibilité avec presque toutes les versions de JVM, mais qui n'est destiné qu'à faire des applets intégrées dans une page web.

  3. #3
    Membre confirmé Avatar de stouf()
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 89
    Par défaut
    merci pour ta réponse, c'est déjà un bon début pour moi tout çà, mais petite question, ce sont tout les deux juste pour l'inerface graphique ou est-ce qu'il gère également les événement clavier ect ?

    Merci

  4. #4
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    En règle générale, ce genre de framework fait les deux à la fois, la notion de périphérique d'entrée utilisateur (clavier, souris) étant en général intimement liée à la notion d'affichage.

    Par exemple, si tu prends une GUI de base, genre Swing, il n'est pas imaginable que cette librairie ne gère pas elle même les événements souris (clic sur les widgets, ...) et claviers (tabulation pour changer le focus, texte dans les textfield, ...).

    Et c'est effectivement le cas également pour les deux frameworks sus-citées.

  5. #5
    Membre confirmé Avatar de stouf()
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 89
    Par défaut
    Un tout grand merci,

    je vais faire encore le fénéant et profiter de ta générosité, tu aurais des link de tuto pour ces deux framework

    Un tout grand merci pour le temps que tu m'as consacré!

  6. #6
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    Citation Envoyé par stouf() Voir le message
    je vais faire encore le fénéant et profiter de ta générosité
    Tu profiteras pas ce coup-ci

    Pour pulcore, le lien que je t'ai donné renvoie vers tout ce dont tu aurais besoin (code source de la librairie, exemples & leur sources, groupe de discussion, wiki, plugin netbeans, ...).

    Pour JavaFX, je n'ai jamais personellement utilisé, mais Google est ton ami.

  7. #7
    Membre confirmé Avatar de stouf()
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 89
    Par défaut
    Citation Envoyé par nouknouk Voir le message
    Tu profiteras pas ce coup-ci
    Zut alors ...
    Un tout grand merci pour ton aide en tout cas

  8. #8
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 69
    Par défaut
    Pour les jeux Java, tu peux aussi y aller à la pelle et au burin, dériver un JPanel et faire tout ce que tu veux dans la méthode "paintComponent()" via des "DrawImage()", des "DrawString()" et des "DrawRect()"...

    Certes, ça impose de se créer son jeu du début à la fin, mais tout est déjà quasi fait, Swing te gère tous les évènements claviers, souris et autre sur ton JPanel, suffit de faire une boucle infinie dans ton Main et de demander au JPanel de se repeindre lui même toutes les x millisecondes.

    Finalement, en Java, via un JPanel, tu en es quasiment au même point, au début, que lorsque tu crées un projet Flash/Actionscript3, et pourtant des jeux Flash, il y en a des tas, et des bons, et ils ont tous commencé comme ça, sans utiliser forcément de bibliothèque additionnelle

  9. #9
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    Citation Envoyé par Obligen Voir le message
    suffit de faire une boucle infinie dans ton Main et de demander au JPanel de se repeindre lui même toutes les x millisecondes
    Je doute fortement que ton conseil se base sur du vécu !

    Si tu l'avais déjà tenté, tu saurais que le simple fait de vouloir repeindre très régulièrement (et pas à peu près régulièrement) est une sinécure, où il faut savoir utiliser des mécanismes d'heuristique et de compensation car la résolution d'un sleep de thread ne descend pas en dessous de la dizaine de milliseconde, ce qui est inutilisable dans le cas d'une animation.

    Si tu y vas à la bourrine { while(1) thread.paint(); thead.sleep(xMsec);}, tu peux être certain que les repaints ne seront pas réguliers, et tu va te retrouver avec des animations on ne peut plus saccadées, sans aucun contrôle sur la fluidité & la justesse temporelle des animations.

    Je ne te parle même pas des techniques plus ou moins sioux pour essayer de régler des dizaines d'autres petits soucis comme celui-là (genre synchroniser le repaint avec le rafraichissement hardware de ton écran pour éviter les soucis de 'vertical sync').

    Bref, "il suffit de" en théorie, mais c'est bien moins simple que ça en pratique. D'où le conseil appuyé de réutiliser une librairie qui aura déjà les mécanismes pour parer à tous ces désagréments chronovores.

  10. #10
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 69
    Par défaut
    Bien sûr, mais on parle d'un petit tétris là, pas de GTA V...
    L'apprentissage sans bibliothèque permet de faire quelque chose de rudimentaire, mais de comprendre ce que l'on fait, et de comprendre aussi ce que font les bibliothèques finalement.

    La justesse temporelle ne se base pas sur la fréquence de rafraichissement de la fenêtre, il suffit de calculer les positions de tes objets en fonction du temps écoulé depuis le dernier "repaint", ça ne mange pas tellement de pain finalement. Mais là encore, est-ce vraiment important quand on commence à programmer des jeux ?

    Très franchement, quand on apprend au début, on commence généralement par du C avec la SDL, et on fout tout dans une boucle infinie dans le main, même la gestion des évènements. C'est à chier certes, mais ca marche, et on comprend ce que l'on fait. Ensuite viennent les réflexions, en cherchant comment cela pourrait mieux fonctionner, etc etc, dans l'ordre.

    Tout dépend si stouf() cherche à apprendre à créer des jeux videos ou juste souhaite créer des jeux rapidement. Le problème avec les biblio toutes faites reste qu'il faut en trouver une à chaque changement de langage de programmation...

  11. #11
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 623
    Par défaut
    Citation Envoyé par nouknouk Voir le message
    Si tu y vas à la bourrine { while(1) thread.paint(); thead.sleep(xMsec);}, tu peux être certain que les repaints ne seront pas réguliers, et tu va te retrouver avec des animations on ne peut plus saccadées, sans aucun contrôle sur la fluidité & la justesse temporelle des animations.
    10ms de délai -> 100 images par secondes... saccadé ?
    j'ai dû louper un épisode, ou alors c'est dû au JPanel ?

    réutiliser une librairie qui aura déjà les mécanismes pour parer à tous ces désagréments
    là dessus je suis d'accord, surtout quand on débute, mieux vaut s'appuyer sur une bonne bibliothèque fiable ayant fait ses preuves
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  12. #12
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    10ms de délai -> 100 images par secondes... saccadé ?
    Non, le véritable problème, c'est : "16msec entre l'image 1 et l'image 2" ; "32msec entre l'image 2 et l'image 3", etc... (*)
    Pour mieux comprendre, je ne peux que conseiller de décortiquer les sources du framewrok pulpcore pour voir comment est géré la gestion 'fine' du temps. C'est assez parlant et commenté en plus.

    Citation Envoyé par Obligen Voir le message
    La justesse temporelle ne se base pas sur la fréquence de rafraichissement de la fenêtre, il suffit de calculer les positions de tes objets en fonction du temps écoulé depuis le dernier "repaint"
    Oui, et tu te rendras vite compte que:
    - le temps écoulé n'est pas forcément retourné à la milliseconde près par java, mais peut avoir une résolution aussi pourrie que le sleep d'un thread.
    - entre le moment ou tu demandes le repaint et le moment où il s'affiche réellement à l'écran, il y a un laps de temps qui s'écoule et qui est loin d'être négligeable.
    Très franchement, quand on apprend au début, on commence généralement par du C avec la SDL, et on fout tout dans une boucle infinie dans le main
    Parce que la SDL c'est quoi si ce n'est pas une librairie ?

    Bref, c'est gentil de vouloir aider, mais attention à penser trop vite que ce qui marche avec un langage x marchera forcément exactement de la même façon avec un langage y. Dans ce genre de cas, il me paraît primordial de mentionner "j'ai pas testé personellement, mais il me semble que ...".

    Je comprends très bien ton point de vue, et la question aurait été la même pour un programme développé en C/C++, je n'aurais qu'abondé dans ton sens. En Java, ce n'est pas tout à fait pareil, et les différences sont suffisamment critiques dans le cadre du développement d'un jeu pour que ton point de vue ne soit plus pertinent.

    (*) Je parle en connaissance de cause: lorsque j'ai voulu développer un petit jeu de billard en ligne (bounceIt), j'ai commencé par une implémentation via Swing. C'est devant "l'ampleur des dégâts" et au vu du temps passé pour résoudre les 'petits' problèmes qui se sont accumulés que j'ai fouiné sur le net pour découvrir pulpcore.

  13. #13
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 69
    Par défaut
    Disons que niveau tests j'essaie justement de reproduire quelque chose d'assez clean niveau "game loop" (voir sujet dédié ), donc je suis un peu borné tant que je n'aurai pas compris que ce n'est pas forcément simple, désolé

    Pour la SDL, ce que je veux dire c'est qu'elle ne fournit que les services d'affichage de base finalement (j'avoue que là, sans biblio, en C, c'est tendu...même user32 est une biblio finalement). Swing est même bien plus avancée que la SDL, mais tout le "coeur" du jeu reste à faire, la boucle de jeu, la gestion du temps, etc...

    En fait, c'est un peu ce qui m'amuse, créer le moteur de base du jeu plutôt que le jeu lui même, alors je ne suis vraiment pas objectif dans les réponses précédentes, j'avoue...

    Reste que je trouve ça très instructif de ne partir de rien (enfin, du minimum du moins), cela permet de comprendre pas mal de choses, tout dépend de ce pourquoi on veut créer un jeu en fait, apprendre ou parvenir à ses fins.


    EDIT : d'ailleurs, j'ai une question : y a t'il une façon de récupérer le temps actuel de façon très précise en Java, genre en interrogeant directement les horloges du proco ? J'ai trouvé System.nanoTime, qui m'a l'air de correspondre assez bien à ça, je vais tester.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 38
    Par défaut
    Si ça te dis, tu peux aussi tenter ta chance avec http://jade.pautrot.com/, c'est une API que j'ai moi même développé, avec deux jeux, des tutoriaux, des docs, etc. Je t'autorise même exceptionnellement à la décompiler si tu veux (comme si je pouvais t'en empêcher ).

    A pluche,

    Alexis.

Discussions similaires

  1. Jeux en JAVA
    Par Msakni dans le forum Java ME
    Réponses: 4
    Dernier message: 04/06/2009, 14h16
  2. Creation de jeux avec java
    Par hkader dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 13/09/2007, 22h55

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