Bonjour à tous,
Je créer ce poste pour proposé monde aide dans le domaine de développement de jeux vidéos en JAVA avec la librairie LibGDX.
Pour ceux qui ne connaissent pas, LibGdx est une librairie open source, qui permet de développer un jeu sur windows, android, ios et en html5, tout cela en un seul code sources.
Pour ma part, j'utilise cette librairie depuis le début de l’année, j'ai quelques projets, mais aucun jeu réellement finis. Voici par exemple un jeu développer en 48h avec 4 autres personnes, pour une global game jam:
http://globalgamejam.org/2014/games/buchbuch-game
Actuellement, je devellope un jeu pour android de type runner.
Je peux vous aider dans:
- le chargement de ressources.
- création de menu avec scene2D.
- création de map 2D/2.5D avec tiled et box2D.
- création de physique de jeu avec box2D.
- création de lumière avec box2DLight.
- création d'effet de particules.
Et bien plus, n'hésité pas à poser vos question, et surtout à détaillé vôtre problème le plus précisément possible.
Bonne journée à vous !
Enfin Un topic pour les trues de la life
Libgdx nous aide quand même beaucoup dans le enveloppement de jeu vidéo, mais c'est sûr que c'est tout de même plus complexe que Construct 2.
Si vôtre objectif est de créer un jeu de bonne qualité rapidement => Construct 2, game maker, unity...
Si vous aimez développer, que vous êtes prêt a faire en 1h ce que les personne de la premiere catégorie ont fais en 5 minutes, alors => libgdx, sfml, lwjgl...
Ok, j'ai deux questions:
Quelle est l'utilité d'utiliser une scene2D pour faire un menu, au lieu d'utiliser simplement des textures?
Et aussi, même si c'est plus du Java en général que du libGDX: Comment peut-on executer une fonction (dans mon cas qui load un array de bytes compressé, ce qui prend au moins 5 secondes) en parallèle du jeu, que le jeu continue de tourner et reste jouable durant le chargement?
Merci d'avance
J'ai une question aussi. J'ai fait quelques jeu avec et je me demandais si t'avait pas un "pattern" à me proposer pour faire des menus avec libgdx.
Je suis débutant (un an en c++ et quelques moi sur java) donc désoler si les termes que j'emploie sont obscur
hexabeast :
1 - L' origine du référentiel pour le positionnement des image est situer en bas a gauche de l'écran, si je place une image a l'origine elle se situe donc en bas a gauche.
Mais si par exemple je veux récupérer les coordonnée de la souris, l'origine du référentiel ce situe en HAUT a gauche, ce qui veux dire que la souris se situe en (0, 0) lorsqu'elle est en haut a gauche de l'écran. Donc pour tester si ton curseur est situé sur ta texture par exemple, il faut bidouillé les position sur l'axe Y de ton curseur et de ta texture. Pour résoudre simplement ce problème de positionnement, on créer un bouton qui a le même référentiel que t'es input, sur lequel on applique une texture.
Visuellement le résultat est le même, mais se seras bien plus lisible et rapide d'utiliser scene2D, scene2D te permet par exemple de créer rapidement: des case a coché, des curseurs...
2- Pour cela je t'invite à t'orienter sur la notion de "multi thread" en java, tu as pas mal de tutoriels sur internet, je peux pas me permettre de faire un cours de java ici , cependant si tu as un problème après avoir consulté les tutos, n'hésite pas a me contacté par mp, pour évité le HS.
Cezar[JV]:
Voici un tutoriel qui explique comment créer un menu avec libgdx avec un layout, ne sachant pas quel genre de menu tu souhaite ( main menu avec de simple boutons, menu option avec curseur de réglage du son...), je t'invite à apprendre à créer ton propre layout par toi même ici: http://steigert.blogspot.ch/2012/03/4-libgdx-tutorial-tablelayout.html
Bien sure si tu as un problème ou une question SUITE à ce tutoriel n'hésite pas.
Bonne journée et bon courage à vous.
Je me permet de compléter les réponses
"hexabeast Voir le profil de hexabeast
Posté le 12 août 2014 à 00:11:15 Avertir un administrateur
Ok, j'ai deux questions:
Quelle est l'utilité d'utiliser une scene2D pour faire un menu, au lieu d'utiliser simplement des textures?
Et aussi, même si c'est plus du Java en général que du libGDX: Comment peut-on executer une fonction (dans mon cas qui load un array de bytes compressé, ce qui prend au moins 5 secondes) en parallèle du jeu, que le jeu continue de tourner et reste jouable durant le chargement?
Merci d'avance "
1 parce que dans scene2D tu as toute la gestion des différents Label, combobox, etc. T'es pas forcément obligé de passer par un stage pour bénéficier de ce qu'ils appellent scene2D, tu peux utiliser des objets comme des boutons et ensuite les updater et les dessiner à la main.
En plus de ça t'as des objets comme des tableaux pour bien indenter le tout, et des Actions que tu peux appliquer super facilement pour faire des transitions (comme agrandir un bouton quand tu as la souris dessus avec un type d'interpolation prédéfini sans avoir à le faire à la main par exemple). Ça vaut vraiment le coup
Mais après si tu te sers uniquement de boutons simples et rien d'autre, tu peux t'en passer si t'as pas envie de t'y mettre
2- dans libgdx tu as Gdx.app.postRunnable(runnable) qui est très pratique et simple à utiliser pour ça
Merci de completer cette réponse.
En effet scene2D permet bien plus que de créer de simples boutons. je ne connaissais pas cette fonction de postRunnable, en effet elle peut être très utile !
Merci pour ce partage d'informations
D'ailleurs, le mieux pour un thread rémanent, c'est quoi ?
Faire un thread basique avec le runnable, ou bien utiliser le Gdx.app.postRunnable ?
https://github.com/libgdx/libgdx/wiki/Threading
D'après cette page, utiliser Gdx.app.postRunnable serait plus approprié. Tout rendu opengl doit etre dans le thread qui contient notre rendu ( celui de base).
Je n'ai pas une réponse exacte et précise à ta question, je m'informe
Merci beaucoup pour vos réponses!
Pour ce qui est des coordonnées de la souris qui correspondent pas aux coordonnées de l'écran, on peut facilement faire une fonction de quelques lignes qui permet de remédier à ce problème sans que ce soit "sale" dans le code. Pour le reste je pense pas avoir besoin de tous les trucs compliqués d'interface, donc je pense rester dans mon système basique avec de simples textures
Sinon je vais regarder de plus près ce Gdx.app.postRunnable
Merci à vous, j'ai enfin réussi à rendre le chargement de mon jeu fluide
C'est bizarre hexa, tu arrive a faire un aussi bon jeu et aussi avancé et tu n'avais jamais pensé au multi thread ?
Hexa Renseigne toi sur l'AssetManager . Il gère de lui même l'async du chargement et fait des optimisations
Shana: Là ce qui prend du temps c'est pas le chargement du fichier (à peine quelques Mo) mais la décompression et la conversion en une map, donc je sais pas si ça changera énormément d'utiliser l'AssetManager.
Gleuh: Bah à vrai dire j'ai quasiment jamais touché à LibGDX avant de commencer mon Terraria, et j'ai jamais eu besoin de quoi que ce soit d'avancé en Java auparavant
Je sais même pas utiliser correctement un switch car les if me suffisent
hexabeast : si un jour tu souhaite ajouté des musique dans ton jeu, tu va vite t’intéressé à l'asset manager ;).
Un petit sondage pour ma part:
Dans vos projet de jeu avec Libgdx, vous utiliser box2D pour la physique?
Car même s'il semble utile, je le trouve tout simplement chiant, pour récupérer les coordonnée d'une fixture je trouve ça chiant, pour bien respecté le PPM ( bon ça va encore), pour draw un sprite sur une fixture particulière d'un body...
C'est sur qu'une foie tout bien organisé on peut s'amusé, mais je trouve ça une perte de temps pour de petits projet
Ceci est uniquement mon avis personnel.
Deuxième petit sondage: Seriez vous intéressés par des tutoriels vidéo sur Libgdx ? merci de votre réponse
Je trouve que Box2D c'est pas adapté à 99% des projets donc non je l'utilise pas non plus
Même pour un jeu de plateformes j'utiliserais pas ça, c'est trop chiant à gérer pour faire des comportements spécifiques et au final vaut mieux gérer la physique manuellement sur la plupart des jeux.
Sinon sur les tutos vidéos je suis pas intéressé perso parce que je connais bien cette librairie depuis le temps que je l'utilise
Pour l'asset manager, ça doit être bien pour les jeux qui ont des tonnes d'assets lourds, j'utilise jamais ça perso.
Après je vois pas pourquoi il devrait forcément passer par un asset manager pour gérer la musique sachant qu'elle est automatiquement streamée si on utilise la classe Music et que donc le chargement se voit pas du coup
Pareil que Ark
Quant à l'assetmanager ca permet de charger et regrouper tout à un endroit de facon async. ce qui permet de faire autre chose pendant ce temps comme afficher un loading screen . De plus on peut creer nos propres loader pour charger des choses particulières ou pour effectuer du traitement post loaded ...
Et c'est plus propre que d'avoir plusieurs Drawable qui trainent partout
Perso le seul truc que j'ai fait avec mes textures c'est de toutes les regrouper dans la même classe, car étant donné que c'est du pixel art ça load tellement rapidement que y'a pas besoin de le faire à part.
Et sinon y'aurait une différence entre utiliser l'assetmanager pour load en async et load tous les assets dans un thread différent?
si tu essais d'utiliser une ressources qui n'est pas encore chargé dans l'autre thread, ça va poser problème.
Apres c'est sur il suffit de créer un bouléen qui passe vrais quand tous est chargé, et on utilise nos ressource que quand il est vrais.
Mais utiliser plusieurs thread bouffe plus de ressources non?