135 lines
4.0 KiB
Markdown
135 lines
4.0 KiB
Markdown
# 🐴 My Little Pony: Tails of Equestria
|
|
|
|
En interaktiv digital rollespil baseret på My Little Pony-universet, designet til børn.
|
|
|
|
## ✨ Funktioner
|
|
|
|
- **8 unikke temaer** — hver med 5 scener (terningkast, valg, farvergætning, hukommelse)
|
|
- **4 pony-typer** — Jordpony, Pegasus, Enhjørning, Alicorn med unikke statsbonuser
|
|
- **Terningsystem** — enkelt terning (1d6) med stat-baseret sværhedsgrad
|
|
- **Stemmeinteraktion** — talegenkendelse (STT) og talesyntese (TTS) på dansk
|
|
- **Pixel-pony konfigurator** — tilpas farve, man, øjne, horn/vinger og navn
|
|
- **Lysstyrke-kontrol** — tilpas skærmlyset for komfort
|
|
- **Fulldunderstand** — fullscreen-support for immersiv oplevelse
|
|
|
|
## 🏗️ Arkitektur
|
|
|
|
```
|
|
┌─────────────────────┐ ┌──────────────────┐
|
|
│ React Frontend │────▶│ Flask Backend │
|
|
│ (pony-frontend/) │ │ (web/) │
|
|
│ - React 19 │ │ - REST API │
|
|
│ - Framer Motion │ │ - Dice engine │
|
|
│ - Voice integration │ │ - STT/TTS │
|
|
└─────────────────────┘ └──────────────────┘
|
|
```
|
|
|
|
### Frontend
|
|
- **React 19** med Create React App
|
|
- **Framer Motion** for animationer
|
|
- Komponenter: VoiceButton, FullscreenButton, VoiceFlow
|
|
- Tjenester: API-klient, TTS, narration, voiceFlow
|
|
|
|
### Backend
|
|
- **Flask** REST API
|
|
- Terningsystem: `target = 6 - stat + penalty - talent_bonus` (clamped 1-6)
|
|
- Tale-syntese (TTS) og tale-genkendelse (STT) på dansk
|
|
- Intent-klassificering via Hermes AI
|
|
- SQLite-persistering (valgfri)
|
|
|
|
## 📖 Terningsystem
|
|
|
|
| Stat | Type | Bonus |
|
|
|---|---|---|
|
|
| Krop | Fysisk styrke | +1 (Jordpony, Pegasus) |
|
|
| Sind | Mental styrke | +1 (Enhjørning) |
|
|
| Charme | Social styrke | +1 (Alicorn) |
|
|
|
|
**Formel:** `target = 6 - stat + penalty - talent_bonus`
|
|
|
|
| Sværhed | Penalty |
|
|
|---|---|
|
|
| Let | 0 |
|
|
| Normal | 1 |
|
|
| Svær | 2 |
|
|
|
|
## 🎮 Gameplay-flow
|
|
|
|
Hvert tema har **5 scener** med fast mønster:
|
|
|
|
1. **Terningkast** — let/normal sværhed
|
|
2. **Valg** — 4 muligheder (modig/klog/ven/magi)
|
|
3. **Farvergætning** — 4 farver, 1 korrekt
|
|
4. **Terningkast** — normal/svær sværhed
|
|
5. **Hukommelse** — husk et tal fra tidligere i historien
|
|
|
|
## 🚀 Kom i gang
|
|
|
|
### Krav
|
|
- Python 3.10+
|
|
- Node.js 18+
|
|
- npm
|
|
|
|
### Backend
|
|
|
|
```bash
|
|
cd web
|
|
python -m venv .venv
|
|
source .venv/bin/activate
|
|
pip install flask gunicorn
|
|
# Start serveren
|
|
python -m app
|
|
```
|
|
|
|
### Frontend
|
|
|
|
```bash
|
|
cd pony-frontend
|
|
npm install
|
|
npm start
|
|
```
|
|
|
|
## 🌐 API
|
|
|
|
| Endpoint | Metode | Beskrivelse |
|
|
|---|---|---|
|
|
| `/api/start` | POST | Start nyt spil `{type, tema, navn?}` |
|
|
| `/api/kast` | POST | Kast terning for nuværende scene |
|
|
| `/api/interact` | POST | Farve/tal/valg `{selection}` |
|
|
| `/api/scene` | GET | Hent nuværende scene |
|
|
| `/api/reset` | POST | Nulstil spil |
|
|
| `/api/content` | GET | Pony-typer og temaer |
|
|
| `/api/health` | GET | Health check |
|
|
| `/api/tts` | POST | Dansk talesyntese |
|
|
| `/api/v1/games/{id}/voice` | POST | Audio-svar (STT + intent) |
|
|
| `/api/v1/games/{id}/voice/text` | POST | Tekst-svar |
|
|
|
|
## 📊 Balance
|
|
|
|
| Pony-type | Bonus | Sejr-rate |
|
|
|---|---|---|
|
|
| Jordpony | +1 krop | 40% |
|
|
| Pegasus | +1 krop | 45% |
|
|
| Enhjørning | +1 sind | 53% |
|
|
| Alicorn | +1 alle | 56% |
|
|
|
|
**Samlet sejr-rate:** 48% (mål: 40-60%)
|
|
|
|
## 📁 Vigtige filer
|
|
|
|
- `web/app/game/dice.py` — terningsystem
|
|
- `web/app/data/themes.py` — 8 temaer, 5 scener hver
|
|
- `web/app/services/game_service.py` — scene-orchestration
|
|
- `web/app/routes/api.py` — REST endpoints
|
|
- `web/app/services/text_to_speech.py` — TTS
|
|
- `pony-frontend/src/App.js` — hovedkomponent
|
|
- `pony-frontend/src/components/VoiceButton.js` — stemmeknap
|
|
- `pony-frontend/src/services/voiceFlow.js` — stemme-flow
|
|
|
|
## 📝 Udvikling
|
|
|
|
Se [DEVELOPER_NOTES.md](DEVELOPER_NOTER.md) for detaljer om terningsystem, balance, og UI.
|
|
|
|
## 📄 Licens
|
|
|
|
Projektet er open source. |