Hey, kann mir jemand sagen was für ein unterschied ein Mod und ein Plugin hat.
Und welche Programmiersprache wird es in der neue Version, Immer noch java?
Hey, kann mir jemand sagen was für ein unterschied ein Mod und ein Plugin hat.
Und welche Programmiersprache wird es in der neue Version, Immer noch java?
Die Grenzen zwischen Mods und Plugins sind manchmal fließend, und auch der "Mod" Begriff wird häufig weit gefasst. Auf RW bezogen kann man es sich aber so vorstellen:
Modding (also klassisches Modding) war in RW schon immer möglich und wird auch immer möglich bleiben, aber hierfür sind fundierte Programmierkenntnisse, viel Zeit und Geduld sowie Nerven aus Stahl nötig. Daher ist unsere Priorität, die Plugin-API voranzutreiben.
Die neue Version ist zwar in C# und C++ geschrieben, aber für die Plugin-API werden wir weiterhin auf Java setzen. Wir haben uns zwar lange Gedanken dazu gemacht, aber Java bietet in diesem konkreten Fall mit Abstand die meisten Vorteile:
Über Java ist es grundsätzlich aber auch möglich, Skriptsprachen einzubinden. Wir haben damals begonnen, einen Lua-Wrapper als Plugin zu schreiben (damit wir Lua endlich hätten rauswerfen können, durch den Wrapper hätten Leute aber weiterhin Lua Skripte laden und benutzen können). Wenn man das benutzt fallen die Geschwindigkeitsvorteile natürlich wieder weg (denn die Skriptsprache wäre dann wieder der Flaschenhals), aber der Vorteil von Skriptsprachen ist natürlich, dass diese einfach zu bedienen sind
Danke erstmal für die umfangreiche Antwort.
Das bedeutet der unterschied zwischen eine mod und einem Plugin nicht so groß, außer das mods schwieriger sind zu programmieren. Heißt es dann, dass ich mit einem Plugin ein Auto programmiere und das Plugin auf einem Server installieren kann wenn die API die Funktion dafür hat?
Heißt es dann, dass ich mit einem Plugin ein Auto programmiere und das Plugin auf einem Server installieren kann wenn die API die Funktion dafür hat?
Wenn die API das unterstützt, dann ja Wobei es natürlich auch immer einen gewissen Spielraum gibt, den man dabei hat. Denn auch wenn es in der API keine direkte "FügeAutoHinzu()" Funktion gibt, so kann man versuchen, das anderweitig umzusetzen: In dem Fall könnte man zB das Modell eines Autos laden (das kann die API bereits) und darauf warten, dass ein Spieler damit interagiert. Das Plugin könnte sich nun für diesen Spieler merken, dass dieser in einem Auto sitzt, und die Spielerposition entsprechend regelmäßig updaten (an die Position des Fahrersitzes setzen). Wenn der Spieler nun zB die Vorwärtstaste betätigt, dann könnte man das Auto-Modell (mitsamt) Spieler nach vorne bewegen, beim Lenken entsprechend drehen usw. Bis hierhin ist alles auch mit der jetzigen API bereits möglich. Schwieriger wird es, das Auto an das Terrain anzupassen und Kollisionen richtig zu behandeln (wenn der Spieler zB gegen eine Wand fährt). Hier sind zwar einzelne Funktionen für sowas bereits in der API (zB raycast()), aber das wird trotzdem kompliziert - und stößt teilweise an die Grenzen. Neue Funktionen, die im Laufe der Zeit zur API hinzukommen, werden das sicherlich einfacher machen, aber es würde sich bei so einem Unterfangen trotzdem um ein sehr umfangreicheres Plugin handeln.
Anders sieht es aus, wenn es bereits Fahrzeuge im Spiel gibt: Dann kann die API eher die Funktionen dazu bereitstellen (womit die Umsetzung eines solchen Plugins 100x einfacher wird). Dann könnte ein Plugin zB sein eigenes Modell einfügen, das Verhalten an das eines im Spiel bestehenden Autos anpassen, und das wars dann auch schon So funktioniert das derzeit zB mit den Custom Items: Man kann recht einfach eine neue Spitzhacke oder ein neues Schwert einbauen (weil es sowas bereits im Spiel gibt), aber wenn man einen Flammenwerfer einbauen möchte, wird es kompliziert (weil es keine noch Mechanik für sowas im Spiel gibt).
Du musst dir das immer so vorstellen, dass die API quasi nur bestehende Funktionen bereitstellen kann. Wenn du eine Funktion in der API aufrufst, kümmert sich das Spiel im Hintergrund um den Rest. Daher kann die API prinzipiell nur das bereitstellen, was das Spiel auch bereits kann.
ZB über ein Plugin eigene Sounds abspielen ist möglich (weil das Spiel weiß, wie man Sounds abspielt), aber bspw. Gamepad-Support über ein Plugin einbinden ist nahezu unmöglich.
Von den Dingen, die das Spiel kann und weiß, versuchen wir, so viel wie möglich über die API zugänglich zu machen, aber fehlende Funktionen fallen meist erst dann auf, wenn man selber ein Plugin schreibt (was wir aus Zeitgründen ja nicht so häufig machen). Dafür haben wir entsprechend die API-Wünsche Sektion^^
Wird es den Lua-Wrapper noch geben?
Wird es den Lua-Wrapper noch geben?
Das kann ich nicht sagen, theoretisch möglich wäre das schon, kommt ein wenig auf die Nachfrage drauf an. Eigentlich wollen wir Lua aber nicht unbedingt als Skript-Sprache für RW pushen, da hier viel Performance verschenkt wird (Hauptproblem ist die fehlende Multi-Threading-Funktionalität, die für RW extrem wichtig ist). Aber auch wenn wir den Lua Wrapper anbieten, müssten bestehende Lua Skripte voraussichtlich trotzdem etwas angepasst werden, damit sie mit der neuen Version kompatibel sind
Wäre schön, wenn das jemand machen würde.
Don’t have an account yet? Create a new account now and be part of our community!