Maven

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

02 March 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 February 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 1 :: Création d'une fenêtre

15 December 2013 13:01 Slick2d - Leçons 0-9 Java, Jeux, Maven, Slick2d, Tutorial

Je vous propose une série d'article sur l'utilisation d'une bibliothèque Java de jeu que j'adore mais qui semble malheureusement abandonné par son auteur et la communauté. Je pense cependant qu'elle est parfaite pour l’initiation au développement du jeux sous java. De plus comme je l'ai présenté à HumanTalk, c'est le moment idéal pour moi et faire ces tutoriels.

Pour le premier tutoriel, on va faire simple, un peu d'introduction au jeux et afficher une fenêtre. C'est déjà pas mal.

Qu'est-ce qu'un jeux ?

Une boucle infini, et oui c'est comme cela depuis le premier jeux vidéo à aujourd'hui. Certes la boucle est de plus en plus complexe, mais cela reste toujours une boucle infinie comme suit à peu de chose prêt :

  1. Initialisation
  2. Affichage
  3. Lecture des entrées (clavier/souris/manette/réseau)
  4. Mise à jour des éléments
  5. Si ce n'est pas fini : retourner au 2. sinon terminer le programme.

Voila, c'est tous. Seulement vous comprenez bien que si on rentre dans les détails, cela se complique, faut initialiser tous le bousin, la carte graphique, la lecture de la souris, la carte son, tous ça. Et franchement c'est pas facile. Slick2d est la pour nous aider. Slick2d ne fait pas tous mais en fait déjà beaucoup.

Qu'est ce que Slick2d ?

Rest sur Tomcat, Leçon 1 : Introduction

04 August 2013 06:57 root Java, Maven, Resteasy, Tomcat

Bonjour,

Je commence aujourd'hui une série de tutorial dans le but de faire des services web orienté Rest sur Tomcat. Ici je prendrais le choix d'utiliser principalement Json comme format d’échange mais pour du XML la procédure change peu. J'ai choisi comme implémentation :

  • Resteasy : pour le provider rest
  • Jackson : pour la serialisation Json
  • Tomcat : pour le serveur
Je ne vais pas pas vous faire l'affront de vous expliqué le principe de REST. Je l'ai appris de manière empirique et si par le plus grand des hasard vous êtes arrivé sur cette page c'est que vous savez déjà ce que c'est.

Ecriture du pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>shionn</groupId>
  <artifactId>tuto-resteasy</artifactId>
  <version>0.1</version>
  <name>ResteasyTuto</name>
  <packaging>war</packaging>

<dependencies> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jackson-provider</artifactId> <version>3.0.2.Final</version> </dependency> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jaxrs</artifactId> <version>3.0.2.Final</version> </dependency> </dependencies> </project>

Ecriture du web.xml

à placer dans src/main/webapp/WEB-INF. L'idée est de faire en sorte que resteasy détecte tous seul les services.

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
  <display-name>Resteasy Tuto</display-name>

  <context-param>
    <param-name>resteasy.scan</param-name>
    <param-value>true</param-value>
  </context-param>
  <context-param>
    <param-name>resteasy.servlet.mapping.prefix</param-name>
    <param-value>/</param-value>
  </context-param>

  <listener>
    <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
  </listener>

  <servlet>
  <servlet-name>Resteasy</servlet-name>
    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Resteasy</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>

</web-app>

Ecriture de du premier service REST

C'est assez simple il suffit de créer une classe en l'annotant avec la balise @Path("/chemin"). Cela déclare la classe auprès de resteasy. Cette classe prendra en charge les requêtes arrivant sur le chemin "/chemin"

Et c'est la même idée avec les méthodes, avec les annotation en décrit le contenu qu'elle consomme, produit etc... Voila l'exemple le plus simple.