Sollten Skripte mit einer Abstraktion der Engine interagieren?

10

Ich verwende Java und Jython, und nach einigen Recherchen stellte ich fest, dass es ein Fehler sein könnte, Skripten direkten Zugriff auf die Engine-Oberfläche zu gewähren, da dies die beiden eng miteinander verbinden würde.

Es sieht so aus, als ob die meisten Skripte, mit denen Mods Entitäten erstellen und verwalten können, dies durch eine Art Abstraktion tun. Gibt es diese Abstraktionen aus diesem Grund oder nur, um Nicht-Programmierern eine intuitivere Möglichkeit zu bieten, das Spiel zu modifizieren?

Vaillancourt
quelle

Antworten:

7

Beides im Allgemeinen. Ihre Skripte sollten mit einer abstrahierten oder zumindest zwischengeschalteten Funktionsebene und nicht mit der Engine selbst kommunizieren.

Erstens bietet Ihnen dies ein zusätzliches Maß an Kontrolle und Sicherheit. Es ermöglicht Ihnen, einfach und sauber die Schnittstelle zu definieren, die ein Skript mit Ihrem Spiel haben darf, und damit, worüber es sich lustig machen kann, und es ermöglicht Ihnen, später zusätzliche Sicherheitsüberprüfungen in der Zwischenstufe durchzuführen, die in der Zwischenzeit nicht unbedingt angemessen wären eigentliche Funktionsschicht selbst.

Zweitens können Sie die Benutzeroberfläche für Skripte vereinfachen, um sie nicht programmiererfreundlicher oder allgemein einfacher zu verwenden.

Es bietet ein wenig Isolierung gegen die Kopplung zwischen den beiden, aber es ist oft keine so große Sache, da die Skripte von Natur aus immer an die Schnittstellen gekoppelt werden, mit denen sie interagieren dürfen. Die beiden anderen Punkte sind weitaus vorteilhafter.


quelle
3

Ich denke auch, dass es Ihnen hilft, wenn Sie Änderungen am Motor vornehmen möchten. Sie können dies tun, ohne sich Sorgen machen zu müssen, dass Sie alle Ihre Skripte ändern müssen, seit sich die Engine geändert hat. Sie müssen nur die von Josh erwähnte Abstraktionsschicht ändern.

Elie Haddad
quelle
1

Das Erstellen einer Ebene zwischen dem Kern des Spiels und den Skripten, die zum Erstellen von Änderungen verwendet wird, ist meiner Meinung nach erforderlich.

Mit dieser Methode erhalten Sie mehrere Vorteile:

Einfacher für Modder:
Ein guter Grund dafür ist, wie Sie bereits erwähnt haben, eine einfachere Möglichkeit, Mods zu erstellen. Das Schreiben von weniger Codezeilen bedeutet mehr Lesbarkeit und minimiert das Verständnis von Problemen beim Programmieren von Neulingen. Idealerweise sollte diese API eine Sammlung von Methoden sein, um etwas auf dem hohen Niveau des Spiels zu ändern . Dies bedeutet zum Beispiel: Eine Entität erzeugen, ohne zu wissen, wie sie wirklich erzeugt wird , oder ein Bild mit einem Aufruf anzeigen, bei dem nur der Bildname als Parameter verwendet wird.
Sie als Programmierer profitieren auch davon, da Sie in kürzerer Zeit mehr schreiben können , als Sie mit Java benötigen würden.

Sicherheit: Es
ist wichtig zu verhindern, dass Leute das ganze Spiel kontrollieren. Ich würde es egal, ob das Spiel ein Single - Player - Titel sein würde, aber ich würde interessieren , wenn das Spiel bekommen hat einig Multiplayer - Action. Auch wenn es nur eine Highscore-Tabelle ist.
Andere Menschen sind immer frustriert, wenn jemand aufgrund von Betrug gewinnt (zum Beispiel: Positionsänderungen, genauer: Positionsänderungen und direkte Flaggenbegrenzung). Spieler daran zu hindern, ist hier Ihre Hauptaufgabe.
Denken Sie daran, dass der Betrüger diesen Client immer dekompilieren, den Code ändern, neu kompilieren und mit ihm spielen kann. Fügen Sie daher Überprüfungen auf der Serverseite hinzu. Im Allgemeinen ist die bereitgestellte "Sicherheit" nur eine weitere, nicht 100% sichere Option, um Betrügern das Leben zu erschweren.

Marco
quelle