Petit jeu C++ inspire de Minestorm/Asteroids, construit avec olcPixelGameEngine, olcPGEX_MiniAudio, CMake et Visual Studio 2022 sous Windows.
Etat actuel du projet :
- build native Windows/MSVC fonctionnelle
- build WebAssembly/Emscripten fonctionnelle
- deploiement GitHub Pages fonctionnel
- gameplay complet avec menus, audio, UFO, power-ups, ecrans de support et mode debug
src/main.cpp: point d'entree et integration unique deOLC_PGE_APPLICATIONsrc/Game.h/src/Game.cpp: boucle de jeu, etats, rendu et gameplaysrc/Entities.h/src/Entities.cpp: structures simples des entites et helpers de gameplaythird_party/olcPixelGameEngine.h: header officiel du moteurthird_party/olcPGEX_MiniAudio.h: extension audio officiellethird_party/miniaudio.h: moteur audio upstreamthird_party/OLC-LICENCE.md: licence upstream du moteurthird_party/OLC-MiniAudio-LICENCE.md: licence upstream de l'extension audiothird_party/MINIAUDIO-LICENCE.txt: licence upstream de miniaudiobuild.bat: configuration + compilation CMake Releasebuild-wasm.bat: configuration + compilation WebAssembly avecemcmakerun.bat: build si necessaire puis lancement du jeuweb/index_shell.html: shell HTML utilise pour la build Emscripten.github/workflows/deploy-pages.yml: build wasm et deploiement GitHub Pages
- Windows
- Visual Studio 2022 avec le workload C++
- CMake 3.20 ou plus recent
- compilateur avec support C++20
- pour le web : environnement Emscripten actif (
emcmake,emrun) ou execution des memes commandes dans ton image Docker Emscripten existante
Depuis la racine du projet :
cmake -S . -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config ReleaseL'executable genere se trouve ici :
build\Release\minestorm.exe
build.batCe script :
- genere les fichiers Visual Studio dans
build\ - compile la configuration
Release
Apres compilation :
run.batOu directement :
build\Release\minestorm.exeSur cette machine, si besoin, active d'abord Emscripten :
C:\local\emsdk\emsdk.bat activate latest
C:\local\emsdk\emsdk_env.batPuis, depuis la racine du projet :
emcmake cmake -S . -B build-wasm -DCMAKE_BUILD_TYPE=Release
cmake --build build-wasmOu via le script fourni :
build-wasm.batLe script tente aussi de charger automatiquement C:\local\emsdk\emsdk_env.bat si emcmake n'est pas deja dans le PATH.
La sortie web est produite ici :
build-wasm\site\index.html
build-wasm\site\index.js
build-wasm\site\index.wasm
build-wasm\site\index.data
Les assets du jeu sont empaquetes automatiquement dans index.data via --preload-file assets@assets.
Si tu preferes reutiliser ton image Docker Emscripten existante, execute simplement ces memes commandes emcmake cmake et cmake --build dans ce conteneur.
N'ouvre pas index.html directement dans le navigateur. Sers le dossier via HTTP.
Avec emrun :
emrun build-wasm\site\index.htmlNote audio web :
- certains navigateurs bloquent l'audio tant qu'il n'y a pas eu une premiere interaction utilisateur
- si le son ne part pas immediatement, clique le canvas ou utilise le menu
- si l'initialisation audio echoue, le jeu reste jouable sans son
Le workflow GitHub Actions :
- utilise la meme image Docker Emscripten que ton projet de reference
- configure avec
emcmake cmake - build dans
build-wasm/ - publie
build-wasm/site/comme artefact GitHub Pages
Le workflow est defini dans :
.github/workflows/deploy-pages.yml
Declencheurs :
pushsurmainworkflow_dispatch
- pousse le depot sur GitHub
- dans les settings GitHub Pages du depot, choisis
GitHub Actionscomme source - pousse sur
mainou lance le workflow manuellement - GitHub Pages deploiera l'artefact genere, avec
index.htmla la racine
- Executer :
cmake -S . -B build -G "Visual Studio 17 2022" -A x64- Ouvrir
build\minestorm.slndans Visual Studio - Choisir
Releaseetx64 - Construire puis lancer le projet
minestorm
Up/Downdans le menu : naviguerEnter: confirmer l'option selectionnee / rejouerLeft: tourner a gaucheRight: tourner a droiteUpen jeu : pousseeDownen jeu : hyperspace limiteSpace: tir / arme specialeM: mute / unmute audioEsc: retour ou quitter selon l'ecranF12: activer / desactiver le mode debug- en mode debug, en jeu uniquement :
F1: power-upHyperspaceF2: power-upLaserF3: power-upShockwaveF4: +1 vieF5: spawn UFO
- ecran titre avec menu principal
- ecran de configuration
- ecran help / credits
- vaisseau avec rotation, poussee et inertie
- tirs avec cadence limitee
- asteroides proceduraux en plusieurs tailles
- fragments d'asteroides dynamiques, particules d'explosion et trainee de poussee
- hyperspace limite avec risque de panne
- UFO ennemi occasionnel qui traverse l'ecran et tire sur le joueur
- audio evenementiel pour tirs, explosions, hyperspace et bonus
- son procedural continu pour la poussee
- musique de fond en boucle avec volume separe
- power-ups
Hyperspace,LaseretShockwave - menu principal avec
Start a New Game,Configuration,Help / CreditsetQuit - ecran
Help / Creditsdedie pour les controles et les credits audio - ecran
Configurationpour regler volume musique, volume SFX, mute, delai de retour game over et difficulte de visee du UFO - ecran
QUIT ? (Y/N)pendant la partie - transition inter-vagues type
SECTOR - collisions joueur / projectiles / asteroides
- score, vies, vagues et game over
- retour automatique du game over au menu principal
- mode debug de test en jeu
- rendu retro/vectoriel sans assets externes
Music: "Darker Waves" by Zander Noriega
Licensed under CC-BY 3.0
Source: OpenGameArt
SFX: Bfxr
Game engine: PGE by OneLoneCoder
Vibe-coded by OpenAI Codex and rboman
Voir aussi CREDITS.md.
- Le projet conserve la build native Windows/MSVC existante et ajoute un chemin de build Emscripten pour le web.
olcPixelGameEngineest utilise sous sa licence upstream fournie dansthird_party/OLC-LICENCE.md.- L'audio est gere par
olcPGEX_MiniAudioetminiaudio, fournis dansthird_party/.