Online-Tool für Fabula Ultima unter Freunden: Der GM und die Spieler sehen verschiedene Oberflächen, der Spielstand ist über Firebase live synchron. Reines HTML/CSS/JavaScript, kein Build-Schritt.
python tools/serve.py # http://localhost:8000
Die Seite muss über einen Server laufen (nicht per Doppelklick auf index.html), weil der
Browser JavaScript-Module sonst blockiert. tools/serve.py bearbeitet mehrere Anfragen
gleichzeitig und schaltet das Zwischenspeichern aus.
| Ordner/Datei | Inhalt |
|---|---|
index.html |
Startbildschirm und Spielbildschirm (feste Bühne 1920 × 960 px) |
css/ |
main.css Grundlagen, layout.css Bühne und Kartenfläche, panel.css Spieler-Panel, gm.css GM-Panel und Texturfärbung, login.css Startbildschirm |
js/ |
Spiellogik, je Datei eine Aufgabe (siehe unten) |
data/ |
characters.json, scenarios.json, music.json |
assets/ |
images/ (Karten und Szenenbilder), sprites/, textures/, music/ |
tools/ |
Hilfsskripte (Python) |
main.jsverbindet alles,firebase.jsundgameState.jssprechen mit Firebase,login.jsmeldet an.overworld.js(Karte, Kamera, Fog of War),scene.js(Szenarien, Sprites, Konflikt),effects.js(Angriff/Zauber/Heilung).playerPanel.jsundgmPanel.jsbauen die beiden Oberflächen,charEditor.jsdas Pop-up für Maximalwerte.config.jsenthält Größen, Startpositionen der Sprites und Effektpositionen.dom.jsenthält gemeinsame Hilfsfunktionen.
- Sprite-Größen, Startpositionen, Effektpositionen:
js/config.js - Farben der Buttons (Ocker, Grün, Rot):
css/gm.css, ganz oben (--tint) - Schrift:
css/main.css, im Blockbody(Buttons und Felder übernehmen sie über die Regelfont-family: inherit) - Dauer der Effekte:
js/effects.js(EFFECT_MS)
Pro Spielercharakter ein Ordner in assets/sprites/<Ordner>/:
portrait.png (128 × 128), idle.png, attack.gif, spell.gif, heal.gif.
NPCs: assets/sprites/NPCs/<Name>.png, Monster: assets/sprites/Monster/<Name>.png.
Feste Werte stehen in data/characters.json, aktuelle Werte (LP, GP, IP, Fabula, Züge) liegen im Spielstand in Firebase.
Titel in assets/music/ ablegen, dann python tools/update_music_list.py ausführen.
Es schreibt data/music.json mit Kurznamen (Schlüsseln), die Szenarien und config.js verwenden.
- Anmeldung: E-Mail/Passwort, Konten heißen
<id>@fabula.local(gm@fabula.localund je Charakter dieidausdata/characters.json). Die Adresse existiert nur als Platzhalter. - Der Spielstand liegt im Dokument
games/main(Firestore). - Der Web-API-Schlüssel in
js/firebase.jsist öffentlich vorgesehen. In der Google Cloud Console sollte er auf die eigenen Adressen beschränkt werden (HTTP-Referrer).
tools/update_music_list.py: Musikliste neu erzeugentools/gif_tool.py: Bildrate eines GIFs anzeigen, verlangsamen oder nur einmal abspielentools/serve.py: lokaler Entwicklungsserver