Aktuelle Zeit: 14.05.2024, 15:17

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Lua - und Scriptsprachen allgemein
BeitragVerfasst: 04.07.2007, 20:28 
Offline
Moderator

Registriert: 25.02.2007, 14:35
Beiträge: 323
Wohnort: Münster
Hi,

lfür mein aktuelles Projekt möchte ich gerne eine Scriptsprache einsetzen. Bisher fiel bei mir die Wahl immer auf eine eigene, sehr beschränkte "Script-Engine".

Nun möchte ich, bevor ich diese (wegen extrem miesem Aufbau und Programmierstil... ist halt schon ne weile her) neu schreibe, mal einen Einblick in schon vorhandene Scriptsprachen werfen.

Als erstes viel mir da natürlich Lua ein.

Da ich noch nie damit gearbeitet habe, würde es mich freuen, wenn mir jemand eine kurze und kompakte Erklärung geben könnte, wie Lua aufgebaut ist. Wie verbindet man Lua mit C++? Welche Vor- und Nachteile hat Lua im Vergleich zu einer eigenen Scriptsprache..

Ich denke, das Thema ist auch für andere Leute interessant, da ja bei fast jedem modular aufgebauten Spiel mehr oder weniger Scripte zum Einsatz kommen.

Also, vielen Dank schonmal im Voraus

marsupial


Nach oben
 Profil  
 
BeitragVerfasst: 05.07.2007, 00:54 
Offline
Moderator
Benutzeravatar

Registriert: 11.03.2007, 20:25
Beiträge: 556
Wohnort: Frankfurt/Main
aalso... das ist ein weites feld, würde briest jetzt sagen..
ich hab mich wegen son jetzt eingehender mit lua beschäftigt und ich muss sagen dass diese sprache einfach wunderbar ist.
also lua ist im grunde javascript sehr ähnlich, mit javascript 1.6 / 1.7 sogar immer mehr, denn js unterstützt jetzt auch ausdrucklisten, also etwa:
Code:
var a, b, c = 1, 2, 3; // a=1;b=2;c=3

lua passt diese listen dynamisch an, in lua wärs dann zb
Code:
a, b, c, d = 1, 2, 3 // a=1;b=2;c=3;d=nil (ein spezieller wert in lua der verschieden von allen anderen ist, sonst nichts)

dann hat lua eine art multithreading und zwar ko-routinen die unterbrochen und wiederaufgenommen werden können.

der vorteil zur eigenen scriptsprache sind ganz klar die enormen fähigkeiten der sprache die man soz. umsonst bekommt und die hohe geschwindigkeit. aber lua ist sich nicht zu fein für winz-aufgaben wie datenbeschreibung.. das ist sogar ein wichtiger verwendungszweck der sprache. es gibt zb ein syntactic sugar dass man eine funktion, die nur ein argument übernimmt, ohne klammern aufrufen kann, zb
Code:
print 'hallo welt'

wenn man mit tabellen arbeitet kann man einen funktionsaufruf, der zb einen eintrag in eine datenbank macht, wie folgt schreiben:
Code:
db_entry{
  name="hugo",
  address="wiesengasse 3, 60341 Frankfurt",
  birthday="03/30/1997"
}


die schnittstelle ist in ansi-c geschrieben dh eigentlich nicht für c++ und oo geeignet.. zudem ist sie auf höchstmögliche flexibilität beim programmierer angelegt, man kann fast alles machen.. (leider ziemlich abstrakt)
kommuniziert mit lua wird über einen virtuellen stack, auf dem werte abgelegt werden wie zb funktionen (sind wie in js vollwertige werte (...)) oder alles andere..
zb
Code:
lua_state* L = lua_open();
luaL_openlibs(L); // öffnet standardbibliotheken, gehört zur erweiterungsbibliothek
lua_getglobal(L,"print"); // legt globalen wert von "print" auf den stack, momentan eine funktion
lua_pushstring(L,"hallo welt"); // legt das argument auf den stack
lua_call(L,1,0); // ruft die funktion auf dem stack auf, die ein argument nimmt und kein ergebnis zurückgibt, also versucht den wert an der zweitobersten stelle als funktion aufzurufen..

faktisch kann man trotz der funktionsbasierten api objektorientierte schnittstellen bauen.. für die verbindung mit c++ gibts zb zwei sehr gute bibliotheken: einmal tolua++, das eine bibliothek für das luaprogramm baut, um das c++-interface zu nutzen, zum anderen luabind, mit dem man in c++-manier eine schnittstelle in lua definieren kann.
im grunde ist es egal welche man wählt, sie sind eigentlich gleich, nur das luabind den luaprogrammierern ein intuitiveres oo-system bereitstellt

_________________
yo. life's so bloody short.
Ihr dachtet Schulfernsehn sei die ultimative Folter? Falsch: Fahrstuhlmusik, extra leise.


Nach oben
 Profil  
 
BeitragVerfasst: 05.07.2007, 20:57 
Offline
Moderator

Registriert: 25.02.2007, 14:35
Beiträge: 323
Wohnort: Münster
Benutzt du Luabind?

Oder kannst du zumindest ne Empfehlung aussprechen? Ich hab mir jetzt mal vorallem Luabind angeguckt... das wird ja irgendwie nicht mehr weiterentwickelt, richtig? (Letzte Version irgendwann von Anfang 2006) - ist das denn irgendwie unfertig oder so?


Nach oben
 Profil  
 
BeitragVerfasst: 06.07.2007, 10:52 
Offline
Moderator
Benutzeravatar

Registriert: 11.03.2007, 20:25
Beiträge: 556
Wohnort: Frankfurt/Main
momentan bastele ich noch mit der c-api von lua rum.. denke aber darüber nach für son auf luabind umzusteigen..
luabind ist auf lua 5.0 basiert, es gibt aber inzwischen eine aktualisierung: http://code.rasterbar.com/luabind/wiki/Current%20Status
tolua++ sollte auch mit 5.1 funktionieren.

einen definitiven rat kann ich dir noch nicht geben, hab mich bisher zu wenig damit beschäftigt..

also zum lebend-status: die mailingliste von luabind ist noch hochaktiv..

_________________
yo. life's so bloody short.
Ihr dachtet Schulfernsehn sei die ultimative Folter? Falsch: Fahrstuhlmusik, extra leise.


Nach oben
 Profil  
 
BeitragVerfasst: 09.07.2007, 15:08 
Offline
Moderator

Registriert: 25.02.2007, 14:35
Beiträge: 323
Wohnort: Münster
So, hab mich jetzt mal intensiver mit luabind auseinandergesetzt (soweit man in einem solchen Zeitraum von intensiv sprechen kann) und bin zum Entschluss gekommen, es zu wählen.

Die OOP-Möglichkeiten sind echt super und auch sonst gefällt mir das Design von Luabind. *thumbsup*


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de