level 3
与之CS相对的还有P2P(Player to player),即玩家之间互相广播数据,不需要指定的房主玩家来担当服务器进行所有玩家数据运算工作。
联机游戏同步方式很多,CS状态同步我们接触得比较多,此外还有帧同步(同步操作或同步状态),同步方式可以使用一种或多种,甚至可以杂糅,没有很绝对的类别的划分。对于一些需要精确同步到每一帧的游戏来说,比如格斗,ACT等,帧同步首选,状态同步稍微逊色一筹。其余的大部分可以直接用状态同步来解决。
首讲CS状态同步,因为简单常见,适用于很多种类型游戏。且这种同步方式的好处是,一切重要数据都在服务器运算,客户端玩家是没法修改内存作弊的。
下面准备演示一个最大上限4人的ACT联机游戏模板
主机玩家,也就是房主,同时也是服务器的担当者,但房主也是玩家,为了数据方便统一处理,房主也需要一个客户端。在GMS里,我们用两个object来分别表示服务器与客户端。
所以房主的画面应该是这样的:

参与者的画面是这样的:
我们把角色,怪物等绘制工作全部交给客户端,而HP改变、怪物AI改变、角色行为状态改变等一切状态的同步的逻辑部分交给服务端。所以我们要做“逻辑与画面”分离的工作。在房主的游戏里,是拥有所有单位的“逻辑实例”,运算他们的状态,碰撞。且这些对应的实例又由对应的“渲染实例”绘制到屏幕上给我们看到。
但在参与者们的游戏里,他们仅仅只拥有“渲染实例”,他们的游戏不需要运算角色之间的碰撞等逻辑,只需要等待服务器运算的结果进行同步。

