Mon premier jeu en Rust et Amethyst

Nunes Nelson
3 min readSep 14, 2020

Motivation

Je débute sur Rust, après pas mal d’expérience dans d’autres domaines, je cherchais un nouveau langage a apprendre mais surtout me rapprocher le plus possible de la machine (Rust est avant tout un langage système).

Apprendre un nouveau langage n’est pas simple, il faut être patient, passer pas mal de temps a debbugger, apprendre de nouveau paradigme…du coup j’ai choisi de partir sur un jeu, car c’est bien connu qu’on “apprend mieux en s’amusant”

Avant de démarrer

Dans cet article, je ne décrirais ni Rust ni Amethyst, pour cela je vous renvois aux différentes documentations.

Le but de cet article est de vous partager quelques bonnes pratiques, une organisation de code, des accélérateurs dans l’apprentissage de ces technologies.

Le code source est disponible ici : https://github.com/Abacaxi-Nelson/game_part_1

Un boilerplate pour Amethys test disponible ici : https://github.com/Abacaxi-Nelson/minimal_amethyst

Mon premier jeu 2D

Ce jeu est construit autour de quatre briques principales :

  • Un ensemble d’état : “Le joueur choisi sa main”, “Montrer le gagnant de la manche” etc.
  • Un ensemble de composants: “Joueur”, “Score”, “Règle du jeu” etc.
  • Un gestionnaire de tile, qui permet d’associer une tile a un composant: Icone “Pierre”
  • Des système qui contiennent la logique métier, c’est ici que nous traiterons les interactions avec le joueur (Clic, Touche), changement d’état, mais aussi la mise à jour des tiles.

Le gestionnaire de tile, est une structure Rust qui contient l’ensemble des images utilisés dans le jeu :

Ici on déclare les différentes mains possibles, la main “Unknown” correspond à l’adversaire qui a sa main masqué.

L’ensemble des images sont disponibles dans le répertoire “assets/textures”, et le code utilisé pour charger les images au sens Amethys est ici : https://github.com/Abacaxi-Nelson/game_part_1/blob/master/src/sprite/storage.rs

Les composants sont les différents éléments graphiques de votre jeu, ce sont des structures qui implémente “Component” au sens Amethys :

Un joueur c’est un ensemble de propriété : sa taille et son type (Joueur ou Adversaire) mais aussi une tile qui est retrouvé via “get_sprite_render”.

Regardons un premier état, celui qui permet d’initialiser le premier écran :

Cette méthode est exécutée par le moteur en premier, on y vois un notion important: “data.world”; il faut voir cette dernière comme le contenant complet du jeu, on y trouvera tous les composants graphiques (player), les composants textes (score) mais aussi différentes ressources (nous allons au cours de la deuxième partie que nous allons avoir besoin de stocker les actions utilisateurs).

Cette méthode charge les deux joueurs et leurs tiles; leurs positions dans l’écran; et enfin les ajoute au conteneur “world” via la méthode “create_entity”.

Voila.. il ne vous reste plus qu’a instancier un nouveau jeu et y passer l”état de démarrage.

La partie 2: https://medium.com/@nunes.nelson4/mon-premier-jeu-en-rust-et-amethyst-partie-2-c27a4d7321c?sk=d1872935542c39a3566057a1d8f16b8c

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

No responses yet

Write a response