Recherche…


Versions

Version Date de sortie
1.9.3 2016-05-16
1.9.5 2016-12-11

Installation ou configuration

LibGDX a une configuration assez simple, à l'aide d'un simple programme Java. Vous pouvez trouver le téléchargement ici . Lorsque vous démarrez l'application, cela ressemblera à ceci: Exemple de générateur de projet LibGDX
Remarque: Cette capture d'écran a été prise sous Linux et indique un chemin différent de celui d'une installation Windows. Cependant, le formulaire est le même sur tout système d'exploitation compatible avec cette application de configuration

Boîtes de saisie

Dans la zone de saisie "Nom", le nom du jeu correspondant à votre projet. La zone de saisie "Package" correspond au package de votre classe principale. La zone de saisie "Game Class" est la classe principale appelée lors de l'exécution de votre jeu. La zone de saisie "Destination" correspond à la destination de la génération de votre projet. La zone de saisie "Andriod SDK", le chemin d'accès à votre SDK Android. Cette zone de saisie est entièrement facultative, donc si vous ne souhaitez pas déployer votre application sur Android, vous n'avez pas à vous en préoccuper.


Sous projets

Les sous-projets ne sont que les plates-formes à déployer. Cette partie est assez explicite. Si vous ne souhaitez pas le déployer au format HTML, par exemple, décochez simplement la case.


Les extensions

Les extensions sont les extensions officielles de LibGDX. Voici un tableau vous indiquant ce que chacun est:

Nom de l'extension La description
Balle Bullet est une bibliothèque de détection de collision 3D et de dynamique de corps rigide.
Freetype Freetype vous permet d'utiliser des polices .ttf plutôt que d'utiliser des polices Bitmap
Outils Vous permet d'implémenter la sortie des outils LibGDX.
Contrôleurs Vous permet de mettre en œuvre des contrôleurs tels que les contrôleurs XBox 360.
Box2d Une bibliothèque de physique pour les jeux 2d.
Box2dlights Permet d'ajouter facilement des lumières dynamiques et douces à un jeu de physique.
Ashley Un petit cadre d'entité
Ai Un cadre d'intelligence artificielle.

Vous pouvez ajouter des extensions tierces, mais leurs détails ou noms ne seront pas affichés ici.


Avancée

Dans la section Avancé, vous pouvez définir plusieurs paramètres et générer des fichiers de projet supplémentaires pour Eclipse et IDEA IDE.

Nom du paramètre La description
URL Miroir Maven Remplace Maven Central par l'URL Maven fournie
IDÉE Génère des fichiers de projet Intellij IDEA
Éclipse Génère des fichiers de projet Eclipse
Mode hors-ligne Ne forcez pas les dépendances de téléchargement

Génération

Une fois que vous avez tous vos paramètres corrects, vous pouvez appuyer sur le bouton "Générer". Cela peut prendre quelques secondes, mais cela générera les fichiers de base, et Gradle nécessaire pour votre projet. Une fois que vous avez terminé, il est temps d’importer le projet sur votre IDE.

LibGDX Bonjour tout le monde

Les bases

Les projets générés contiennent une application basique de type Hello World déjà implémentée.

Le projet principal est le projet principal, qui contient tout le code indépendant de la plate-forme. Ceci est obligatoire, mais selon vos paramètres de génération, vous pouvez avoir plusieurs autres projets pour chaque plate-forme que vous avez sélectionnée.

L'exemple

Ouvrez com.mygdx.game.MyGdxGame.java dans le projet core . Vous verrez le code suivant:

public class MyGdxGame extends ApplicationAdapter {
    SpriteBatch batch;
    Texture img;
    
    @Override
    public void create () {
        batch = new SpriteBatch();
        img = new Texture("badlogic.jpg");
    }

    @Override
    public void render () {
        Gdx.gl.glClearColor(1, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        batch.begin();
        batch.draw(img, 0, 0);
        batch.end();
    }
    
    @Override
    public void dispose () {
        batch.dispose();
        img.dispose();
    }
} 

Bien que ce soit votre projet principal, vous ne l' exécutez directement, vous devez toujours exécuter le programme de lancement spécifique à la plateforme, pour le bureau , il est appelé com.mygdx.game.desktop.DesktopLauncher.java dans le desktop du projet.

public class DesktopLauncher {
    public static void main (String[] arg) {
        LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
        new LwjglApplication(new MyGdxGame(), config);
    }
} 

Dans cette classe, vous pouvez définir des paramètres spécifiques à la plate-forme.


Lancer votre jeu

Eclipse et Intellij utilisent deux méthodes différentes pour exécuter votre projet. Trouvez l'IDE que vous utilisez ci-dessous.

Exécution en utilisant Eclipse

En utilisant eclipse, vous pouvez exécuter votre application en exécutant cette classe en tant qu'application Java (Cliquez avec le bouton droit sur le projet -> Exécuter en tant que -> Application Java). Vous verrez la fenêtre suivante:

Running Bonjour tout le monde sur le bureau

Exécution avec Intellij Idea

Dans Intellij, vous devrez effectuer une configuration d'exécution. Pour ce faire, vous devez cliquer sur le bouton en haut à droite qui ressemble à une carotte descendante:

Carotte

Cliquez ensuite sur le bouton "Modifier les configurations ...". Vous serez présenté avec un écran de toutes vos configurations d'exécution actuelles. Cliquez sur le "+" en haut à gauche de cette fenêtre et sélectionnez l'option "Application". De là, sélectionnez le fichier "DesktopLauncher" pour l'option "Classe principale", définissez l'option "Utiliser le chemin de classe du module" sur l'option principale et définissez "Répertoire de travail" sur le dossier des ressources de votre dossier principal. Le produit final devrait ressembler à ceci:

Exécuter un exemple de configuration

Une fois cela fait, vous pouvez sélectionner un nom pour votre configuration d'exécution, puis cliquer sur "Appliquer", puis sur "OK". Une fois que vous avez terminé avec cela, vous pouvez cliquer sur l'icône verte en haut à droite:

Icône d'exécution

Que se passe-t-il dans la classe MyGdxGame?

Tout d'abord, la méthode create est appelée, ce qui initialisera le lot qui attire à l'écran. Ensuite, la méthode charge le fichier badlogic.jpg dans la mémoire.

Après cela, la méthode de render est appelée à plusieurs reprises jusqu'à ce que l'application soit arrêtée. Cette méthode rétablit la couleur d'arrière-plan au rouge et dessine l'image à l'écran. Comme vous pouvez le voir, vous devez toujours commencer et terminer le dessin par lots. Enfin, lorsque l'application est sur le point d'arrêter, la méthode dispose est appelée, ce qui libère l'espace mémoire utilisé par la texture et le lot.

(Il est bon de savoir que l'élimination peut également se produire à l'exécution sur d'autres plates-formes, par exemple Android, car Android peut libérer de l'espace mémoire lorsque les applications sont en arrière-plan, mais c'est un sujet plus avancé)



Remarque: Si vous obtenez une erreur en cours d'exécution, consultez la question ci-dessous pour obtenir une réponse!

Fichier non trouvé: badlogic.jpg (Internal)

Présentation générale de LibGDX

LibGDX est une bibliothèque gratuite de développement de jeux open source développée en Java. Ses objectifs sont de permettre aux utilisateurs de développer des jeux multi-plateformes fonctionnant sur les navigateurs de bureau, Android, iOS et Web. Écrivez le code une fois, déployez-le sur l'une des plates-formes principales.

Ajout du support pour le code spécifique à la plate-forme

LibGDX est conçu de manière à pouvoir écrire le même code et à le déployer sur plusieurs plates-formes différentes. Cependant, il y a des moments où vous voulez avoir accès au code spécifique à la plateforme. Pour un exemple, si vous avez des classements et des réalisations dans votre jeu, vous pouvez utiliser des outils spécifiques à la plate-forme (tels que Google Play Games) en plus de les stocker localement. Ou vous voulez utiliser une base de données ou quelque chose de complètement différent.

Vous ne pouvez pas ajouter ce type de code dans le module principal. La première étape consiste donc à créer une interface. Créez-le dans le module de base. Ce premier est un utilitaire pour gérer d’autres interfaces:

public interface PlatformWrapper{
    //here you can also add other things you need that are platform specific.
    //If you want to create your own file saver for an instance, a JSON based database,
    //achievements, leaderboards, in app purchases and anything else you need platform specific code for.
    SQLWrapper getSQLSaver();//This one will be used in this example
    AchievementWrapper getAchievementHandler();//this line is here as an example
}

Ensuite, nous devons créer une seconde interface, SQLWrapper. Celui-ci va également dans le module de base.

public interface SQLWrapper{
    void init(String DATABASE);
    void saveSerializable(int id, Object o);
    Object loadSerializable(int id, Object o);
    void saveString(int id, String s);
    //.... and other methods you need here. This is something that varies
    //with usage. You may not need the serializable methods, but really need a custom method for saving 
    //an entire game world. This part is entirely up to you to find what methods you need
   
    //With these three methods, always assume it is the active database in question. Unless 
    //otherwise specified, it most likely is
    String getActiveDatabase();
    void deleteDatabase();
    void deleteTable(String table);//delete the active table
}

Maintenant, vous devez aller dans chaque projet et créer une classe pour implémenter PlatformWrapper et une autre pour implémenter SQLWrapper. Dans chaque projet, vous ajoutez le code nécessaire, comme les instances, les constructeurs, etc.

Une fois que vous avez remplacé toutes les interfaces que vous avez créées, assurez-vous qu'elles ont toutes une instance dans la classe qui implémente PlatformWrapper (et qu'il existe un getter). Enfin, vous modifiez le constructeur de la classe principale. La classe principale est la classe que vous référencez depuis le lanceur. Il étend soit ApplicationAdapter, implémente ApplicationListener ou étend Game. Editez le constructeur et ajoutez PlatformWrapper comme argument. Dans l'encapsuleur de la plate-forme, vous avez des utilitaires (si vous en avez ajouté) en plus de tous les autres wrappers (sql, réalisations ou tout autre élément ajouté).

Maintenant, si tout est correctement configuré, vous pouvez appeler le PlatformWrapper et obtenir l'une des interfaces multiplates-formes. Appelez n'importe quelle méthode et (en supposant que le code exécuté est correct) vous verrez sur n'importe quelle plate-forme, il fait ce qu'il est censé faire avec le code spécifique à la plate-forme

Gestionnaire d'actifs

AssetManager est une classe qui vous aide à gérer vos actifs.

Tout d'abord, vous devez créer une instance:

AssetManager am = new AssetManager();

Une fois cette opération initialisée, et avant de rendre quoi que ce soit, vous souhaitez obtenir les ressources suivantes:

am.load("badlogic.jpg", Texture.class);//Texture.class is the class this asset is of. If it is a 
//sound asset, it doesn't go under Texture. if it is a 3D model, it doesn't go under Texture.class
//Which class added depends on the asset you load

//... other loading here ...//

//when finished, call finishLoading:
am.finishLoading();

Maintenant, où que vous vous sentiez pour obtenir badlogic.jpg :

Texture texture = am.get("badlogic.jpg");
//Ready to render! The rendering itself is in the normal way

Utiliser AssetManager vous permet de les charger une fois dans la mémoire de AssetManager, puis de les récupérer autant de fois que vous le souhaitez.

Pourquoi utiliser AssetManager? (à partir du wiki ):

AssetManager (code) vous aide à charger et à gérer vos actifs. C'est la méthode recommandée pour charger vos ressources, grâce aux comportements suivants:

  • Le chargement de la plupart des ressources se fait de manière asynchrone, vous pouvez donc afficher un écran de chargement réactif pendant le chargement
  • Les actifs sont la référence comptée. Si deux actifs A et B dépendent tous deux d'un autre actif C, C ne sera pas éliminé tant que A et B n'auront pas été éliminés. Cela signifie également que si vous chargez un actif plusieurs fois, il sera effectivement partagé et ne prendra qu'une seule mémoire!
  • Un lieu unique pour stocker tous vos actifs.
  • Permet de mettre en œuvre de manière transparente des éléments tels que les caches (voir FileHandleResolver ci-dessous)

Le graphe de scène 2D

Lorsque vous commencez à utiliser Java ou Android, vous apprenez rapidement que (0,0) se trouve dans le coin supérieur gauche. Dans LibGDX, cependant, (0,0) est par défaut dans le coin inférieur gauche.

À l'aide d'une caméra orthographique, vous pouvez obtenir (0, 0) dans le coin supérieur gauche. Bien que par défaut, (0, 0) se trouve dans le coin inférieur gauche. C'est quelque chose de important à savoir, car cela change aussi le coin des textures qui ont les coordonnées X et Y.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow