Hierbei handelt es sich insbesondere um in lua (luajit-2.0) geschriebene Spielerweiterungen. Ich überlegte, ob ich die Möglichkeiten dieser Skripte einschränken sollte, und kam zu dem Schluss, dass ich das wahrscheinlich nicht tun sollte:
Es ist schwer, richtig zu machen. Klingt albern, aber wahrscheinlich wird mein Sandkasten trotzdem undicht.
Der einzige Vorteil, den ich mir vorstellen kann, besteht darin, den Benutzern ein gewisses Sicherheitsgefühl beim Ausführen von Skripten von Drittanbietern zu geben.
Die Nachteile wären, dass es für Erweiterungsschreiber einfach unglaublich nervig ist. Das bin vorerst ich selbst (Spielinhalte werden meistens mit Skripten erstellt).
Der Grund, warum ich dies jetzt frage, bevor ich tatsächlich etwas Vorzeigbares habe, ist, dass das frühzeitige Hinzufügen eines Sandkastens einfach ist, mir aber auch die nervigen Einschränkungen auferlegen würde. Wenn ich jedoch zuerst weitermache und später entscheide, dass ich doch eine Sandbox benötige, werde ich auf Probleme stoßen (entweder müsste ich die bereits vorhandenen Skripte neu schreiben oder eine Art Vertrauensverwaltungssystem einführen das scheint mehr Ärger zu sein als es wert ist).
quelle
Antworten:
Ich glaube, dass sowohl die Entwicklung eines Videospiels, bei dem der Programmierer bei jeder Softwareentwicklung mit mittleren bis großen Dimensionen immer versuchen wird, einen Ebenenaustausch oder freie Optionen für zukünftige Funktionen zu erstellen.
Lua ist eine Sprache, mit der diese Optionen für den Endbenutzer und den Entwickler einfach zu implementieren sind. Dies bedeutet jedoch nicht, dass es einfach ist, Ihren Arbeitsbereich zu planen. Mit der Erfahrung, die ich Ihnen heute sagen kann, kann auch eine einfache Multiplikation auslaufen. wenn der Endbenutzer sein Verhalten anpassen darf.
Wenn wir uns auf das konzentrieren, was ein Sandbox-Spiel zu bieten hat, können wir verstehen, dass der Endverbrauch ein Double-Blade sein kann, wodurch das Spiel nichtlinear, interessant und unterhaltsam wird , aber gleichzeitig kein einfacher Plan ist ihre Grenzen im Arbeitsbereich.
Aus Sicherheitsgründen klingt es fantastisch! Eine gute Testumgebung für Erweiterungen sollte in allen Arten von Software implementiert werden.
quelle
Es ist eigentlich nicht sehr schwierig, eine einfache Sandbox mit einer Whitelist von Funktionen zu erstellen und dann benutzerdefinierte Implementierungen potenziell unsicherer Funktionen hinzuzufügen. Diese SO-Frage scheint ein guter Ausgangspunkt zu sein.
Ich denke, es würde ausreichen, um einige grundlegende Sicherheitsvorkehrungen zu treffen: den Zugriff auf Dateien außerhalb einiger spezieller Verzeichnisse einzuschränken. Es gibt sowieso keine 100% sicheren Anwendungen. Überlegen Sie, was passieren kann, wenn jemand eine böswillige Erweiterung schreibt: Benutzer werden Sie wahrscheinlich als Entwickler beschuldigen. Wenn Sie jemandem die Möglichkeit geben möchten, eine Erweiterung zu schreiben, benötigen Sie möglicherweise Sicherheit. Wenn es nur Sie sind, ist es in Ordnung, wie es ist.
Dies ist genau der Grund, warum Sie Sandboxing betreiben sollten, und es ist kein gültiges Argument gegen Sandboxing.
Ich habe einige Erfahrung mit Game Scripting und finde es nicht ärgerlich, alleine in einer Sandbox-Umgebung zu arbeiten. Was mich ärgert, ist der Mangel an spielbezogenen Funktionen, wie bestimmte APIs von In-Game-Objekten oder schlechte Implementierungen solcher.
Es kann hilfreich sein, wenn Sie sich die LOVE- Engine als gutes Beispiel ansehen (falls Sie dies noch nicht getan haben), insbesondere das Tutorial zur Dateisystem-API .
quelle