| demo | ||
| src | ||
| test | ||
| vorlagen | ||
| .gitignore | ||
| index.js | ||
| logik.js | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| spiel.json | ||
| vite-pwa.js | ||
| vite.config.js | ||
| vitest.config.js | ||
funke ⚡
Kleine 2.5D-Spiel-Engine für den Familien-Spielplatz. Dünne Schicht über Phaser 3: isometrische Welt, Einheiten mit Wegfindung, Auto-Kampf, Touch-Bedienung, Login + Spielstände über den Spielserver.
Gedacht für Spiele, die Kinder zusammen mit Claude entwickeln —
siehe vorlagen/ für die Kind-Dokumente, die jedes Spiel-Repo bekommt.
Benutzung in einem Spiel
"dependencies": {
"funke": "git+http://<SERVER-IP>:3000/spielplatz/funke.git#v0.1.0"
}
import { startSpiel, IsoWorld, Building, Unit } from 'funke'
Öffentliche API: siehe index.js. Ein vollständiges Beispiel ist demo/main.js.
Als App installierbar machen (PWA)
Ein Spiel wird "installierbar" (am Handy „Zum Startbildschirm", startet dann im
Vollbild wie eine App und lädt dank Cache blitzschnell) mit funke/vite-pwa:
// vite.config.js des Spiels
import { funkePWA } from 'funke/vite-pwa'
export default defineConfig({
base: './',
plugins: [ funkePWA({ name: 'Clash of Karls', themeColor: '#1a1c2c' }) ],
})
Das Spiel legt drei Symbole in seinem publicDir (z.B. bilder/) ab:
icon-192.png (192×192), icon-512.png (512×512), favicon.png.
Manifest + Service-Worker erzeugt der Build dann automatisch.
Entwickeln an der Engine
npm install
npm run dev # Demo mit Hot-Reload (localhost:5173)
npm test # Vitest: Iso-Mathe, Wegfindung, Kampf
npm run build # baut die Demo nach dist/ (macht der Deployer beim Push)
Regeln:
- Reine Logik (Mathe, Wegfindung, Kampf) bleibt Phaser-frei und getestet.
- Nichts Spiel-Spezifisches in die Engine — keine Ressourcennamen, Einheitentypen oder Siegregeln. Das gehört in die Spiel-Repos.
- Bilder werden nur über Manifest-Schlüssel angesprochen; fehlende Bilder
bekommen automatisch Platzhalter (
src/textures.js). - Release = Git-Tag (
v0.1.0,v0.2.0, …); Spiele pinnen einen Tag.