Lua is fast, but creating bindings to an object oriented system (by using fallbacks) was complex and slow and took an enormous amount of code.
I can not agree with the slow and complex portion of this.
Here is the amount of code it takes to export one of our classes to Lua (using OOLUA, in case it was not obvious

):
Code: Select all
OOLUA_PROXY_CLASS(Actor, CallbackTarget)
OOLUA_TYPEDEFS
No_public_constructors
OOLUA_END_TYPES
OOLUA_MEM_FUNC(void, setTransform, const LuaVector3&, const Orientation&)
OOLUA_MEM_FUNC(void, setPosition, const LuaVector3&)
OOLUA_MEM_FUNC(void, setOrientation, const Orientation&)
OOLUA_MEM_FUNC(bool, setupGraphicsModule, const std::string&, const LuaVector3&)
OOLUA_MEM_FUNC(bool, setupPhysicsModule, const PhysicsModuleConfig&)
OOLUA_MEM_FUNC(bool, setupSoundModule)
OOLUA_MEM_FUNC(bool, setupGenerationPriorityModule)
OOLUA_MEM_FUNC(bool, setupCameraModule, const LuaVector3&, const LuaVector3&, const Orientation&, bool)
OOLUA_MEM_FUNC(void, playSoundEvent, const std::string&)
OOLUA_MEM_FUNC(void, move, const LuaVector3&)
OOLUA_MEM_FUNC(void, activateCamera)
OOLUA_CLASS_END
If that is complex, then I don't know what simple is

OOLUA is very easy to compile and link against. And afaik the fastest Lua binding solution.
Custom languages are a reason not to touch something, IMO, from a game producer point of view.
Nobody knows how to use the language, everyone has to learn something completely new.
The code can never be re-used or serve for a project which may use a different engine.
Custom languages are always subject to heavy changes.
If you end up deciding against the engine in the middle of production for some reason (can happen, even if it should not), you lose everything.
All of this would just ring some alarm bells in my head if I was deciding on an engine.
What I do agree with is multi-threading. Lua is not thread-safe and you cannot make it thread safe (its amazing speed is related to that). In the end, each thread that uses Lua will have its own Lua state.
That is a problem that you have to design the rest of the engine around.