Développement de jeux 2D avec monogame
Modèle de développement avec Monogame
- Le développement de jeux avec Monogame repose sur l'exécution d'une boucle infinie qui exécute 60 itération par seconde (pour avoir un jeu en 60 fps)
- Ce modèle peut être retrouvé dans d'autres frameworks de jeux
- Chaque itération effectue les actions suivantes:
- Lire les touches du clavier
- Mettre à jour la logique du jeu
- Afficher le rendu de l'image actuelle
- Le framework Monogame permet au développeur de personnaliser le comportement des étapes 2 et 3.
- Cela veut dire que l'on peut coder ce qui se passe sur chaque image (ou frame) et afficher ce qu'on veut à chaque image (frame)
- Voici une représentation en pseudo-code
var game = new Game();
game.Initialize(); // *
game.LoadContent(); // *
while (true){
game.readInput();
game.Update(); // *
game.Draw(); // *
}
// *: peuvent être personnalisés (ou surchargés) avec l'héritage
Lexique monogame
- Sprite: tout élément dans l'écran (personnage, ennemis, décors, etc.).
Texture2D
: c'est le rendu associé à un sprite.
- Par exemple: si on prend le sprite de Mario, alors sa Texture2D contiendra le dessin du personnage à moustache.
- Par exemple: si on prend le premier niveau du jeu Super Mario Bros, alors sa Texture2D contiendra le dessin du terrain, des obstacles, du ciel, des herbes et des nuages.
- On peut considérer un sprite comme un rectangle avec un rendu chargé depuis une Texture2D.
SpriteBatch
: une classe qui gère et dessine à l'écran un ensemble de sprites
- Par exemple: le
SpriteBatch
du premier niveau de Super Mario Bros contiendrait les sprites de: Mario, les ennemies (Goombas et Paratroopers), terrain principal, sous-terrain, le drapeau, les blocs, les bonus et le HUD (Heads Up Display) (Score, vies, temps).
- Fichier
mgcb
: Fichier contenant les ressources d'un jeu Monogame (textures, sons, etc.)
Premiers pas avec Monogame
- Ajout du modèle de projet:
dotnet new install MonoGame.Templates.CSharp
- Vérifier qie le modèle a été ajouté avec un
dotnet new list
- Créer le projet:
dotnet new mgdesktopgl -o first-game
cd first-game
- Vérifier dans csproj que TargetFramework est la dernière version du framework .net
- Lancer:
dotnet restore
- Puis:
dotnet run
Exercice: deux carrés et intersection
- Créer un jeu monogame qui affiche deux carrés
- Le premier est situé au centre et est statique
- Le deuxième est placé aléatoirement dans l’écran et est contrôlé par le joueur
- Associer une texture sous forme d'une couleur à chacun des carrés
- Lorsque les deux carrés se touchent l’arrière-plan devient rouge, sinon il est bleu
- Le score du joueur augmente à chaque frame de 1 point si les carrés ne se touche pas, et il baisse de 5 points par frame s’il se touchent
- Afficher le score en temps réel
- Faire déplacer le premier carré aléatoirement de façon fluide (il ne faut pas qu’il se téléporte)
Fichier mgcb
- Un fichier mgcb permet de contenir, de façon optimale, les ressources d’un jeu XNA / MonoGame
- Afin de manipuler ce fichier, il faut installer deux outils
- Un éditeur pour ajouter des ressources:
mgcb
- Un compilateur pour qu’il puisse être optimisé pour l’exécution:
mgcb-editor-(platforme)
- Pour installer correctement le compilateur, il faut d’abord avoir un fichier .config/dotnet-tools.json dans son projet avec la commande
dotnet new tool-manifest
- Installer le compilateur:
dotnet tool install dotnet-mgcb
(il sera lancé automatiquement lorsqu'on fera dotnet run
)
- Installer l’éditeur pour windows:
dotnet tool install dotnet-mgcb-editor
- Puis le lancer en lançant la commande
dotnet mgcb-editor
- Un fois l’éditeur ouvert, créer un nouveau mgcb dans
[racine du projet]/Content/Content.mgcb
- Vous pouvez suivre ce guide pour voir comment ajouter et charger des ressources
Animations