|
|
Scriptänderungen ohne Neukompilierung...
#240753
12/12/08 10:47
12/12/08 10:47
|
mercuryus
OP
Unregistered
|
mercuryus
OP
Unregistered
|
Ich muss ein Produkt entwickeln bei dem nachträglich die Scripte der Entites abgeändert sowie neue Funktionen hinzugefügt werden können, ohne die Applikation neu zu compilieren.
Geht das mit GS und wenn ja wie? (wenn ja bitte etwas detailierter als "ja, verwenden sie 'execute()'" wenn möglich)
Meine Ansätze... - execute() als Interpreter verwenden; - einen LUA-Interpreter implementieren - ...
|
|
|
Re: Scriptänderungen ohne Neukompilierung...
[Re: jcl]
#240770
12/12/08 12:59
12/12/08 12:59
|
Joined: Jan 2007
Posts: 651 Germany
RedPhoenix
User
|
User
Joined: Jan 2007
Posts: 651
Germany
|
Du müsstest den LiteC Compiler wrappen, der quasi dann auf Klick aus deinem Programm heraus das Script neuberechnet. Ich denke es wäre möglich (mithilfe des Gamestudio SDK), kann dir aber nicht sagen, wies geht  . Aufwendige Lösung: Erstell ein Script, das eine textdatei einliest und die Textfolgen als Enginebefehle interpretiert, also nach dem Motto: if (str_cmp(input,"ent_create" == true) ent_create... Wäre aber SEEEEEEEHR aufwendig. Aber wenn ich deine Absicht richtig verstehe, wirft das ganze ein anderes Problem auf: Wenn du in einem von der Engine erstellten Programm die Möglichkeit zulässt, dieses zur Scripterweiterung zu nutzen, duplizierst du dann nicht die Engine an sich? Machst es also mit Vertrieb deines Produktes möglich, ohne die Engine zu besitzen, deren Funktionen zu nutzen? Dies wäre nach meinem Verständnis der A7 Lizenz illegal. Was du tun könntest: Erfinde deine eigene Scriptsprache für dein Produkt und erstelle einen Interpreter deiner Befehle, der diese dann als LiteC Anweisungen ausführt (das ist kein Witz) Ich hoffe das hat dir weitergeholfen und ist nicht an deinem Problem vorbeigegangen.
|
|
|
Re: Scriptänderungen ohne Neukompilierung...
[Re: Joey]
#240827
12/12/08 20:19
12/12/08 20:19
|
Joined: Sep 2005
Posts: 980 Aue, Sachsen, Germany
Wicht
User
|
User
Joined: Sep 2005
Posts: 980
Aue, Sachsen, Germany
|
@JCL: Autsch. Eigentlich wollte ich Ihnen eine passende Antwort servieren. Da aber bald Weihnachten ist und alle etwas freundlicher sein sollten, lasse ich das mal an der Stelle.
@Mercuryus: In Torque ist diese Möglichkeit von Anfang an in der Engine enthalten. Du kannst Scripte zur Laufzeit hinzufügen und sofort verwenden. Bereits hinzugefügte Scripte, deren Quellcode aber zwischenzeitlich geändert wurde, lassen sich, während die Engine läuft, aktualisieren. Damit sind Änderungen an Funktionen sofort wirksam, ohne die Engine jedes mal neu starten bzw. neu compilieren zu müssen.
PM, wenn Du mehr wissen möchtest.
|
|
|
Re: Scriptänderungen ohne Neukompilierung...
[Re: ChrisB]
#240898
12/13/08 09:23
12/13/08 09:23
|
Joined: Sep 2005
Posts: 980 Aue, Sachsen, Germany
Wicht
User
|
User
Joined: Sep 2005
Posts: 980
Aue, Sachsen, Germany
|
@Joey: Mercuryus hat eine ganz normale, vernünftig formulierte, Frage gestellt und wird trotzdem von Herrn Lotter runtergebuttert. Eventuell solltest Du darüber mal nachdenken.
@ChrisB: Gute Idee, fragt sich nur, ob das Mercuryus auch will, da auch DLLs kompiliert werden müssen. Möglicherweise soll der Endanwender selbstständig Code austauschen können. Denkbar wäre ein einfaches System für Schüler, um Programmierung zu lernen.
|
|
|
Re: Scriptänderungen ohne Neukompilierung...
[Re: ]
#240900
12/13/08 09:51
12/13/08 09:51
|
Joined: Nov 2004
Posts: 7,121 Potsdam, Brandenburg, Germany
Machinery_Frank
Senior Expert
|
Senior Expert
Joined: Nov 2004
Posts: 7,121
Potsdam, Brandenburg, Germany
|
Wow, das ist traurig. Da stellt ein langjähriger treuer Kunde eine Frage mit bereits klaren Alternativen, auf die man eingehen kann, und es kommt eine, naja, sagen wir unbrauchbare Antwort mit anschließenden Unflätigkeiten, wo anderen hilfsbereiten Leuten Fieberwahn vorgeworfen wird. Sehr traurig. Natürlich kann es sinnvoll sein, Skripte zur Laufzeit zu ändern. Das könnte z.B. ein Spiel sein, in dem der Spieler die KI eines Roboters ändert, es könnte ein Lernprojekt sein, es könnte aber auch einfach nur sein, dass man selber für seine sehr anspruchsvolle Funktionalität zur Laufzeit Anpassungen vornimmt, die über einzelne Parameter hinausgehen. Jetzt zum Thema: Meine Ansätze... - execute() als Interpreter verwenden; - einen LUA-Interpreter implementieren - ... Ich würde hier wohl auch den Weg über LUA oder Python empfehlen.
Models, Textures and Games from Dexsoft
|
|
|
|