game-engine

Par github · awesome-copilot

Compétence experte pour créer des moteurs de jeux et des jeux web avec HTML5, Canvas, WebGL et JavaScript. À utiliser lorsqu'on vous demande de créer des jeux, de construire des moteurs de jeux, d'implémenter de la physique de jeu, de gérer la détection de collision, de configurer des boucles de jeu, de gérer des sprites, d'ajouter des contrôles de jeu, ou de travailler avec le rendu 2D/3D. Couvre les techniques pour les platformers, les jeux de type breakout, les jeux de labyrinthe, les tilemaps, l'audio, le multijoueur via WebRTC, et la publication de jeux.

npx skills add https://github.com/github/awesome-copilot --skill game-engine

Compétence Moteur de Jeu

Construisez des jeux web et des moteurs de jeu en utilisant HTML5 Canvas, WebGL et JavaScript. Cette compétence comprend des modèles de démarrage, une documentation de référence et des flux de travail étape par étape pour le développement de jeux 2D et 3D avec des frameworks tels que Phaser, Three.js, Babylon.js et A-Frame.

Quand utiliser cette compétence

  • Construire un moteur de jeu ou un jeu à partir de zéro en utilisant les technologies web
  • Implémenter des boucles de jeu, de la physique, la détection de collision ou le rendu
  • Travailler avec HTML5 Canvas, WebGL ou SVG pour les graphiques de jeu
  • Ajouter des contrôles de jeu (clavier, souris, tactile, manette)
  • Créer des jeux de plateforme 2D, des jeux de style breakout, des jeux de labyrinthe ou des expériences 3D
  • Travailler avec des tilemaps, des sprites ou des animations
  • Ajouter de l'audio à des jeux web
  • Implémenter des fonctionnalités multijoueur avec WebRTC ou WebSockets
  • Optimiser les performances du jeu
  • Publier et distribuer des jeux web

Prérequis

  • Connaissances de base en HTML, CSS et JavaScript
  • Un navigateur web moderne avec support Canvas/WebGL
  • Un éditeur de texte ou un IDE
  • Optionnel : Node.js pour les outils de compilation et les serveurs de développement locaux

Concepts Fondamentaux

Les concepts suivants forment la base de tout moteur de jeu web.

Boucle de Jeu

Chaque moteur de jeu s'articule autour de la boucle de jeu -- un cycle continu de :

  1. Traiter l'Entrée - Lire les entrées clavier, souris, tactile ou manette
  2. Mettre à jour l'État - Mettre à jour les positions des objets du jeu, la physique, l'IA et la logique
  3. Rendu - Dessiner l'état actuel du jeu à l'écran

Utilisez requestAnimationFrame pour un rendu fluide et optimisé par le navigateur.

Rendu

  • Canvas 2D - Idéal pour les jeux 2D, le rendu basé sur les sprites et les tilemaps
  • WebGL - Rendu 3D accéléré par matériel et rendu 2D avancé
  • SVG - Graphiques vectoriels, bon pour les éléments d'interface utilisateur
  • CSS - Utile pour les éléments de jeu basés sur le DOM et les transitions

Physique et Détection de Collision

  • Détection de Collision 2D - AABB, cercle et détection basée sur SAT
  • Détection de Collision 3D - Boîte englobante, sphère englobante et raycasting
  • Vélocité et Accélération - Physique newtonienne basique pour le mouvement
  • Gravité - Accélération constante vers le bas pour les jeux de plateforme

Contrôles

  • Clavier - Touches de direction, WASD et raccourcis clavier personnalisés
  • Souris - Clic, mouvement et verrouillage du pointeur pour les contrôles FPS
  • Tactile - Événements tactiles mobiles et joysticks virtuels
  • Manette - API Gamepad pour le support des contrôleurs

Audio

  • Web Audio API - Génération de son programmatique et audio spatial
  • HTML5 Audio - Lecture audio simple pour la musique et les effets sonores

Flux de Travail Étape par Étape

Créer un Jeu 2D Basique

  1. Configurer un fichier HTML avec un élément <canvas>
  2. Obtenir le contexte de rendu 2D
  3. Implémenter la boucle de jeu en utilisant requestAnimationFrame
  4. Créer des objets de jeu avec propriétés de position, vélocité et taille
  5. Gérer les entrées clavier/souris pour le contrôle du joueur
  6. Implémenter la détection de collision entre les objets du jeu
  7. Ajouter les scores, les vies et les conditions de victoire/défaite
  8. Ajouter des effets sonores et de la musique

Construire un Jeu 3D

  1. Choisir un framework (Three.js, Babylon.js, A-Frame ou PlayCanvas)
  2. Configurer la scène, la caméra et le moteur de rendu
  3. Charger ou créer des modèles 3D et des textures
  4. Implémenter l'éclairage et les shaders
  5. Ajouter la physique et la détection de collision
  6. Implémenter les contrôles du joueur et le mouvement de la caméra
  7. Ajouter l'audio et les effets visuels

Publier un Jeu

  1. Optimiser les ressources (compresser les images, minifier le code)
  2. Tester sur les navigateurs et les appareils
  3. Choisir une plateforme de distribution (web, app stores, portails de jeux)
  4. Implémenter la monétisation si nécessaire
  5. Promouvoir auprès des communautés de jeux et des réseaux sociaux

Modèles de Jeu

Des modèles de démarrage sont disponibles dans le dossier assets/. Chaque modèle fournit un exemple complet et fonctionnel qui peut être utilisé comme point de départ pour un nouveau projet.

Modèle Description
paddle-game-template.md Jeu de style Breakout 2D en JavaScript pur
2d-maze-game.md Jeu de labyrinthe avec contrôles d'orientation d'appareil
2d-platform-game.md Jeu de plateforme utilisant le framework Phaser
gameBase-template-repo.md Structure de référentiel modèle de base de jeu
simple-2d-engine.md Moteur de plateforme 2D simple avec collisions

Documentation de Référence

Du matériel de référence détaillé est disponible dans le dossier references/. Consultez ces fichiers pour une couverture approfondie de sujets spécifiques.

Référence Sujets Couverts
basics.md Introduction au développement de jeux et anatomie
web-apis.md Canvas, WebGL, Web Audio, Gamepad et autres APIs web
techniques.md Détection de collision, tilemaps, scripts asynchrones, audio
3d-web-games.md Théorie 3D, frameworks, shaders, WebXR
game-control-mechanisms.md Contrôles tactiles, clavier, souris et manette
game-publishing.md Distribution, promotion et monétisation
algorithms.md Raycasting, collision, physique, mathématiques vectorielles
terminology.md Glossaire du développement de jeux
game-engine-core-principles.md Principes de conception fondamentaux pour les moteurs de jeu

Dépannage

Problème Solution
Canvas est vide Vérifiez que vous appelez les méthodes de dessin après avoir obtenu le contexte et à l'intérieur de la boucle de jeu
Le jeu s'exécute à des vitesses différentes Utilisez le delta time dans les calculs de mise à jour au lieu de valeurs fixes
La détection de collision est incohérente Utilisez la détection de collision continue ou réduisez les pas de temps pour les objets à mouvement rapide
L'audio ne joue pas Les navigateurs nécessitent une interaction utilisateur avant de jouer l'audio ; déclenchez la lecture depuis un gestionnaire de clic
Les performances sont mauvaises Profilez avec les outils de développement du navigateur, réduisez les appels de dessin, utilisez le pooling d'objets et optimisez les tailles de ressources
Les contrôles tactiles ne répondent pas Empêchez le comportement tactile par défaut et gérez les événements tactiles séparément des événements de souris
Le contexte WebGL est perdu Gérez l'événement webglcontextlost et restaurez l'état sur webglcontextrestored

Skills similaires