Libgdx Game

vendredi 13 juillet 2012

Tutoriel Libgdx :Tout ce qu'il faut savoir pour commencer avec Libgdx #2

---> Introduction

---> Installation

---> Premier pas (mettre en place un projet)


Introduction

Libgdx est une bibliothèque multiplateforme qui permet de développer en écrivant un seul un code source qui pourra être déployé sous plusieurs plates-formes. Ce qui signifie qu’on pourra développer  des applications Android sous un environnement de desktop. Ce qui va éviter l’utilisation de l’émulateur à chaque fois qu’on voudra tester notre programme (n’est-ce pas MAGNIFIQUE (^_^)).

Libgdx vous permet d'aller aussi bas niveau de programmation que vous le souhaitez, vous donnant un accès direct aux systèmes de fichiers, des périphériques d'entrées, des dispositifs audio et OpenGL via un 1.x unifiée OpenGL ES et 2.0.

Voici les principales caractéristiques fournis par libgdx :
Une API pour OpenGL ES (texture, shaders, les vertex arrays …)
Une API pour les graphismes en 2D (les polices bitmap, les sprites, widgets, des  animations …)
Une API pour les graphismes 3D (OBJ chargeurs et MD5, manipulation de la caméra …)
Une API pour les I / O (audio, photos, graphiques, clés / tactiles / événements clique …)
Une API pour la physique (box2d) et les mathématiques
De nombreux utilitaires (JSON, générateur de polices bitmap …)

Dans ce tutoriel on va voir comment utiliser Libgdx avec Android pour construire un projet d’un jeu ou d’une application
Le format d'un jeu ou d'une application Java sera en trois parties comme suite :

La partie logique :  Contient le code construisant notre jeu ou application c’est là que la totalité des fonctions et opération sont implémentés.
La partie desktop : Contient le lanceur de code source de la partie logique via JOGL ou LWJGL. Car Libgdx supporte deux back-end pour les applications/jeu sur desktop.
La partie Android : Contient le lanceur de code source de la partie logique


Installation

L’installation et la mise en place de la bibliothèque libgdx est une opération très facile.
Premièrement allez sur le site officielle de libgdx voir ici
Télécharger la dernière version qui se trouve en haut: 



Une fois le téléchargement est finit il faut extraire le fichier .zip téléchargé.
On suppose que Eclipse et SDK Android soient déjà disponible. Si ce n’est pas le cas consultez cet article.

Premier pas : La mise en place d’un projet.

Ici on va voir les différentes étapes qu’on doit à chaque fois effectuer pour créer un projet pour notre jeu ou application.

      1) Préparer l’environnement pour le développement desktop

Allez dans Eclipse et créez un nouveau projet java 


Puis nommez le projet gdx-bonjour et cliquer sur finish 
Désormais votre projet est dans le package explorer. Maintenant on va créez un fichier qui s’appelle libs dans  votre projet. Suivez ces étapes en commençant par un clic droit sur le fichier du projet :



Le fichier doit obligatoirement  s’appeler libs comme suite :


Puis cliquez sur finish
Ce fichier va contenir les jars de la bibliothèque libgdx
Créer un autre fichier et appelez le assets
Le fichier assets c’est pour contenir les ressources s’il y en a (et ce n’est pas le cas de notre projet et on va voir l’utilité dans un autre tutoriel)

Vous vous souvenez toujours du fichier qu’on a téléchargé. Et que je vous ai demandé d’extraire son contenu (Très bien). Parmi les fichiers qu’il contient on a ces jars :
·         gdx.jar
·         gdx-backend-jogl.jar
·         gdx-backend-jogl-natives.jar
·         gdx-natives.jar

Copiez ces 4 fichiers jar dans le fichier libs qu’on a créé dans notre projet gdx-bonjour

Remarque : dans ce tutoriel j’ai choisi le back-end JOGL. Par contre si on opte pour LWJGL il faudra bien sur copier les JARs de LWJGL

Maintenant on va ajouter ces jars dans le projet gdx-bonjour.
Faite un clic droit sur votre projet et faite : Build Path ---> Configure Build Path


                  
            Puis allez dans l’onglet Library  et cliquez sur Add JARs :

            
       Puis sélectionnez sur les 4 JARs qui se trouvent dans le fichier libs de notre projet comme       suite :

                    
                 
            Une fois sélectionnés cliquez sur ok
            Maintenant allez sur l’onglet source et cliquez sur Add Folder puis ajoutez le fichier assets : qu’on a créé dans notre projet 

            
            Cliquer sur ok
            
        Une fois ses opérations effectuées : vous pouvez vous consacrez sur le code source de vos   apps/jeux
                   

       2)  Préparer l’environnement pour le développement Android

        Premièrement créez un nouveau projet Android :

         
Nommez le gdx-bonjourAndroid et cliquez suivant. Choisissez votre émulateur puis cliquez sur suivant
Entrez le nom de votre application moi je l’ai nommé gdx-bonjourAndroid
Entrez nom du package, moi je l’ai nommé my.works.gdxbonjourAndroid
Entrez le nom de la class actvity moi je l’ai nommé main
Cliquez sur finish

Maintenant, on va créer un fichier qui s’appelle libs dans notre projet. faite un clic droit sur le gdx-bonjourAndroid qui désormais se trouve dans le Package Explorer puis faire :
New ---> Folder

 
C’est nécessaire d’appeler le fichier libs
Maintenant on va mettre dans ce fichier ces JARs qui se trouvent dans le fichier qu’on a téléchargé :
·                 gdx.jar
·                 gdx-backend-android.jar
·                 armeabi
·                 armeabi-v7a

Maintenant, on va ajouter les JARs dans notre projet. Faite un clic droit sur notre projet gdx-bonjourAndroid  puis allez vers Build Path ---> Configure build path


Cliquez sur l’onglet Libraries puis faite Add JARs , selectionnez les deux JARs :
·  gdx.jar
·  gdx-backend-android.jar
Cliquez sur OK.

 
Maintenant on va importer le premier projet gdx-bonjour
Cliquez sur l’onglet Project puis sur le bouton Add et cochez le projet à importer gdx-bonjour



Une fois tout cela effectué on peut se consacrer sur le code source .

          3)     Préparer le code source

Allez dans le projet desktop gdx-bonjour et créez une nouvelle class dans un nouveau package   qui s’appellent respectivement  Jeu et my.works.jeu et dont le contenu de la class Jeu est :

package my.works.jeu;

import com.badlogic.gdx.ApplicationListener;

public class Jeu implements ApplicationListener {

            @Override
            public void create() {
             
                       
            }

            @Override
            public void dispose() {
                   
                       
            }

            @Override
            public void pause() {
                       
                       
            }

            @Override
            public void render() {
               Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);   
               Gdx.gl.glClearColor(0, 1, 0, 1);                       
            }

            @Override
            public void resize(int arg0, int arg1) {
                 
                       
            }

            @Override
            public void resume() {
                 
                       
            }

}

Ce code source ne fait que colorer la surface en vert. Je vous promet une explication plus détaillez concernant ce code dans les prochains tutoriels.


Créez une autre class dans le projet gdx-bonjour. J’ai appelais cette class LanceurDesktop et dont le contenu est :
package my.works.jeu;

import com.badlogic.gdx.backends.jogl.JoglApplication;

public class LanceurDesktop {

            public static void main(String[] args) {
           
                        new JoglApplication (new Jeu(),"titre du jeu",480,320,false);
    }
}

Maintenant,
Modifiez la class main du projet gdx-bonjourAndroid pour qu’elle soit comme ceci :

package my.works.GdxbonjourAndroid;
import my.works.jeu.Jeu;
import com.badlogic.gdx.backends.android.AndroidApplication;
import android.os.Bundle;

public class main extends AndroidApplication {
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        initialize(new Jeu(), false);
      
    }
}

Si vous exécutez le premier projet (gdx-bonjour) vous aurez :

 
Si vous exécutez le deuxième projet (gdx-bonjourAndroid) vous aurez :




 
Pour résumer les choses voici à peu prêt ce qu’on a fait :








12 commentaires:

  1. Merci pour ce tuto... ptite incoherence ici :
    Cliquez sur l’onglet source puis faite Add JARs
    c'est plutôt :
    Cliquez sur l’onglet Libraries.
    xfrtce @ imaginesite.fr

    RépondreSupprimer
  2. Merci xfrtce de votre remarque l'erreur est corrigée, heureusement qu'il y a les captures d'écran !

    RépondreSupprimer
  3. Bonjour, je rencontre un problème a l’exécution sur android, le programme marche parfaitement sur mon ordinateur, mais sur ma tablette j’obtiens l'erreur suivante que je n'arrive pas a comprendre :

    01-13 18:47:50.472: E/AndroidRuntime(27575): FATAL EXCEPTION: main
    01-13 18:47:50.472: E/AndroidRuntime(27575): java.lang.NoClassDefFoundError: my.works.jeu.Jeu
    01-13 18:47:50.472: E/AndroidRuntime(27575): at my.works.gdxbonjourAndroid.Main.onCreate(Main.java:11)


    je précise que j'ai répéter les indications du tutoriel plusieurs fois pour être sur de ne pas avoir fait d’erreur.

    RépondreSupprimer
    Réponses
    1. J'ai la même erreur que Simon.

      Supprimer
    2. J'ai trouvé la solution. Il faut compiler en version java 1.6 et non 1.7.

      Supprimer
  4. Bonjour, je rencontre la même erreur que Simon depuis 3 jours. J'ai effectuer des recherches en vain.
    Si quelqu'un pourrait m'aider!!! Merci

    RépondreSupprimer
    Réponses
    1. +1
      J'ai le même problème, l'application ne se lance pas sur Android.
      Et la solution proposée ne change rien.
      Merci d'avance pour l'aide !

      Supprimer
    2. je vien de trouver la solution , il suffit de creer une nouvelle classe Jeu dans le package my.works.gdx_bonjourandroid et copier le code de la classe Jeu de l'autre package my.works.jeu
      puis dans mainActivity , enlever cette ligne : import my.works.jeu.Jeu;
      je pense que c t un probleme de chemin ,
      pour moi ca marche , bon courage !

      Supprimer
  5. Bonjour, Merci pour Le tutoriel mais est ce que tu peut nous mettre le code de la fichier manifest.xml et merci d'avance

    RépondreSupprimer
  6. Pour les personnes comme moi, qui ont le problème de "NoClassDefFoundError" et que pendant des jours et des jours essaye de trouver la solution, je vous conseille d’utiliser le "gdx-setup-ui" pour créer le projet et après vous avez juste a modifier de code.

    RépondreSupprimer
  7. Pour les personnes qui ont le problème de NoClassFoundError :
    D'abord, cliquez droit sur le projet gdx-bonjour et sélectionnez "Configure Built Path" qui se trouve dans "Built Path" puis dans l'onglet "librairie" sélectionnez JRE System Librairie et cliquez sur "edit". A coté de "Excecution environment" sélectionner le Java SE 1.6. Cliquez sur ok pour valider vos modifications.
    Ensuite, cliquez droit sur le projet gdx-bonjourAndroid et sélectionnez "Configure Built Path" qui se trouve dans "Built Path" puis dans l'onglet "Order and Export" cochez la case qui correspond à gdx-bonjour. Cliquez sur ok pour valider vos modifications.

    Lancez votre projet avec le Android virtual device Nexus S (c'est celui que j'utilise et qui marche actuellement) : pour le modifier, dans l'onglet "Window" cliquez sur Android Virtual Device manager et sélectionnez l'AVD que vous utiliser et cliquez sur edit (ou créer en un si la liste est vide) et dans "device" sélectionnez le Nexus S.

    Normalement, ca devrait réglé pas mal de beug :)

    RépondreSupprimer
  8. Ce commentaire a été supprimé par l'auteur.

    RépondreSupprimer