Das CODE-Panel von Adventure Land führt ausschließlich JavaScript aus. Python ist dort nicht nutzbar, obwohl die Spiel-API und der Runner-iframe dafür geeignet wären.
Ziel
Python als zweite Sprache im CODE-Panel – gleichberechtigt neben JavaScript und pro Code-Slot umschaltbar, kein globaler Runtime-Schalter:
Ein Char kann Python, ein anderer JavaScript laufen lassen – auch gleichzeitig im selben Browser-Tab.
Der Marker bleibt Teil der Datei (Server-Slot, VSCode-Sync, Kopie).
Bestehende JS-Slots laufen unverändert.
Lösungsvorschlag
Pyodide (CPython als WebAssembly) im vorhandenen /runner-Iframe; die bestehende JS-Spiel-API wird per Brücke durchgereicht. Kein Server-Port, keine Nachbau-API, keine Server-Ausführung von Spieler-Python.
Geplante Umsetzung in Sessions (Details im Branch feature/python-code unter ai/python-code/):
Pyodide gepinnt/offline; Rollback auf main erprobt.
Status
Planung abgeschlossen; Umsetzung noch nicht begonnen. Branch feature/python-code (Parent) existiert lokal, Client-Fork-Branch python-code noch nicht angelegt.
## Situation
Das CODE-Panel von Adventure Land führt ausschließlich JavaScript aus. Python ist dort nicht nutzbar, obwohl die Spiel-API und der Runner-iframe dafür geeignet wären.
## Ziel
Python als zweite Sprache im CODE-Panel – **gleichberechtigt neben JavaScript und pro Code-Slot umschaltbar**, kein globaler Runtime-Schalter:
- Zeile 1 `#!python` (oder `#!py`) ⇒ Python; ohne Marker ⇒ JavaScript (abwärtskompatibel).
- Ein Char kann Python, ein anderer JavaScript laufen lassen – auch gleichzeitig im selben Browser-Tab.
- Der Marker bleibt Teil der Datei (Server-Slot, VSCode-Sync, Kopie).
- Bestehende JS-Slots laufen unverändert.
## Lösungsvorschlag
Pyodide (CPython als WebAssembly) im vorhandenen `/runner`-Iframe; die bestehende JS-Spiel-API wird per Brücke durchgereicht. Kein Server-Port, keine Nachbau-API, keine Server-Ausführung von Spieler-Python.
Geplante Umsetzung in Sessions (Details im Branch `feature/python-code` unter `ai/python-code/`):
1. Spike: Pyodide im echten Runner (Go/No-Go)
2. Pyodide vendoren, pinnen, selbst hosten
3. Runner-Bridge: Sprachwahl, Events, Lifecycle, Fehler
4. Editor, JS/PY-Umschalter, Slots, Snippets-Abgrenzung
5. `al.py`-Fassade (Aktionen, Entities, Timer, Events)
6. In-Game-Doku + Beispiele (en/de)
7. Hardening: Performance, Multi-Char, E2E, Reconnect
8. Optional: 24/7 headless (separater Track, nicht v1)
9. Release, Fork-Sync, Rollback
## Akzeptanz (v1)
- `#!python` läuft im echten Spiel: `move`, `attack`, `use_skill`, `loot`, `smart_move`, Events.
- JS-Slot ohne Marker unverändert.
- JS + Python parallel pro Char/Slot.
- Tracebacks im CODE-Log mit Datei/Zeile.
- Speichern/Laden/VSCode-Sync erhalten den Marker.
- Pyodide gepinnt/offline; Rollback auf `main` erprobt.
## Status
Planung abgeschlossen; Umsetzung noch nicht begonnen. Branch `feature/python-code` (Parent) existiert lokal, Client-Fork-Branch `python-code` noch nicht angelegt.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Situation
Das CODE-Panel von Adventure Land führt ausschließlich JavaScript aus. Python ist dort nicht nutzbar, obwohl die Spiel-API und der Runner-iframe dafür geeignet wären.
Ziel
Python als zweite Sprache im CODE-Panel – gleichberechtigt neben JavaScript und pro Code-Slot umschaltbar, kein globaler Runtime-Schalter:
#!python(oder#!py) ⇒ Python; ohne Marker ⇒ JavaScript (abwärtskompatibel).Lösungsvorschlag
Pyodide (CPython als WebAssembly) im vorhandenen
/runner-Iframe; die bestehende JS-Spiel-API wird per Brücke durchgereicht. Kein Server-Port, keine Nachbau-API, keine Server-Ausführung von Spieler-Python.Geplante Umsetzung in Sessions (Details im Branch
feature/python-codeunterai/python-code/):al.py-Fassade (Aktionen, Entities, Timer, Events)Akzeptanz (v1)
#!pythonläuft im echten Spiel:move,attack,use_skill,loot,smart_move, Events.mainerprobt.Status
Planung abgeschlossen; Umsetzung noch nicht begonnen. Branch
feature/python-code(Parent) existiert lokal, Client-Fork-Branchpython-codenoch nicht angelegt.