Schnellere Lösung für LUA, wie?
Übersicht

![]() |
Suco-XBetreff: Schnellere Lösung für LUA, wie? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi
Ich habe mich mal wieder entschlossen ein wenig mit dem LUA Modul zu arbeiten und habe mir so meine Gedanken über die Verwendung gemacht. Ich dachte z.b. man könnte so einzelne Spielelemente auslagern, wie z.b. Feinde (Bewegungen und Schüsse usw.). Man müsste also erst alle Scripte Laden, den gewünschten Objekten hinzufügen und in der Hauptschleife führt jedes dieser Objekte das Script. Jetzt hat mich aber der erste Speedtest etwas erschrocken: Code: [AUSKLAPPEN] Import Pub.LuaScript Global LuaScr:ScriptEngine = New ScriptEngine Function Debug(ls:Byte Ptr) Local Text:String = LuaScr.CheckString(ls,1) 'print Text End Function LuaScr.AddFunction(Debug, "print2") 'LuaScr.SetScriptText("print2(~qTest~q)", "") Local time:Int = MilliSecs() For Local i:Int = 0 Until 1000 LuaScr.SetScriptText("print2(~qTest~q)", "") LuaScr.RunScript() Next Print MilliSecs()-time LuaScr.ShutDown() Das Script ist ja sehr klein und braucht schon soo lange, wie soll man das gebrauchen können? Desweiteren muss man immer den Text beifügen bevor man es ausführt, ich denke das ist das Problem. Ich will Beispielsweise ein Script Laden, LUA soll es für sich Vorbereiten und bei Aufruf einfach abspielen, ohne nochmal den Text hinzufügen zu müssen. Habe aber ka wie das gehen könnte, finde dazu keine Funktionen. Vielleicht weiss ja jemand Rat.. Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
![]() |
Suco-XBetreff: ........ |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, ich bin ein Stück weitergekommen:
Mit diesem Code: [AUSKLAPPEN] Import Pub.LuaScript Global LuaScr:ScriptEngine = New ScriptEngine Function Debug(ls:Byte Ptr) Local Text:String = LuaScr.CheckString(ls,1) 'Print Text End Function LuaScr.AddFunction(Debug, "print2") LuaScr.SetScriptText("print2(~qTest~q)", "test") lua_setglobal(LuaScr.m_lua_state, "test") Local time:Int = MilliSecs() For Local i:Int = 0 Until 1000 lua_getglobal(LuaScr.m_lua_state, "test") LuaScr.RunScript() Next Print MilliSecs()-time LuaScr.ShutDown() geht das ganze schon viel flotter. Ich hoffe nur es gibt noch ne Möglichkeit das ganze nochmals zu beschleunigen. Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
eine DLL ist denke ich mal am schnellsten - Vorteil ist auch, dass es auch dritte erweitern können | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
Suco-XBetreff: ............ |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi
Eine DLL ist für meine Zwecke völlig ungeeignet, vielleicht wenn ich ein Plugin System machen will. Mittlerweile habe ich mir den Code mal genauer angeschaut und die Script Engine etwas modifiziert, mit dem Ergebnis, dass er 1000 Durchläufe in 1 MS schafft und die ganze Sache nicht mehr Case Sensitive ist. Das reicht mir fürs erste, das Thema ist erstmal gegessen. Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group