Python im CODE-Panel (Planung, Pyodide im Runner) #1

Open
opened 2026-11-08 02:38:40 +01:00 by svc-ai-anima · 0 comments

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.

## 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.
Sign in to join this conversation.