Idee für ModAPI (Meinung von Moddern gewünscht)

    Unser Forum verwendet Cookies. Durch die Nutzung unserer Seite erklärst du dich damit einverstanden, dass wir Cookies setzen. Datenschutzerklärung.


    Entscheidet mit wie es mit dem Forum in Zukunft weitergehen soll -> Status & Umfrage

      Idee für ModAPI (Meinung von Moddern gewünscht)

      Heyho,

      Wollte mal fragen, wie ihr folgenden Ansatz einschätzt und ob er für Modder bequem genug ist.

      Erst einmal gibt es das CreateModLib Tool. Dieses Tool nimmt die aktuelle Version von The Forest (somit bleibt die Mod API versionsunabhängig) und erstellt quasi Leercode aus den vorhandenen Klassen. Der entstandene Code wird in eine dll kompiliert und fungiert dann als ModLib.

      In seinem Projekt fügt man nun einen Verweis zu dieser ModLib hinzu und kann dort dann Subclasses der in der ModLib existenten Klassen erstellen.

      Wenn ich z.B. die TheForestAtmosphere ändern möchte, würde die Klasse folgendermaßen aussehen;:

      Quellcode

      1. public class Mod_TheForestAtmosphere : TheForestAtmosphere {
      2. overwrite public void TimeLapse() {
      3. doSomethingBeforeOriginalCode;
      4. base.TimeLapse();
      5. doSomethingAfterOriginalCode;
      6. }
      7. }


      Den Originalcode kann man dann natürlich entfernen, indem man die base.TimeLapse() nicht mehr aufruft. Zusätzlich wird es wohl noch das ein oder andere Attribut geben, um z.B. Inkompatibilitäten zu umgehen zwischen mehreren Mods oder eben Mods auch als inkompatibel mit Mod XY zu flaggen.

      Nun benutzt man das CreateMod Tool, welches den erstellten Code in eine .mod-Datei schreibt, in der sich der IL Code und Anweisungen für den ModLoader befinden, wie dieser einzufügen ist.

      Der Benutzer wählt nun aus einer Liste an Mods aus und der ModLoader deassemblet die CSharp-Assembly.dll, fügt den IL Code an den richtigen Stellen ein, assemblet sie wieder und startet das Spiel.

      Ist das Modder- und Userfreundlich genug?
      Vielleicht kann ich auch ermöglichen, mitten in die Methoden Code zu injecten.
      Würde das dann vermutlich mit Attributen regeln. In etwa so:

      Quellcode

      1. [Inject(Method="TimeLapse", After="0x006")]
      2. public void test() {
      3. //code
      4. }


      Ist dann aber für fortgeschrittenere Benutzer. Man muss sich dafür den IL Code der Assembly anschauen und genau sagen, nach welchem Statement der Code eingefügt werden soll. ^^

      Aber vorallem wichtig für mich:
      Das Ding soll mit allen Versionen funktionieren. Möchte das nicht immer wieder anpassen.

      Vorteil: Es ist eine ModLibrary für JEDES Unity oder allg. Managed .NET basierendes Spiel. ^^ Sprich: Man wird meine ModLoader dann bei vielen Spielen sehen und bekommen. Bei Unity Spielen einfach 0800-SOULDRINKER anrufen ;D
      Aktuell gibt es doch gar keine funktionierende ModAPI Version soweit ich weiss (grade nochmal nachgesehen: Nein, noch gibt es nichts Neues)? Bleibt abzuwarten wann Souldrinker da eine neue Version bringt, denn soweit ich weiss ist er beruflich und privat stark eingespannt.

      LG, die Axt :)
      Von mir verfasste Beiträge befinden sich unter der Creative Commons Lizenz 3.0
      •[ Profil im The Forest Forum & Profil im Stranded Deep Forum ]•