【GMS 联机2】CS状态同步
gamemaker吧
全部回复
仅看楼主
level 3
犬酥咸饼 楼主
此贴缓更,请勿插楼,见谅。
2018年04月07日 09点04分 1
level 3
犬酥咸饼 楼主
CS状态同步,C表示Client客户端,S表示Server服务器。状态同步即对游戏角色的行为状态、Hp、坐标位置、怪物AI等这一切的发生改变的“状态”进行同步。
与之CS相对的还有P2P(Player to player),即玩家之间互相广播数据,不需要指定的房主玩家来担当服务器进行所有玩家数据运算工作。
联机游戏同步方式很多,CS状态同步我们接触得比较多,此外还有帧同步(同步操作或同步状态),同步方式可以使用一种或多种,甚至可以杂糅,没有很绝对的类别的划分。对于一些需要精确同步到每一帧的游戏来说,比如格斗,ACT等,帧同步首选,状态同步稍微逊色一筹。其余的大部分可以直接用状态同步来解决。
首讲CS状态同步,因为简单常见,适用于很多种类型游戏。且这种同步方式的好处是,一切重要数据都在服务器运算,客户端玩家是没法修改内存作弊的。
下面准备演示一个最大上限4人的ACT联机游戏模板
主机玩家,也就是房主,同时也是服务器的担当者,但房主也是玩家,为了数据方便统一处理,房主也需要一个客户端。在GMS里,我们用两个object来分别表示服务器与客户端。
所以房主的画面应该是这样的:
参与者的画面是这样的:
我们把角色,怪物等绘制工作全部交给客户端,而HP改变、怪物AI改变、角色行为状态改变等一切状态的同步的逻辑部分交给服务端。所以我们要做“逻辑与画面”分离的工作。
在房主的游戏里,是拥有所有单位的“逻辑实例”,运算他们的状态,碰撞。且这些对应的实例又由对应的“渲染实例”绘制到屏幕上给我们看到。
但在参与者们的游戏里,他们仅仅只拥有“渲染实例”,他们的游戏不需要运算角色之间的碰撞等逻辑,只需要等待服务器运算的结果进行同步。
2018年04月07日 15点04分 2
level 3
犬酥咸饼 楼主
逻辑实例 与 渲染实例,这就是我们要做的。
主界面obj:初始化obj,创建游戏按钮,加入游戏按钮
游戏界面obj:服务器,客户端,玩家逻辑实例,玩家渲染实例
房间:主界面,游戏房间
创建事件:我们先只用到前面3个,做一个玩家列表 ,便于我们观察房间里有哪些玩家。CMD标识符是服务器,客户端执行事件的指令标识。玩家状态标识符则是状态机的各种状态标识。
2018年04月07日 15点04分 3
哇!楼主出新教程了,支持楼主
2018年04月08日 13点04分
[泪]楼主啥时候更新[泪]
2018年04月19日 15点04分
level 10
没人?那我....我顶一下[滑稽]
2018年04月08日 09点04分 4
level 2
没了吗?求详细教程~
2018年04月16日 01点04分 6
level 3
犬酥咸饼 楼主
现在换地方更新了,论坛的编辑更为好用。
http://www.gamemake.org/thread-1662.htm
2018年05月01日 01点05分 8
1