Skip to content

rboman/minestorm

Repository files navigation

Minestorm

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

Contenu du projet

  • src/main.cpp : point d'entree et integration unique de OLC_PGE_APPLICATION
  • src/Game.h / src/Game.cpp : boucle de jeu, etats, rendu et gameplay
  • src/Entities.h / src/Entities.cpp : structures simples des entites et helpers de gameplay
  • third_party/olcPixelGameEngine.h : header officiel du moteur
  • third_party/olcPGEX_MiniAudio.h : extension audio officielle
  • third_party/miniaudio.h : moteur audio upstream
  • third_party/OLC-LICENCE.md : licence upstream du moteur
  • third_party/OLC-MiniAudio-LICENCE.md : licence upstream de l'extension audio
  • third_party/MINIAUDIO-LICENCE.txt : licence upstream de miniaudio
  • build.bat : configuration + compilation CMake Release
  • build-wasm.bat : configuration + compilation WebAssembly avec emcmake
  • run.bat : build si necessaire puis lancement du jeu
  • web/index_shell.html : shell HTML utilise pour la build Emscripten
  • .github/workflows/deploy-pages.yml : build wasm et deploiement GitHub Pages

Prerequis

  • 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

Configuration et compilation avec CMake

Depuis la racine du projet :

cmake -S . -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release

L'executable genere se trouve ici :

build\Release\minestorm.exe

Compilation avec le script fourni

build.bat

Ce script :

  1. genere les fichiers Visual Studio dans build\
  2. compile la configuration Release

Lancer le jeu

Apres compilation :

run.bat

Ou directement :

build\Release\minestorm.exe

Build wasm local

Sur cette machine, si besoin, active d'abord Emscripten :

C:\local\emsdk\emsdk.bat activate latest
C:\local\emsdk\emsdk_env.bat

Puis, depuis la racine du projet :

emcmake cmake -S . -B build-wasm -DCMAKE_BUILD_TYPE=Release
cmake --build build-wasm

Ou via le script fourni :

build-wasm.bat

Le 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.

Test wasm local

N'ouvre pas index.html directement dans le navigateur. Sers le dossier via HTTP.

Avec emrun :

emrun build-wasm\site\index.html

Note 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

CI GitHub Actions

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 :

  • push sur main
  • workflow_dispatch

Deploiement GitHub Pages

  1. pousse le depot sur GitHub
  2. dans les settings GitHub Pages du depot, choisis GitHub Actions comme source
  3. pousse sur main ou lance le workflow manuellement
  4. GitHub Pages deploiera l'artefact genere, avec index.html a la racine

Ouvrir dans Visual Studio

  1. Executer :
cmake -S . -B build -G "Visual Studio 17 2022" -A x64
  1. Ouvrir build\minestorm.sln dans Visual Studio
  2. Choisir Release et x64
  3. Construire puis lancer le projet minestorm

Controles

  • Up / Down dans le menu : naviguer
  • Enter : confirmer l'option selectionnee / rejouer
  • Left : tourner a gauche
  • Right : tourner a droite
  • Up en jeu : poussee
  • Down en jeu : hyperspace limite
  • Space : tir / arme speciale
  • M : mute / unmute audio
  • Esc : retour ou quitter selon l'ecran
  • F12 : activer / desactiver le mode debug
  • en mode debug, en jeu uniquement :
    • F1 : power-up Hyperspace
    • F2 : power-up Laser
    • F3 : power-up Shockwave
    • F4 : +1 vie
    • F5 : spawn UFO

Gameplay

  • 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, Laser et Shockwave
  • menu principal avec Start a New Game, Configuration, Help / Credits et Quit
  • ecran Help / Credits dedie pour les controles et les credits audio
  • ecran Configuration pour 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

Credits

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.

Notes

  • Le projet conserve la build native Windows/MSVC existante et ajoute un chemin de build Emscripten pour le web.
  • olcPixelGameEngine est utilise sous sa licence upstream fournie dans third_party/OLC-LICENCE.md.
  • L'audio est gere par olcPGEX_MiniAudio et miniaudio, fournis dans third_party/.

About

vibe coding avec codex (game + pge)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors