- TypeScript 77.6%
- CSS 16.4%
- PHP 2.6%
- JavaScript 2.1%
- Java 0.6%
- Other 0.7%
| android | ||
| backend | ||
| dist | ||
| docs | ||
| electron | ||
| public | ||
| scripts | ||
| src | ||
| tmp | ||
| vec | ||
| .env | ||
| .env.example | ||
| .gitignore | ||
| capacitor.config.ts | ||
| deploy | ||
| index.html | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.electron.json | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.ts | ||
Fou du Roi HD
Jeu d'arcade labyrinthique en TypeScript construit avec Phaser, distribue en version web, desktop Electron et Android via Capacitor. Remake d'un vieux jeu Videoway. pt construit avec Phaser, distribue en version web, desktop Electron et Android via Capacitor.
Le joueur traverse des mondes, affronte des ennemis, gere sa vie et sa lumiere, collecte des bonus, et doit recuperer 9 cles pour progresser. Le projet inclut aussi une petite API PHP pour stocker les high scores.
Apercu
- Gameplay arcade 2D avec progression par mondes
- Ecrans adaptes desktop, mobile tactile et Android TV
- Build web via Vite
- Build desktop via Electron
- Build Android via Capacitor
- API PHP simple pour les high scores
Stack technique
- TypeScript
- Phaser 3
- Vite
- Electron
- Capacitor Android
- PHP pour l'API de scores
Structure du projet
src/
game/ Coeur du jeu Phaser (scenes, entites, modeles, assets, audio)
ui/ Shell HTML autour du canvas, HUD et ecrans mobile
main.ts Point d'entree frontend
android/ Projet Android genere par Capacitor
backend/public/api/ API PHP des high scores
public/ Assets statiques
scripts/ Scripts utilitaires (icones, extraction d'assets)
deploy Script de deploiement web / TV / desktop
Prerequis
- Node.js 20+ recommande
- npm
- PHP 8+ si vous voulez lancer l'API de scores en local
- Android Studio + SDK Android pour builder la version Android / TV
- macOS si vous utilisez les scripts de packaging macOS deja configures
Installation
npm install
Lancer le projet
Web
npm run dev
Le serveur Vite tourne sur http://127.0.0.1:5173.
Desktop Electron
npm run dev:desktop
Cette commande lance Vite, compile le process Electron en watch, puis ouvre l'application desktop.
Android / Android TV
Synchroniser le projet web dans Android :
npm run android:sync
Ouvrir le projet dans Android Studio :
npm run android:open
Raccourci equivalent :
npm run android:tv
Builds
Build web
npm run build
Preview web
npm run preview
Build desktop
npm run build:desktop
Lancer le build desktop localement
npm run preview:desktop
Packager desktop
npm run pack:desktop
Generer les installateurs
npm run dist:mac
npm run dist:win
Les artefacts sont generes dans release/.
High scores
Le frontend consomme actuellement l'endpoint :
https://fou.ragault.com/api/highscore.php
Le backend PHP fourni dans backend/public/api/ permet :
GET /api/highscore.php?limit=10POST /api/highscore.php
Fonctionnalites cote backend :
- validation stricte du payload
- limitation de debit par IP
- stockage JSON local
- tri et plafonnement du leaderboard
- CORS controle
Lancer l'API localement
Depuis le dossier backend/public :
php -S 127.0.0.1:8000
Le projet Vite contient deja un proxy /api vers http://127.0.0.1:8000.
Note importante : le client du jeu pointe aujourd'hui vers une URL absolue de production dans src/game/services/highScoreService.ts. Si vous voulez utiliser l'API locale pendant le developpement, il faut adapter cette URL.
Deploiement
Le script ./deploy supporte trois cibles :
./deploy --web
./deploy --tv
./deploy --desktop
Ce script :
- build la cible demandee
- envoie les artefacts sur le serveur distant configure
- publie la version web, l'APK TV ou les installateurs desktop
Les chemins distants et l'hote de deploiement sont actuellement configures en dur dans deploy.
Configuration
Le fichier .env contient actuellement :
VITE_ENABLE_SYMMETRIC_LAYOUTS=true
Controles et adaptation plateforme
- Desktop : clavier et gamepad
- Mobile : HUD tactile et controles tactiles
- Android TV : profil de rendu adapte et navigation gamepad
La detection de plateforme est centralisee dans src/platform.ts.
Points d'entree utiles
src/main.ts: bootstrap UI + jeusrc/game/GameBootstrap.ts: configuration Phasersrc/game/scenes/SceneTitle.ts: ecran titre et chargement des scoressrc/game/scenes/SceneWorld.ts: boucle principale de jeubackend/public/api/highscores.php: logique API scores
Etat du projet
Le depot contient deja des repertoires de build (dist/, dist-electron/, release/) et un projet Android versionne. Si vous travaillez sur le gameplay, concentrez-vous principalement sur src/game/, src/ui/ et backend/public/api/.