1.7 KiB
1.7 KiB
13 — Script-Engine wählen und Sandbox härten
Type: grilling Status: open Blocked by: 01
Question
Rhai oder mlua — und wie wird die gewählte Engine abgedichtet?
Ticket 05 hat die Fakten geliefert und Rhai empfohlen. Die Entscheidung steht noch aus, und sie hängt bewusst an 01: Reden Scripts ausschließlich über das Effekt-Vokabular, ist die Wahl später umkehrbar; reichen sie tiefer in den Game-State, ist sie es nicht. Zu klären:
- Ist das Effekt-Vokabular die einzige Schnittstelle für Scripts? Wenn ja, ist die Engine-Wahl eine Implementierungsentscheidung statt einer Architekturentscheidung.
- Zielgruppe: „gut moddbar für einen kleinen Kreis" spricht für Rhai, „möglichst viele fremde Mods" für Lua. Das ist die Frage, an der die Empfehlung kippt.
- Vertraust du fremden Mods? Bei feindlichen Mods ist Luau der einzige echte Sandbox — zum Preis einer C++17-Toolchain und eines Lua-Dialekts.
- Härtungs-Checkliste für die gewählte Engine festlegen. Bei Rhai mindestens:
FileModuleResolverabschalten,eval()deaktivieren, CPU- und Memory-Limits setzen. Bei mlua: niemalsLua::new(), sondernnew_withmit ausgewählten Libs,load/loadstring/dofile/requireentfernen,ChunkMode::Texterzwingen. - Wie geht das Projekt mit den Rhai-Risiken um — Bus-Faktor 1, Unsoundness-Issue #894 seit 2024,
smartstringunmaintained (RUSTSEC-2026-0249)? Akzeptiert, beobachtet, oder Ausschlusskriterium? - Wann fällt die Entscheidung endgültig — jetzt, oder erst wenn Mod-Stufe (c) gebaut wird?
Ergebnis: gewählte Engine mit Begründung, Härtungs-Checkliste, und die Regel, was Scripts sehen dürfen.