现在正在开发一款游戏,服务器只是用c++搭建了基本的支持,包括网络通讯的打包减包加减密,事件的分发模块,基本对象状态的维护等,其他所有游戏业务逻辑都是lua脚本完成(包括player这样的对象)。
Player = Class.extern({
init = function(self)
self.state = EGUS_LOGINNING
end;
getState = function(self)
return self.state
end;
})
对lua的源码做了些小改动,去掉了:形式的调用,例如 player:getState() 可以直接写成 player.getState(),而无需传入self本身(player.getState(player))。
由于lua是一种动态语言,对类型无静态检查机制,这给重构带来很大困难,由于起先的部分代码都不是测试优先的编写方式,现在再做一些重构感到很困难。
只能慢慢的补起来:(。这些经验教训让我觉得如果用动态脚本(包括lua、python、ruby等)开发大型游戏,TDD将是最好的选择。