LionEngine - The Web Site

Tutoriel

Introduction

Ce tutoriel va vous montrer comment créer un prototype de Mario en utilisant le LionEngine, à la fois avec sa bibliothèque et son éditeur. Voici les principales étapes :


Mise en place du projet

Pour faire un jeu, vous aurez besoin de resources graphiques. Pour cette fois, elles sont gracieusement fournies ici : Resources. Vous trouverez les sprites des entités, une image de niveau, et les sons et musique. Si vous ne savez pas comment débuter avec le LionEngine, suivez la page d'installation :

Installation

Une fois votre projet prêt, vous devriez avoir quelque chose comme ceci : code


Importer le projet dans l'éditeur et préparer les resources du jeu

Lancez l'éditeur (télécharger la version selon votre système), et importez votre projet avec la configuration suivante : (fichier/importer)

Cliquer Terminer et le dossier du projet devrait apparaitre dans l'arborescence en noeud principal.

Vous pouvez maintenant commencer l'extraction des tuiles depuis une image de niveau, en cliquant sur la barre d'outil en haut à droite.

Vous trouverez deux fichiers généré dans resources/map/ : sheets.xml et 0.png. C'est la tilesheets !

Il faut maintenant définir les groupes. Cliquez sur map/éditer les groupes de tuiles. Ajouter un groupe block, sélectionnez-le, et cliquez sur les tuiles entrant en collision avec le joueur. Cliquez sur terminer.

Groups

Importez un niveau depuis une image (barre d'outil en haut à droite), sélectionnez l'image resources/map/level.png, et comme vous avez utilisé les noms par défaut précédemment, les champs d'après sont déjà complétés. Accepter. Vous devriez maintenant pouvoir naviguer au clavier dans le niveau qui s'affiche.

World

Cliquez-droit sur resources/map et Ajouter des formules (avec le nom par défaut). Ajoutez 4 formules : top, bottom, right, left. Utilisez les modèles existants pour chacun. Enfin, définissez la contrainte block pour chaque élément (top -> NORTH, bottom -> SOTH, left -> WEST, right -> EAST). Cela signifie que top ne peut avoir de block au dessus de lui...

Formulas

Cliquez-droit sur resources/map et Ajouter des collisions (avec le nom par défaut). Ajoutez une collision block pointant vers 4 formules : top, bottom, right, left.

Collisions

Vous pouvez minimiser l'éditeur, et revenir sur votre code, afin d'importer un niveau prêt à l'utilisation en tant que fichier de niveaux :

private static void importAndSave()
{
    final Services services = new Services();
    final MapTile map = services.create(MapTileGame.class);
    map.create(Medias.create("map", "level.png"));

    final MapTilePersister mapPersister = map.addFeatureAndGet(new MapTilePersisterModel(services));
    try (FileWriting output = new FileWriting(LEVEL))
    {
        mapPersister.save(output);
    }
    catch (final IOException exception)
    {
        Verbose.exception(exception, "Error on saving map !");
    }
}

Ajouter un WorldGame afin de gérer facilement le niveau, comme ici: code


Implémenter la mécanique de jeu

Ajouter une classe FeatureModel nommée MarioUpdater, avec une implémentation basique telle que : code

La mécanique démarre ici :

@Override
public void prepare(FeatureProvider provider)
{
    super.prepare(provider);

    StateAnimationBased.Util.loadStates(MarioState.values(), factory, provider, setup);
    handler.changeState(MarioState.IDLE);
    handler.addInput(keyboard);

    respawn();
}

Les états sont décrits facilement avec cette classe : code

Leur implémentation doit définir une routine, et de possibles transitions entre les états.

Revenez sur l'éditeur, et cliquez doit sur le noeud du dossier entity (vue projet), et cliquez sur Ajouter un objet nommé Mario.

Sélectionnez Mario.xml, et double cliquez sur la propriété Classe, et choisissez votre classe (Mario). Choisissez également SetupSurface pour la propriété Setup. Cliquez droit sur la vue propriété pour Définir la surface. Sélectionnez l'image Mario.png. Cliquez droit à nouveau pour définir les Frames (7 horizontales et 1 verticales).

Activez maintenant les Animations et éditez les en double cliquant sur le noeud. Ajouter les animation de Mario (idle, walk, turn, jump, die) et sauvez.

Vous devriez maintenant voir ceci :

Gameplay

Code dans son ensemble : code


Finition avec les sons et musique

Modifiez la classe Mario en ajoutant une classe Entity avant, ainsi la classe Mario ne contiendra que le code spécifique au joueur, et vous pourrez ajouter une classe Goomba. Ajouter également le descripteur, animations... Créez son état Die spécifique.

Regardez le trait Collidable afin de gérer les collisions entre objets.

Ajouter une class pour gérer les SFX facilement : code.

Mettre à jour l'implémentation des State afin de jouer les sons au bon moment (pour le saut...).

Lancez la musique à la fin du chargement du niveau.

Vous devriez maintenant voir ceci :

Finishing

Code dans son ensemble : code


Haut de page
LionEngine - The Web Site ©2014 - 2020
Byron 3D Games Studio