Slick2d - Leçons 0-9

Slick2d, leçon 9 :: Changement de carte

09 mars 2014 09:36 Slick2d - Leçons 0-9 Java, Jeux, Slick2d, Tutorial

Aujourd'hui nous allons voir comment changer de carte, à l'aide des triggers que nous avons vu dans un précédent article. A l'origine j'avais fait ce code sur demande d'un lecteur qui se reconnaîtra, et du coup cela me donne un nouvelle article à écrire.

Préparation

J'ai modifié la dernière version de la carte que nous avions vu dans la leçon sur les triggers, pour ajouter un trou qui nous téléportera dans une carte de désert.

tuto-slick2d-061-change-map

J'ai fais une nouvelle carte de désert, je n'y ai pas apporté beaucoup de soin, je l'avoue. Je vous passe les détails de la création de la carte, nous avons vu cela dans les précédentes leçons. Pour cette carte j'ai utilisé un tileset du projet avalon que j'ai encore trouvé sur OpenGameArt. Au centre de cette carte j'ai dessiner une petite montagne avec un visage. Si on passe devant on retourne sur la carte du départ.

tuto-slick2d-062-retour-map

Je n'ai pas utilisé le même type de trigger que la dernière fois. Cette fois-ci, c'est un change-map identique à un teleport mais avec une carte de destination. On peu presque dire que change-map hérite de teleport. D’ailleurs il réutilisera intégralement le code de la téléportation.

Slick2d, leçon 8 :: Packager l'application

02 mars 2014 09:12 Slick2d - Leçons 0-9 Java, Maven, Slick2d, Tutorial

Devant le nombre commentaire à ce  sujet je me sens obligé de vous donner une astuce pour réussir à distribuer votre jeu sous forme d'une archive qu'il suffira de décompresser. Ici j'utiliserai des taches maven, mais il est tout à fait possible de s'en sortir avec un script ant.

Le problème : les natives et les ressources

Comme je l'ai expliqué dans la première leçon, Slick2D utilise OpenGL via LWJGL. LWJGL est un binding OpenGL en Java, cela signifie que chaque appel à une méthode OpenGL est convertie en un appel à une bibliothèque native, c'est à dire les fichiers *.dll sous windows, *.so sous linux  et *.jnilib sous mac).

Le soucis c'est qu'il faut indiquer à la machine virtuel Java ou se trouve ces natives ! Sous Linux c'est pas un soucis, c'est le système qui gère si LWJGL est installer sur le système. Pour les autres et dans le cas ou LWJGL n'est pas installé, il faut l'indiquer lors du lancement de la JVM à l'aide de l'option -Djava.library.path=dossier-des-natives. Pour cela on pourra se servir par exemple d'un script de lancement (.bat ou .sh) ou d'un autre programme java pour le lancer.

Un autre problème que l'on rencontre est le chargement des ressources, c'est à dire les image, les cartes, la musique, etc... En effet autant parfois slick arrive tout à fait à lire les ressources qui sont contenu dans un jar autant pour certaine ressource comme une carte il ne peu pas.

Packaging de l'application

Idée est donc de faire une archive (zip ou tar.gz) dans laquelle on va embarquer l'intégralité de l'application, les jar, les ressources et les natives et les scripts. L'utilisateur n'aura plus qu'à décompresser l'archive pour exécuter le jeu. L'archive sera organisé comme suit :

Slick2d, leçon 7 :: La Musique

23 février 2014 09:10 Slick2d - Leçons 0-9 Java, Maven, Slick2d, Tutorial

Septième article sur slick. Aujourd'hui l'article sera simple et assez court. Nous allons voir comment ajouter un peu de musique à notre jeux. A ma connaissance Slick2d supporte l'audio au format, wav, mp3 avec une extension et surtout vorbis. Il va de soit que c'est ce dernier que je choisi, plus puissant que le mp3 et libre :]

Préparation

J'ai cherché sur Open Game Art une musique d’ambiance. Je n'ai pas cherché très longtemps, et faut dire qu'il y en a vraiment un paquet. Celle que j'ai trouvé Lost in the Meadows était en flac, alors je l'ai converti en OGG/Vorbis.

Maven

Pour que Slick2D puisse décoder du Vorbis, il faut il adjoindre la lib Jorbis qui est un décodeur Vorbis en pure Java. Ceux n'utilisant pas Maven, trouverons la lib avec le packaging de Slick.

<dependency>
   <groupId>org.jcraft<strong>
   <artifactId>jorbis</artifactId>
   <version>0.0.17</version>
   <scope>runtime</scope>
</dependency>

 Code

Aujourd'hui le code est très cours. En effet il suffit de charger le fichier dans la méthode d'initialisation et de le lire en boucle.

Slick2d, leçon 6 :: Les Triggers

16 février 2014 09:10 Slick2d - Leçons 0-9 Jeux, Slick2d, Tutorial

A cause de mes vacances d'hiver, j'ai pris un peu de retard pour mon 6ieme article. Le code était prêt mais le temps m'as manqué pour le mettre en forme. Aujourd'hui je vous présenterais une de mes solutions pour créer des triggers dans Slick2D sur une carte faite avec Tiled. Pour ce faire j'ajouterai une grotte à notre carte et j'expliquerai comment y entrer ou en sortir.

Préparation

Première chose j'ai ajouté une grotte à notre carte. Je la dessine dans un coin non utilisé de la carte. Bien sur on pourrai utilisé une autre carte mais pour cette exemple ce n'est pas nécessaire. Je complète également le claque logic que nous avons vu dans la leçon précédente.

tuto-slick2d-048-grotte

Un calque vectoriel

Ensuite j'ajoute un calque d'objet que j’appelle trigger de type vectoriel et je dessine dessus à l'aide de l'outil insérer un objet (O) des rectangles qui seront les points d'entrées de ma grotte. Les autre types d'objet vectoriel ne sont pas supporté par slick, cependant le code de slick est simple à corriger si vous le souhaitez .

tuto-slick2d-049-trigger-entree

Slick2d, leçon 5 :: Collision & Avant plan

02 février 2014 09:00 Slick2d - Leçons 0-9 Java, Jeux, Slick2d, Tutorial

Suite de ma série de tutoriels sur Slick2D. Dans l'article précédent nous avons traité la gestion d'une camera qui suivait notre personnage, mais celui ci traversait toujours les murs.

Théorie

Il existe plein de technique pour gérer la collision, aujourd'hui je vous présente une des plus simple à mettre en place. L'idée est de faire une image masque qui indiquerait ou le personnage peu se déplacer et ou il ne peu pas.

Préparation

Il nous faut rééditer notre carte avec l’éditeur Tiled. Je lui ajoute un nouveau tileset de ma propre création. Cela dis ce n’était pas trop dure :]. tuto-slick2d-037-tuile-logic Je crée un nouveau calque que je nomme logic et je barbouille ma carte afin d'obtenir quelque chose de correct. L'idée est de mettre une tuile partout ou le personnage ne peu pas se déplacer.

tuto-slick2d-037-edition-carte

Code :: Collision à la tuile prés