lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


Hi,

I'm building a Script Engine that binding C++ to Lua.
This part is ok and work correctly but know, I've to implement the game logic part and I'm not really aware about the best practices.
So, here is what I want to do, and the twice solutions I've found.

I've a C++ GameObject and I want to script it with Lua.
So, I've to send a reference of that object to Lua (no problem here) and I've to Update the script each frame of the game loop.
But, I'see 2 ways to do that, each has its advantages and inconvenients.

Notice that to inject a reference, I do something like that :
   - I affect a new name to the right metatable :
     Metatable["tmpVar123"] = Metatable
   - I set it to global
   - I affect a local variable to this global

1) Whith Lua Thread
 When the game start, for each gameObject which has a script, I create a new Lua Thread from C++ and initialize all of its local variables
(as self which represents the reference of the gameObject).
So, when I Update the script, the local variables are well initialized and there are no collisions with the other scripts because of the Lua Thread.

2) Without Lua Thread
I do the same as with Lua Thread but I don't create one thread for each script.
So, in order to avoid collisions between scripts, I initialize each local variables before Updating the script.

So, I think that to choose between this 2 methods, all depends of the performance of the lua thread (imagine if I have something like 1000 game objects,
so 1000 threads too!)

Thanks,

Tim