Plugin-System zwecks Skripting

Kein Durchblick im Quellcode von Ja2? Hier werden sie geholfen.

Moderator: Flashy

Plugin-System zwecks Skripting

Beitragvon lochkartenman » 19. Aug 2006 18:11

Hallo alle Zusammen!

Im Thread "V 1.13 - einfach cool!" wurde vor einigem Geplänkel die Frage nach Skriptingmöglichkeiten aufgeworfen.

Ich habe da - weil ich mich mit C nun gerade nicht auskenne (nur VB.NET und bescheidene C++ Kenntnisse) folgende Frage:

Ist es möglich mit C eine Art PluginArchitektur aufzubauen? Mit Schwebt dabei folgendes vor: ein Plugin in Form einer DLL in der ein oder mehrere Interfaces definiert sind, über die/das bestimmte Infos abgerufen und auf Ereignisse reagiert werden kann. Ich habe sowas bei einem Civ2-Clon namens CEvo gesehen. >>>Link<<< Dort wird über eine solche Plugin-Architektur die KI ins Spiel eingebunden.

Ich bin mir schon darüber im Klaren, dass der Aufwand für ein deratiges System nicht unerheblich sein würde, letztlich scheint es jedoch doch sehr verlockend, da man so beinahe unbegrenzte Möglichkeiten für anspruchsvolles Skripting hätte, entsprechende Interfaces vorausgesetzt.

Richiger Programmcode (nicht irgendeine Skriptsprache) hätte außerdem den Vorteil das die Anzahl der Zustandsvariablen beinahe unbegrenzt wäre. Auch der Zugriff auf externe Resourcen wie Schlüssel wäre so viel einfacher.

Gruß
Arne

PS: alles natürlich vorerst nur Ideenfindung.
PS: hoffe das klappt diesmal mit dem Post... sorry falls doch Doppelpost
lochkartenman
Kanonenfutter
 
Beiträge: 13
Registriert: 19. Aug 2006 09:12

Beitragvon shadow the deat » 20. Aug 2006 22:41

Ehm um es echt sinnvoll zu machen musst du viele Teile das Sources rewriten
was ewig dauert wird da du kein Team finden wirst was die nötigen Kenntnisse und dazu auch noch Zeit hat.

Die XML Geschichte ist glaub ich echt das beste von Aufwand und Zeit



Der einzige Riesige Vorteil wär es für die Modder das wichtige Feature einfach über dll getauscht werden und somit jeder die Neuerungen einfügen kann
:lhdevil: :uriel: Führer der SoS :lhdevil: (soldiers of shadow)

:lhdevil: Enominis Satanis :lhdevil:

Die Your God is Dead
Behold Satans Rise :hail:


(Action)Gamer für Gewalt und Terror :k:
shadow the deat
Alpha-Squad
 
Beiträge: 1593
Registriert: 1. Feb 2002 19:22

Beitragvon lochkartenman » 21. Aug 2006 07:08

hmmm

ich meine eigentlich auch nicht, alle Daten eines Mods in die DLL zu packen. Da sind die XMLs schon der beste Ansatz.

Eher so Sachen wie Skripte und Trigger könnten damit gemacht werden.

Stell mir das (am Beispiel von Map-Triggern) so vor:
in der Map wird für jedes Tile eine Reihe von Flags gesetzt z.B. für OnMercEnterTileTrigger = TRUE; tritt dieses (oder beliebige andere) Ereignisse ein, wird diese Funktion in der DLL aufgerufen (mit entsprechenden Parametern: welcher Merc, welches Tile, welcher Sektor etc.) und der Modder hat dann die Möglichkeit auf dieses Ereigniss in seinem eigenen Code zu reagieren. Zum Beispiel einfach ne Variable setzten, oder auch die Haltung einer Fraction zu ändern, oder, oder, oder...

Entsprechende "EventHandler" (auch wenn nicht 100%-tig korrekt von der Terminologie in diesem Zusammenhang) an allen Schlüsselstellen des Spiels würden es erlauben quasi beliebig eigenen Code auszuführen, ohne die EXE zu verändern.

Vorausgesetzt C kann das Prinzipiell (ist ja leider nicht objektorientiert), müsste man eigentlich nur an den entsprechenden Stellen eine weitere Code-Zeile einfügen... immer noch genug Aufwand aber immerhin.
Wichtig zu klären außderdem: kann man dann von einer solchen "externen" Funktion auch auf die Methoden und Funktionen in der EXE zugreifen...

Ein weiterer Aspekt: viele Modder scheint es zu stören, dass viele "Cheat-Optionen" über die INI gesteuert werden. Das Plugin-System würde es erlauben solche Einstellungen schlicht zu überschreiben - wiederum ohne die EXE zu verändern und das Prinzip INI-Datei ganz aufzugeben.


...alles nur Ideen - soll nicht als Anmaßung verstanden werden...

Gruß
Arne
lochkartenman
Kanonenfutter
 
Beiträge: 13
Registriert: 19. Aug 2006 09:12


Zurück zu Source Forum

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast