服务器概要
由于我们开发的游戏大都是实时性互动性比较强,所以不能做成多线程处理事件,所以事件处理都是由同一个线程处理的.这样可以简化处理.原先还做过一个根据事件类型扔到不同的线程处理的方案.但是这个方案在实际使用中有非常多的问题.很容易导致游戏出现逻辑错误.比如某个逻辑本身和其他玩家无关,但是由于其他玩家正在操作的东西间接的用到了这部分逻辑.就会导致数据不一致错误了.这简直就是给写逻辑的人挖坑.
服务器的主逻辑大致如下:
所有的事件都在一个专门的线程中处理.
顺序进行.在高互动的游戏中最简单的确保逻辑不出错,写起来也没有什么坑.
其中不同的事件又分别有不同的线程生成,并投递给主线程事件队列处理.