
Tutoriels slick 2D
02 March 2014 10:57 Slick2dVous êtes ici à mon sommaire sur mes tutoriels « Slick2D ». Slick2D est une lib de programmation de jeux vidéo en java s'appuyant sur OpenGL via LWJGL. Bien que son auteur l'ai abandonnée, car il ne code plus en Java, je trouve cette lib parfaitement adaptée à l’initiation au développement de jeux vidéo.
Sommaire
- Leçon 1 : Création d’une fenêtre. Qu'est-ce que Slick2D ? Création d'une première application avec une fenêtre vide.
- Leçon 2 : Affichage d'une carte. Comment créer une carte avec Tiled ? Comment l'afficher ?
- Leçon 3 : Animer et Déplacer un Personnage. Qu'est-ce qu'une animation ? Et comment ça marche ?
- Leçon 4 : Une Camera. Deux exemples de camera différente qui suivent le personnage.
- Leçon 5 : Collision & Avant plan. Ne plus traverser les murs ni marcher sur les arbres.
- Leçon 6 : Les Triggers. Déclencher des événements en entrant dans une zone. Exemple d'une grotte et d'un escalier.
- Leçon 7 : La musique. Ajout d'une petite musique de fond.
- Leçon 8 : Distribution. Distribuer l'application avec Maven.
- Leçon 9 : Changement de Carte. Suite des triggers, comment changer de carte.
- Leçon 10 : Séparation en Objets. Refactoring du code pour le séparer en plusieurs classe.
- Leçon 11: Séparation en Objets (Suite). Seconde partie du refactoring.
- Leçon 12 : Contrôle avec un Joystick. Déplacer le joueur à l'aide d'une manette.
- Leçon 13 : Afficher un hud. Afficher des barres de vie.
- Leçon 14 : Déplacement analogique. Se déplacer en diagonale et proportionnellement au joystick.
- Leçon 15 : Les phases de jeux. Passer d'un menu de jeu au jeu en lui même.
- Leçon 16 : Les combats au tour par tour 1/6. Première étape déclencher aléatoirement des combats.
- Leçon 17 : Les combats au tour par tour 2/6. Seconde étape ajouter une mécanique de dégats.
- Leçon 18 : Les combats au tour par tour 3/6. Animer les combats.
- Leçon 19 : Les combats au tour par tour 4/6. Synchronisation animation / dégâts.
- Leçon 20 : Les combats au tour par tour 5/6. Interface avec boutons. Le dernier sur les combat ?
- Leçon 21 : Les combats au tour par tour 6/6. Changement de musique, pause à la fin du combat. Leçon à venir : pause_._
- Leçon à venir : Les entités. Synchronisé les pvs du joueurs sur la carte et les combats.
- Leçon à venir : Pathfinding.
- Leçon à venir : Scripting.
- Leçon à venir : Ramasser / Utiliser un objet ?.
- Leçon à venir : Sauvegarde.
Autre
SLick2D@HumanTalk. Ma présentation de Slick2D que j'ai faite à un HumanTalk à Genève.
SlickUtils. Ma lib d'extension pour Slick2D.
F.A.Q.
Voici une liste des problèmes régulièrement rencontré avec Slick2d par mes lecteurs :
java.lang.UnsupportedOperationException
Dans votre console vous avez une exception du type : java.lang.UnsupportedOperationException, et votre jeux se crash. Ce n'est pas un problème d'IDE contrairement à ce qu'on peu lire sur le net. Mais un probleme de native, vous avez oublié l'option -Djava.library.path=lib/natives. La solution se trouve dans la leçon 1.
Carte : "java.lang.NullPointerException at org.newdawn.slick.tiled.TileSet"
Quand on ajoute une carte le jeux plante des son lancement avec cette trace. Plusieurs personne m'ont contacté à ce sujet. Et a chaque fois le problème venais de la carte en elle même. Slick n'est pas aussi permissif que Tiled avec le fichier TMX.
Pour résoudre ce problème, ouvrez votre fichier tmx avec un éditeur texte, ou même avec votre eclipse et assurez vous qu'il n'y a pas de tileset incomplet au début du fichier, et que les chemins des fichier soit bien relatif par rapport au dossier ou vous mettez votre carte.
Carte : "Failed to parse tilemap at org.newdawn.slick.tiled.TiledMap"
Si vous avez cette erreur quand vous ajouter un calque d'objet, cela viens en fait de votre version de Tiled qui n'enregistre plus la taille de la carte dans ce calque. Vous pouvez au choix, utilisez une version plus ancienne de Tiled, corriger Slick2d, ou éditer votre carte avec un éditeur texte, rechercher cette balise :
<objectgroup name="...">
Et ajouter les attributs width et height comme ceci :
<objectgroup name="..." width="XXX" height="YYY">
Ou XXX et YYY est respectivement la largeur et la hauteur de votre carte en tuile.
Puis-je ouvrir 2 fenêtres slick ?
Non, ce n'est pas possible dans la même JVM, si votre but est de faire un écran titre avec un menu, orientez-vous vers la leçon 15.
Comment réinitialiser une boucle (un state) quand on rentre dedans ?
La réponse se trouve dans la leçon 18.
Avec Slick2D, Je peu faire un jeux pour Android / Navigateur / iOs / TrucBizarre ?
Nativement, c'est a dire sans faire un énorme bricolage, dont je n'ai même pas envie de savoir comment il faut s'y prendre, non, tous simplement non. Slick2d ne permet de faire des jeux que pour x86, Linux / OsX / Windows. En java si vous voulez faire des jeux pour Android / iOs / Navigateur, regarder du coter de LibGDX.
Remerciement
Je remercie mes lecteurs et leurs commentaires qui me font très plaisir ! Continuez à me poser des questions je ferai de mon mieux pour vous aider à chaque fois. N'hésiter pas non plus à me faire des propositions sur les prochains articles.
Je remercie également mes collègues m'apportant parfois leurs aides sur certain point technique qui ne sont pas ma tasse de thé, comme Maven par exemple. Ou simplement pour le fait qu'ils arrivent à me supporter, ce qui est déjà un exploit.
Salut, C'est pour quand la suite des leçon ? ^^
Salut. Tres bonne question. Je suis sur un projet perso qui monopolise tous mon temps libre. Quel lecon voudriez vous avoir en premier ?
Sa serait bien un tuto sur l'ajout de monstre : -]
Merci pour ces premières leçons =D ça aide vachement
Bravo pour ce tutoriel clair et concis, j'attends la suite
Je découvre la bibliothèque Slick2D. Est-il possible de rendre le jeu exécutable et accessible en ligne ?
Sinon, y a-t-il d'autres bibliothèques java plus appropriées et aussi simples ?
Oui il est possible de faire un JWS (java web start). Il n'est pas possible d'en faire une apply web.
Aussi simple non. C'est même pour cela que j'ai choisi de faire les tutoriaux avec cette lib. En revanche il existe libgdx qui est une bonne alternative et permet de faire des applications web et mobile.
Ca serait sympa si tu pouvais sortir "Ajouter des monstres", "Combattre" et "Ramasser un objet" assez rapidement, car j'aurais besoin de savoir comment faire d'ici le mois de Mai. C'est pour mon projet d'informatique pour le bac. Sinon, connais-tu l'adresse d'un site traite de ces sujet?
Mise à part ça, tes tutos sont géniaux, clairs et précis ; continu!
Je publie un article toutes les deux semaines un sur deux sur slick2d. Je ne peu tenir un rythme plus élevé. Je ne sais pas exactement ce que tu veux faire, mais techniquement tu as déjà toutes les clef en main pour faire presque tous.
Je ne connais pas d'autre série d'article, mais tu peu toujours demander de l'aide a ton prof, ou me contacter par email quand tu coinces sur un point.
Bonjour Shionn, super tutos !
Je suis en train d'apprendre Slick2D et Scala. L'objectif est de faire un EV-like en 2D, qui serait compatible avec NAEV mais irait plus loin dans la représentation des systèmes stellaires et la mécanique de déplacement des vaisseaux. Toujours en 2D, nous ne sommes pas prêts pour la 3D ici à Hoshikaze ^-^
Mais pour l'instant, il faut que je me sente bien dans la lib et le langage. Et là, tes tutos sont parfait !
A lire le site et le forum, je pense avoir compris que Slick2D a été reprise par d'autres devs. As-tu des infos sur la pérennité et la solidité de la lib ?
Salut, merci pour ton retour.
Quand l'auteur à arrêté le dev de slick2d, un groupe s'est formé sur ninjacave qui a repris le dev slick2D, celui-ci continue de faire évoluer le développement en corrigeant des bugs, complétant les divers trou, et migrant vers les nouvelles libs.
Aujourd'hui le repo actif est https://bitbucket.org/kevglass/slick
Bonjour Shionn, merci des infos !
Salut,très cher Shionn.
Bref tout ça pour te dire, continue, tu es dans la bonne voie !
Cordialement =)
Salut! Ça fait un bail . Je souhaite savoir quand tu compte publier la suite des tutos. Merci pour ton travail et bonne continuation.
Salut, Je ne sais pas quand arrivera la suite, je n'ai absolument pas te temps de faire ce genre de chose depuis un moment.
[…] - http://www.shionn.org/tutoriels-slick-2d […]
Salut,
tu peux me donner le code de la classe passwordTextField stp ?
Salut, le code est disponible sur le github du projet SlickUtil.
merci beaucoup :)
Re, est-il possible de faire un écran avec une scrollbar ?
Rien n'est impossible. Après si t'on but est de faire un système complet d'interface il est utile d'utilisé une lib d'interface tel que Nifty GUI. Après cela dépend ce ce que tu veux mettre dans ta scrollbar c'est plus ou moins complexe à réaliser.
Cette leçon est-elle toujours en cours de rédaction ?
oui, d’ailleurs la leçon 21 est quasi fini :] Mais un nouveau projet perso me prend beaucoup de temps.
question bdd : properties xml ou sql ? voir 2 ou 3 en meme temps :D
Salut, Cette question est bien vague, et je vais supposé que tu parles de jeux vidéo. Comme je ne sais pas ce que tu souhaites faire je vais supposer :
Voila j'espère avoir été assez complet.
Salut à toi, ô vénérable développeur ! Un grand merci pour ce tutoriel que tu produis. Il est vraiment très explicite et didactique. Tu expliques les choses clairement avec beaucoup de pédagogie. Je ne suis qu'au début (#triggers) et tu donnes vraiment envie de poursuivre ce tutoriel. J'apprécie grandement la qualité de ton travail et j'attend avec impatience le pathfinding (qui, je pense, va être coton XD) Des gros pouces en l'air pour ce que tu produis !!
Merci pour tous ces compliments.
Actuellement je suis sur plusieurs projet perso dont certain très gros. Je pense faire deux article sur le pathfinding. Un premier en dehors de la serie sur slick, c'est à dire juste de l'algo, et le second avec Slick. Mais je te rassure c'est hyper simple :]
Bonjour Shionn,
Est-il possible de rendre une zone du jeu plus sombre ( exemple intérieur d'une maison) Sans passer par tiledmap, je génère ma carte via du code java uniquement
Oui bien sur, c'est qu'une question d'algo. Après cela dépend de l'effet que tu veux donné. tu as un exemple de ce que tu voudrais ?
Bonjour,
J’espère que tu as passé de bonne fête :).
Alors par exemple, si le personnage est sous un arbre, il est deviens plus "sombre" pour avoir l'effet de l'ombre sur lui.
J'ai pensé à un calque "d'ombre" mais je ne suis pas sûr que slick affichera les éléments sous mon claque :/.. ( je n'utilise pas Tilemap)
Merci, j’espère que toi aussi tu passe de bonne fête.
Techniquement tous ce que tu peu faire avec tiled, tu peu le faire sans, Tiled t'apporte juste un éditeur et un format.
Je pense que tu as déjà compris le principe des calques pour afficher l'avant plan et l’arrière plan. Il t suffit d'ajouter un nouveau plan entre l'avant plan (le feuillage de l'arbre) et le plan du joueur. Dans ce plan tu dessine simplement l'ombre de l'arbre un peu comme je propose d'afficher l'ombre du joueur.
Si tu fait un cercle avec une couleur noir et à moitié transparente t'aura l'effet que tu veux.
Merci beaucoup :D pourquoi n'ai-je pas pensé plutôt à me servir comme exemple l'ombre du héros....
Bonjour,
Penses tu continuer les tutos ?
Bonne journée à toi !
Bonjour CuriousMember, Une suite il y en aura une, mais sous quel forme je ne sais pas encore, j'ai de moins en moins de temps avec mes projets annexes. Mais je sais qu'il me reste d'autre point à aborder.
Bonjour, As-tu pensé à une suite du coup ? Je pense ne pas être le seul à être totalement impatient de ton retour dans ces tutos :D Bonne journée !
Bonjour, J'attends aussi la suite avec impatience :) . On a commencé y a deux jours avec deux amis sur un projet en commun et vos tutoriels sont vraiment bien fais et nous attendons la suite avec impatience. Encore merci pour cette énorme travail que vous faites pour nous. Bonne journée.
PS : Est ce que vous connaitriez un moyen d'avoir un workspace java en ligne (que tout le monde puisse voir en temps réel les modifications).
Salut,
Je ne connais rien de tel. Surtout pour ce que tu souhaite faire, c'est à dire du jeux, pour une appli web encore c'est envisageable mais le jeux demande d'avoir accès au ressource de ta machine. Je te conseille cependant de te pencher vers des outil de gestion du code source, tel que GIT, c'est indispensable pour travailler à plusieurs.
Je recherche à faire des radiosbutton sur slick, connaittrais-tu un moyen pour cela ? Ou alors un site qui pourrait m'aider ?
Salut,
Alors j'ai fait joujou avec un lib qui permettais de faire des interface graphique complexe en java sur quasiment toutes les lib qui tourne en OpenGL que cela soit avec JOGL ou LWJGL donc slick. Mais je n'arrive pas a retrouver cette lib. cependant je me souviens que j'avais pas mal de bug assez bloquant et c'est pour cela que je l'avais abandonné et que j'avais fini par faire mon propre textaera. Et si j'avais a faire un radio button ou un checkbox, je ferrai pareil.
Bonjour, Penses tu pouvoir continuer les tutos ? Tu as une idée de quand tu pourras reprendre ? :) Bonne journée à toi !