在多次调整开发目标和数次重构后,基本完成了服务器端代码的开发,客户端代码需要调整任务还比较大。服务器端完全摒弃了smartfox框架,自己用netty写了一个socket server以及网络棋牌的相关底层模块。一些经验总结如下:
- 系统功能和具体棋牌玩法的功能分割开来,具体的棋牌游戏玩法以插件的形式存在。
- 不同棋牌玩法中公共的功能抽离出来,组成功能模块,再今后增加游戏玩法时,仅需要关注具体游戏逻辑。
- 对于客户端过来的数据包采用事件监听机制来分发到系统模块或者具体游戏实体处理
- 在具体游戏实体模块中,针对棋牌游戏特点,倾向于采用状态模式来处理客户端的数据。
- 服务器是唯一保持一个游戏过程中所有状态的,当服务器同客户端发成冲突时,以服务器状态为准。
- 服务器需要保存一个游戏的全过程,采用备忘录模式,存储状态。
佩服楼主~可否把相关经验写更详细些吗?我的qq8548439,JBoss Netty研究群15161096