Tutoriels slick 2D

02 March 2014 10:57 Slick2d Slick2d, Tutorial

Vous ê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

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.

par Shionn, dernière modification le 05 July 2017 13:02
34 réflexions au sujet de « Tutoriels slick 2D »
  • Dumbo 11 April 2014 10:49

    Salut, C'est pour quand la suite des leçon ? ^^

  • Shionn 13 April 2014 07:24

    Salut. Tres bonne question. Je suis sur un projet perso qui monopolise tous mon temps libre. Quel lecon voudriez vous avoir en premier ?

  • NoNoLaNd 16 April 2014 13:43

    Sa serait bien un tuto sur l'ajout de monstre : -]

  • Paladice 20 May 2014 11:11

    Merci pour ces premières leçons =D ça aide vachement

  • poncho 15 June 2014 14:29

    Bravo pour ce tutoriel clair et concis, j'attends la suite

  • phil 01 September 2014 10:03

    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 ?

  • Shionn 01 September 2014 14:31

    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.

  • Darkytzal 31 January 2015 23:38

    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!

  • Shionn 02 February 2015 13:17

    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.

  • Mutos 15 September 2015 05:09

    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 ?

  • Shionn 15 September 2015 14:51

    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

  • Mutos 16 September 2015 05:07

    Bonjour Shionn, merci des infos !

  • Reghay 27 September 2015 04:50

    Salut,très cher Shionn.

        En tant que développeur java depuis maintenant environ 3 ans, je n'avez jamais penser à me pencher vers la programmation pour des jeux, j'avoue que cette idée ne m'aie jamais venu à la tête. Pourquoi? Qui sais. Et c'est là que moi, jeune informaticien dépourvu de la communauté, tomba sur ce merveilleux site qui me ramena à la vie, et me donna pleins d'idées ! Eh bien que dire sur ce site, juste magnifique, éblouissant !
    Tes rédactions sont juste fabuleuses... A part quelques fautes d'orthographe pas trop gênante je trouve que tes articles sont parfaits !
    

    Bref tout ça pour te dire, continue, tu es dans la bonne voie !

    Cordialement =)

  • ninokiri 20 January 2016 03:49

    Salut! Ça fait un bail . Je souhaite savoir quand tu compte publier la suite des tutos. Merci pour ton travail et bonne continuation.

  • Shionn 23 January 2016 11:24

    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 […]

  • Ultraime 26 April 2016 18:24

    Salut,

    tu peux me donner le code de la classe passwordTextField stp ?

  • Shionn 26 April 2016 20:59

    Salut, le code est disponible sur le github du projet SlickUtil.

  • Ultraime 27 April 2016 17:58

    merci beaucoup :)

  • Ultraime 01 May 2016 18:06

    Re, est-il possible de faire un écran avec une scrollbar ?

  • Shionn 23 May 2016 14:44

    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.

  • Lokposs 31 August 2016 15:18

    Cette leçon est-elle toujours en cours de rédaction ?

  • Shionn 31 August 2016 15:24

    oui, d’ailleurs la leçon 21 est quasi fini :] Mais un nouveau projet perso me prend beaucoup de temps.

  • blackallsun 03 September 2016 18:36

    question bdd : properties xml ou sql ? voir 2 ou 3 en meme temps :D

  • Shionn 06 September 2016 05:16

    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 :

    • Si ta problématique est de sauvegarder des paramètres dans le genre configuration ben les properties c'est très bien.
    • Si ton besoin c'est une ou plusieurs source qui contient les données du jeux et donc des chose statique, un xml ou un JSON c'est très bien.
    • Si tu veux juste faire une sauvegarde de la partie alors la sérialisation Java dans un fichier est suffisante, mais peu évolutive dans le temps. JSON/XML est mieux pour ce point précis. Dans les deux cas il faut ajouter un système de clef avec salt pour éviter qu'on modifie la sauvegarde à la main.
    • Si tu souhaite faire un monde persistent, alors non SQL n'est pas adapté, c'est lent et trop contraignant, un système de BDD type NotSql dans le genre MongoDB est bien plus performante et souple. Un temps de transaction en SQL tourne en moyenne autour des 100ms et c'est bien trop lent pour du jeux vidéo. Même en asynchrone cela rend parfois l’expérience de jeux très désagréable.

    Voila j'espère avoir été assez complet.

  • Impa 07 November 2016 21:55

    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 !!

  • Shionn 08 November 2016 11:00

    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 :]

  • Ultraime 22 December 2016 14:28

    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

  • Shionn 22 December 2016 14:32

    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 ?

  • Ultraime 27 December 2016 16:52

    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)

  • Shionn 27 December 2016 16:58

    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.

  • Ultraime 28 December 2016 11:57

    Merci beaucoup :D pourquoi n'ai-je pas pensé plutôt à me servir comme exemple l'ombre du héros....

  • CuriousMember 01 April 2017 23:44

    Bonjour,

    Penses tu continuer les tutos ?

    Bonne journée à toi !

  • Shionn 06 April 2017 06:54

    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.

Laissez un commentaire

Vous pouvez utilisez du markdown pour la mise en forme

Votre adresse de messagerie ne sera pas publiée.

Temporairement, pour lutter contre les bots, il n'est pas permis de mettre http:// dans le commentaire.