笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》电子工业出版社等。
CSDN视频网址:http://edu.csdn.net/lecturer/144
现在竞技类网络游戏比较火,市面上也出现了很多这种类型的游戏竞赛,提到网络游戏就回避不了一个问题:同步技术,多个人在一个游戏场景围攻一个怪物或者说多人组队战斗等等。现在在移动端的游戏由于带宽的限制,一般采用实时同步的方式是状态同步,也就是说角色的状态发生改变,才会去发送消息。举个例子:
3D角色一般的动作状态有:Idle,walk,run,attack等,玩家操作键盘或者触摸屏按钮,会触发这些动作,一个游戏场景中会有多个角色,每个角色都有自己的动作状态,为了让玩家能够看到其他玩家在做什么,需要同步,玩家默认状态是idle,玩家刚出现时是idle状态,这个时候,客户端会把玩家的状态,位置,方向传送给服务器,其他玩家也是一样的,服务器接收到信息后,会把这些信息发送给除了它本人之外的其它玩家,这样我们就可以看到其他玩家的状态了。如果玩家从idle状态转化到walk状态,这表明玩家的动作状态发生了变化,这也需要将信息发给服务器,服务器进行群发给其他玩家,这样其他玩家就可以看到角色开始walk了。接下来如果玩家继续走,客户端就不发送消息给服务器了,因为状态没发生变化,等状态再变化时才会发送消息给服务器,然后服务器再群发消息,在此过程中,其他客户端会