什么是一个好的脚本管理组件? 在开发游戏服务器的过程中,我认为脚本管理器至少需要如下几个好的特性。
首先,易于脚本的加载。
对于网络游戏来说,最常见的问题就是分区。任何一款网络游戏为了自己的生存都在拼命地开新区,从1区到999区。运营的同事经常做的事情就是,分区化运营。最常见的事情,就是一个区有一套配置,在这种情况下,区和区之间的脚本不同也不足为奇。对于无区域区别的脚本来说,我通常都是将其放在名为script/的目录下,而对于区域异化的脚本来说可能存放路径就是zones/N/script/。对于脚本的加载来说理后者的优先级应该高于前者。对于设计接口的时候,我们希望调用LoadScript("XX")的时候直接加载的就是后者,如果后者目录不存在该文件再通过前者目录进行查找。通过网上搜索,目前通常的做法是调用LuaL_dofile,这种做法的麻烦之处在于必须制定完整路径,灵活性不够。可以利用Lua的require机制,利用如下脚本可以增加脚本搜索顺序
其次,可以重载。对于游戏服务器来讲,脚本重载是最常见的事情。也可以利用Lua自己的机制
最后,c++到脚本的接口定义简单,容易理解。比较了LuaBind和toLua++,感觉前者更好一些。
可以利用luabind::call_function<void>(_state, "addpath", path)和luaL_loadbuffer()分别调用最上面两个方法