| bin | ||
| models | ||
| node_modules | ||
| public | ||
| routes | ||
| views | ||
| app.js | ||
| Caddyfile | ||
| heliagotchi.db | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
Héliagotchi
Jeu d'animal dont on doit prendre soin.
i Un jeu de type Tamagotchi développé avec Express.js et SQLite.
Installation
- Installer les dépendances :
npm install
Si vous rencontrez une erreur avec better-sqlite3, vous devrez peut-être installer les dépendances de compilation :
Sur Ubuntu/Debian :
sudo apt-get install build-essential python3
Sur Fedora/RHEL :
sudo dnf install gcc-c++ python3
Sur macOS :
xcode-select --install
Puis réinstaller :
npm rebuild better-sqlite3
# ou
npm install
- Démarrer l'application :
npm start
L'application sera accessible sur http://localhost:3124
Initialisation de la base de données
La base de données SQLite s'initialise automatiquement au premier démarrage de l'application. Aucune action manuelle n'est requise.
Fichier de base de données
Le fichier de base de données est créé automatiquement à l'emplacement suivant :
heliagotchi.db
Ce fichier est créé dans le répertoire racine du projet lors du premier démarrage.
Structure de la base de données
La base de données contient deux tables principales :
-
heliagotchi: Stocke l'état actuel du héliagotchi- Propriétés : humeur, calin, proprete, age
- Informations : age_stage, etat, heure_virtuelle
- Métadonnées : start_time, naissance_time, derniere_consultation, score_soins
-
historique: Stocke l'historique des états pour les graphiques- Enregistre les valeurs toutes les heures virtuelles
- Conserve les 100 derniers enregistrements
Réinitialisation de la base de données
Pour réinitialiser complètement la base de données :
-
Via l'interface web : Utilisez le bouton "Réinitialiser le jeu" sur la page d'accueil (si l'animal est mort)
-
Manuellement : Supprimez le fichier
heliagotchi.dbet redémarrez l'application
rm heliagotchi.db
npm start
La base de données sera recréée automatiquement avec les valeurs par défaut.
Migration automatique
L'application gère automatiquement les migrations de schéma. Si de nouvelles colonnes sont ajoutées dans une mise à jour, elles seront créées automatiquement au démarrage sans perte de données.
Configuration Caddy
Un fichier Caddyfile est fourni pour configurer un reverse proxy avec Caddy.
Fonctionnalités
- Création et gestion d'un héliagotchi
- Système d'évolution (bébé → enfant → ado → adulte)
- Actions : câlin, jouer, soigner, nourrir
- Graphiques d'évolution
- Interface d'administration pour modifier manuellement l'état
Routes
/- Page d'accueil/accueil- Page principale du jeu/statut- Statut détaillé du héliagotchi/graphs- Graphiques et planification/admin- Interface d'administration
Génération de sons 8-bit
Le jeu génère des mélodies 8-bit pour chaque action en utilisant la Web Audio API du navigateur.
Principe technique
Les sons sont générés en temps réel avec :
- Oscillateurs : génèrent des ondes carrées (type "square") pour le son caractéristique 8-bit
- Gain nodes : contrôlent le volume avec une enveloppe ADSR (Attack, Decay, Sustain, Release)
- Contexte audio : initialisé après la première interaction utilisateur (politique de sécurité des navigateurs)
Structure des mélodies
Chaque action a sa propre mélodie définie comme une séquence de notes :
- Fréquence : hauteur de la note en Hz (ex: 440 Hz = La4)
- Durée : temps pendant lequel la note est jouée (en secondes)
- Timing : moment où la note commence (relatif au début de la mélodie)
Mélodies par action
- Câlin (1.5s) : Mélodie douce et apaisante (Do-Mi-Sol)
- Jouer (1.8s) : Mélodie joyeuse et énergique avec progression ascendante
- Soigner (1.5s) : Mélodie rassurante avec descente harmonieuse
- Nettoyer (1.2s) : Mélodie claire et nette avec montée vers l'octave supérieure
- Nourrir (1.6s) : Mélodie satisfaisante avec progression mélodique
- Lumière (1.0s) : Mélodie douce et courte (Do grave vers Do aigu)
- Réanimer (2.0s) : Mélodie urgente et puissante avec montée progressive
Contrôle du son
Un bouton permet d'activer/désactiver le son (mode silencieux). L'état est sauvegardé dans le localStorage du navigateur.