embedded Perl: wer kennt Anwendungen, die Perl einbinden?
embedded Perl: wer kennt Anwendungen, die Perl einbinden?
am 06.04.2007 18:28:48 von Mai Kee
Hallo Perlen,
für ein Open Source Projekt (http://ja2v113.schtuff.com) soll ich=20
bewerten, welche einbettbare Scriptsprache wir für dieses Computerspiel=
=20
verwenden wollen.
Perl steht gegen LUA und Phyton ziemlich schlecht in der Diskussion dar,=20
weil ich nicht ein einziges Beispiel eines 'großen' (kommerziellen oder=
=20
ähnlich aufwändigen freien) Spiels nennen konnte, das seine Scripts ü=
ber=20
einen Perl-Interpreter verarbeitet.
Könnt Ihr mir welche nennen?
BTW:
auch bei den ernsthaften Anwendungen habe ich jenseits der Webserver nur=20
eine einzige größere Anwendung (einen Netzwerk-Sniffer) gefunden, die=
=20
sich über Perl scripten läßt.
man liest sich,
Mai
Re: embedded Perl: wer kennt Anwendungen, die Perl einbinden?
am 07.04.2007 08:15:31 von Christian Winter
Mai Kee schrieb:
> für ein Open Source Projekt (http://ja2v113.schtuff.com) soll ich
> bewerten, welche einbettbare Scriptsprache wir für dieses Computerspiel
> verwenden wollen.
>
> Perl steht gegen LUA und Phyton ziemlich schlecht in der Diskussion dar,
> weil ich nicht ein einziges Beispiel eines 'großen' (kommerziellen oder
> ähnlich aufwändigen freien) Spiels nennen konnte, das seine Scripts über
> einen Perl-Interpreter verarbeitet.
>
> Könnt Ihr mir welche nennen?
>
>
> BTW:
> auch bei den ernsthaften Anwendungen habe ich jenseits der Webserver nur
> eine einzige größere Anwendung (einen Netzwerk-Sniffer) gefunden, die
> sich über Perl scripten läßt.
Hi,
ich kann Dir zwar auch keine Games nennen, in denen Perl als
ScriptEngine implementiert ist, aber aufgrund der Erfahrungen
mit anderen Projekten würde ich empfehlen, die Schnittstelle so
austauschbar wie möglich zu machen.
Im Idealfall muss die Anwendung (also das Game selbst) nur vier
Schritte ausführen, nämlich DLL/SO laden, die Engine mit einer
Referenz auf das Game-/API-Objekt laden und initialisieren, das Skript
übergeben und ganz am Ende die Engine wieder zerstören.
Die Scriptengine selbst sollte alle notwendigen Definitionen aus
einer oder mehreren Header-Dateien ziehen, aus denen die notwendigen
Wrapper generiert werden.
Ob dann engine_load("LUA_rt.so") oder engine_load("PERL_rt.so")
ausgeführt wird, ist dann zweitrangig, gleichzeitig kann aber an
verschiedenen Engines gearbeitet werden ohne dass sich die einzelnen
Philosophien in die Quere kommen.
Eine Diskussion "A ist besser/B ist besser geeignet" wird ohnehin
darauf hinauslaufen dass eine momentane Mehrheit das Tool beschließt,
mit dem die meisten Erfahrungswerte vorhanden sind.
-Christian
Re: embedded Perl: wer kennt Anwendungen, die Perl einbinden?
am 07.04.2007 09:28:59 von Michael Panteleit
Mai Kee writes:
> Könnt Ihr mir welche nennen?
Frag doch mal bei den Perlmönchen auf http://perlmonks.org/
Wenn's von denen keiner weiß, wird's auch nichts geben :-)
Gruß,
Meikel
Re: embedded Perl: wer kennt Anwendungen, die Perl einbinden?
am 07.04.2007 22:51:34 von hjp-usenet2
On 2007-04-06 16:28, Mai Kee wrote:
> für ein Open Source Projekt (http://ja2v113.schtuff.com) soll ich
> bewerten, welche einbettbare Scriptsprache wir für dieses Computerspiel
> verwenden wollen.
>
> Perl steht gegen LUA und Phyton ziemlich schlecht in der Diskussion dar,
> weil ich nicht ein einziges Beispiel eines 'groÃen' (kommerziellen oder
> ähnlich aufwändigen freien) Spiels nennen konnte, das seine Scripts über
> einen Perl-Interpreter verarbeitet.
Wenn ich mich recht entsinne hat QCake (ein 3D-Game-Designer-Tool,
http://www.qcake.org/) ursprünglich Lua verwendet, dann aber als zu
restriktiv verworfen (jetzt wird SPL verwendet). Harald Krippel hat sich
damals mehrere Scriptsprachen angeschaut, möglicherweise kann er seine
Erfahrungen kurz zusammenfassen, wenn Du ihm eine Mail schreibst.
> auch bei den ernsthaften Anwendungen habe ich jenseits der Webserver nur
> eine einzige gröÃere Anwendung (einen Netzwerk-Sniffer) gefunden, die
> sich über Perl scripten läÃt.
Gimp dürfte wahrscheinlich die bekannteste in Perl scriptbare
Applikation sein.
hp
--
_ | Peter J. Holzer | Blaming Perl for the inability of programmers
|_|_) | Sysadmin WSR | to write clearly is like blaming English for
| | | hjp@hjp.at | the circumlocutions of bureaucrats.
__/ | http://www.hjp.at/ | -- Charlton Wilbur in clpm
Re: embedded Perl: wer kennt Anwendungen, die Perl einbinden?
am 10.04.2007 12:29:15 von Mirco Wahab
Mai Kee wrote:
> für ein Open Source Projekt (http://ja2v113.schtuff.com) soll ich
> bewerten, welche einbettbare Scriptsprache wir für dieses Computerspiel
> verwenden wollen.
>
> Perl steht gegen LUA und Phyton ziemlich schlecht in der Diskussion dar,
> weil ich nicht ein einziges Beispiel eines 'großen' (kommerziellen oder
> ähnlich aufwändigen freien) Spiels nennen konnte, das seine Scripts über
> einen Perl-Interpreter verarbeitet.
>
> Könnt Ihr mir welche nennen?
Eine Zwischenfrage. Was soll denn "geskriptet" werden,
inwieweit findet eine Interaktion zwischen internen (C++?)
Datenstrukturen und -Datenstrukturen statt?
> auch bei den ernsthaften Anwendungen habe ich jenseits der Webserver nur
> eine einzige größere Anwendung (einen Netzwerk-Sniffer) gefunden, die
> sich über Perl scripten läßt.
Möglicherweise ist es in den meisten Fällen umgekehrt.
Man Schreibt ein Perl-Programm und verwendet spezifische
Funktionalität (kompiliertes C++) als Modul.
Siehe auch http://search.cpan.org/
Ich selber "skripte" meine Simulationsprogramme
in Perl, d.h. ich linke perl58 in meine Anwendung
und rufe je nach Bedarf einfach Perl-Subroutinen
auf, wobei die Manipulation von Daten (hin und
zurück) überhaupt kein Problem darstellt.
Das funktioniert bei mir unter Linux/gcc4, Win32/
VisualC++-6 und Win32/VisualStudio2005 ohne jeden
Schmerz.
Ich hatte das mal in Python versucht (weil Mitarbeiter
gerne Python wollten), aber das Handtuch geworfen
(zu eingeschränkt, zu kompliziert).
Vielleicht ist es in 2.5 besser, das kann ich nicht
beurteilen. Zu Perl gibt es ausserdem ein ausge-
zeichnetes Handbuch für das "Perl Embedding", damit
konnte ich alle Fragen klären.
http://www.amazon.com/Extending-Embedding-Perl-Tim-Jenness/d p/1930110820
Aber am Ende wirst Du das nehmen müssen, was
die Kontributoren mögen ;-) Und "populärer"
ist Python derzeit sicherlich. Ich kann
das, nach meinen "Versuchen", nicht nach-
vollziehen, aber das ist wahrscheinlich
auch eine Frage des Geschmacks.
Viele Grüße
Mirco
Re: embedded Perl: wer kennt Anwendungen, die Perl einbinden?
am 13.04.2007 01:36:40 von Mai Kee
hallo Mirco, Du schriebst:
>Mai Kee wrote:
>> für ein Open Source Projekt (http://ja2v113.schtuff.com) soll ich
>> bewerten, welche einbettbare Scriptsprache wir für dieses Computerspiel
>> verwenden wollen.
>>
>> Perl steht gegen LUA und Phyton ziemlich schlecht in der Diskussion dar,
>> weil ich nicht ein einziges Beispiel eines 'großen' (kommerziellen oder
>> ähnlich aufwändigen freien) Spiels nennen konnte, das seine Scripts über
>> einen Perl-Interpreter verarbeitet.
>>
>> Könnt Ihr mir welche nennen?
>
>Eine Zwischenfrage. Was soll denn "geskriptet" werden,
>inwieweit findet eine Interaktion zwischen internen (C++?)
>Datenstrukturen und -Datenstrukturen statt?
wir wollen:
a) an diversen Punkten der bisherigen Anwendung Scripte aufrufen,
denen wir z.B. mitteilen: wo wir gerade sind, wen wir sehen, wieviel
Geld wir haben u.s.w.
b) an diversen Punkten der bisherigen Anwendung Scripte starten, die
die Möglichkeit haben, einige Variablen zu ändern, die bisher nur dem
C-Code selbst gehören. Einfachstes, hypothetisches Beispiel:
wenn Raum(X,Y) betreten, dann Geld += 1000;
c) den unter b) genannten Skripten auch ermöglichen, Funktionen
aufzurufen, die bisher nur dem C-Code gehören.Einfachstes,
hypothetisches Beispiel:
wenn Raum(X,Y) betreten, dann res=Dialog( Person(Z) );
wenn res==OKAY, dann Geld -= 10000;Team+=1;
Punkt c) zielt natürlich darauf ab, ersteinmal hart codierte
Funktions-Aufruf-Sequenzen aufzubrechen und Scripte zwischenzuschalten
die anfangs nichts anderes tun, als die selben Funktionen unter den
selben Bedingungen aufzurufen.
Das Aufrufen eines Perlinterpreters mit einer handvoll Parametern ist
in perlembed gut beschrieben. Aber das löst bestenfalls a) und auch
nur, wenn wir vorher unsere Variablen zu key=value-Paaren in einen
(gigantischen) String packen und den in jedem Skript gleich wieder in
ein Hash umwandeln. Denn mit 6 oder 8 Variablen komme ich nicht aus.
c) kann man wohl lösen, indem man die gewünschten Funktionen in eine
(dynamische) Bibliothek verschiebt und sowohl dem klassischen C als
auch dem Perl ein Interface darauf baut. perlxs beschreibt das
hinreichend, denke ich.
b) wird dann schon schwieriger. Ich habe irgendwo was über
return-Stack-Manipulation gelesen. Naja, die Erleuchtung war es nicht
gerade.
>> auch bei den ernsthaften Anwendungen habe ich jenseits der Webserver nur
>> eine einzige größere Anwendung (einen Netzwerk-Sniffer) gefunden, die
>> sich über Perl scripten läßt.
>
>Möglicherweise ist es in den meisten Fällen umgekehrt.
>Man Schreibt ein Perl-Programm und verwendet spezifische
>Funktionalität (kompiliertes C++) als Modul.
>Siehe auch http://search.cpan.org/
An diese Variante habe ich auch schon gedacht, aber unter Win32 ist
die Anwendung eine fette DirectX6-Anwendung mit mehreren permanent
laufenden Threads und einer Windows-Messagepumpe im Hauptthread - die
würden sowieso nie zu Perl zurückkehren.
Unter Linux setzt die Portierung auf eine andere Grafik-API und
natürlich nicht die klassische Windows-Messagepumpe, aber im Prinzip
auch nicht sooo anders als unter Win32
>Ich selber "skripte" meine Simulationsprogramme
>in Perl, d.h. ich linke perl58 in meine Anwendung
>und rufe je nach Bedarf einfach Perl-Subroutinen
>auf, wobei die Manipulation von Daten (hin und
>zurück) überhaupt kein Problem darstellt.
>
>Das funktioniert bei mir unter Linux/gcc4, Win32/
>VisualC++-6 und Win32/VisualStudio2005 ohne jeden
>Schmerz.
Das klingt wie das, was ich suche. Gibt es irgendwo ein paar simple
Beispiele dazu? Ich will ja auch erstmal mit einem "proof-of-concept"
wie das heute so schön heißt, anfangen. Irgendwas, was auf ~50
C-Zeilen und ~50 Perl-Zeilen gut belegt, wie es gehen kann....
>[...] Zu Perl gibt es ausserdem ein ausge-
>zeichnetes Handbuch für das "Perl Embedding", damit
>konnte ich alle Fragen klären.
>
>http://www.amazon.com/Extending-Embedding-Perl-Tim-Jenness/ dp/1930110820
Da muß ich mal reinschauen!
>Aber am Ende wirst Du das nehmen müssen, was
>die Kontributoren mögen ;-) Und "populärer"
>ist Python derzeit sicherlich. Ich kann
>das, nach meinen "Versuchen", nicht nach-
>vollziehen, aber das ist wahrscheinlich
>auch eine Frage des Geschmacks.
Im Moment deutet vieles in Richtung LUA, aber auch dafür fehlt mir der
"proof-of-concept"-Gegenbeweis ;-) Die LUA-Verfechter haben halt schon
viel von LUA gehört und gesehen, daß Profis LUA nehmen. Dem Vergleich
hält Perl schon noch stand!
Mai