30 lines
1.7 KiB
Markdown
30 lines
1.7 KiB
Markdown
# 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: `FileModuleResolver`
|
|
abschalten, `eval()` deaktivieren, CPU- und Memory-Limits setzen. Bei mlua: niemals `Lua::new()`,
|
|
sondern `new_with` mit ausgewählten Libs, `load`/`loadstring`/`dofile`/`require` entfernen,
|
|
`ChunkMode::Text` erzwingen.
|
|
- **Wie geht das Projekt mit den Rhai-Risiken um** — Bus-Faktor 1, Unsoundness-Issue #894 seit 2024,
|
|
`smartstring` unmaintained (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.
|