Jump to content

  • Log In with Google      Sign In   
  • Create Account

- - - - -

Lua, Urho3D, Accidental Noise Library

Posted by , 09 September 2013 · 1,374 views

urho3d lua accidental noise library goblinson crusoe
Made a small change to the build structure of the ANL today. Currently, I've been building the ANL as a set of libraries alongside a Framework exe that acts as a Lua interpreter. With a small change, I have added the ability to build ANL into a DLL that exports the root binding function of the library, so that instead of having to run the Framework exe you can just run the vanilla Lua interpreter (or any other interpreter environment) and import the ANL functionality from the DLL. Makes it a lot easier to use it in other Lua-based applications.

The chief reason for doing this finally is that Urho3D has been fleshing out their Lua scripting sub-system to make it a lot more useful to me; specifically, the addition of the LuaScriptInstance class is one of the things I've been waiting for, and one of the things that I've sort of paused development of Goblinson Crusoe until it was completed.

I used to love C++, but now I merely tolerate it when I have to use it. Urho3D is neat in that the AngelScript scripting system is pretty powerful; however, the Lua scripting system is much newer and, until recently, less fully-fleshed out. Since Lua is my preferred language, I've sort of stuck GC on hiatus and worked on some other miscellaneous programming (mostly work-related) while the Urho3D team worked on the Lua framework.

Urho3D is a component-based framework. You create a Node, then add to it Components such as AnimatedModel, Physics, etc... to implement behaviors. With the addition of LuaScriptInstance, you can now add a Component to a Node that provides scripting functionality to the component. You can write the actual behavior of the component in script, providing hooks in the form of event handlers. Thus you can, for example, write an AI controller as a script object. I would much rather write AI and game logic in a higher-level language like Lua than in C++, so this is a good thing and I plan on pulling GC out of storage now that it is done.