有人对状态同步了解吗???

有状态同步的案例吗??

那为什么外面的大作都选择帧同步呢

求思路呀 nice

用的场合不一样 帧同步一般用于对战模式 短时间联机 状态同步用于开放世界那种大型游戏

服务器上写逻辑去同步 我感觉服务器的人会吐血 而且机器也吃不消

客户端打包的时候需要打包一个 服务端的 目前在弄

https://zhuanlan.zhihu.com/p/49837134

这不是后端考虑的吗

我感觉不是 你可以想一想服务器想实现业务 多复杂… 简单的纸牌哪些还可以 但是 像大型游戏 开发世界 后台压根实现不了 所以这种还是属于前端范畴 后端只负责 道具保存哪些 或者 离线位置啥都存储 游戏逻辑还是前端去实现然后打包出来应该服务端 就和UE4 一样

个人理解是帧同步:逻辑处理在客户端,服务端只负责广播和存储。状态同步:逻辑处理在服务端,客户端只接收服务端处理好的结果信息。帧同步容易外挂作弊,服务器负担轻。状态同步难作弊,服务器负担重。

实际上很多项目帧同步和状态同步混合使用。

我之前做过 具体什么游戏就不说了 因为从那家公司离职了 客户端和服务器都需要算 服务端要保证数据准确 如果客户端给的数据不准 服务器会同步客户端的数据

而且也不是属于简单的那种 多人同时在线的那种 一台服务器差不多能撑住一百人左右

状态同步理论上就是逻辑实体状态发生变化时通知其他用户。在此基础上会根据实际情况有很多变种

先说帧同步吧,帧同步比较接近于我们小时候的小霸王的双人游戏。
可以把服务器理解为黑白电视机,客户端理解为手柄,客户端只负责告诉服务器我按了什么按钮,点在了哪个地方。然后服务器告诉其他玩家,就如同小霸王在一台电视上显示两个人的游戏画面一样。最终在自己的屏幕上复刻对应的操作即可达到同步的效果。

状态同步的原则就是如果某某玩家的状态改变了,服务器即刻会向所有玩家转发该消息。

打个具体的游戏例子, 我走到玩家B傍边给他加了一个buff,持续时间30秒,攻击+100%。
帧同步:
在玩家B的电脑上,会有一个隐藏的手会模仿我的每一帧操作,然后跑过来给你加buff,然后按照你的攻击面板和时间来算(假设玩家B开了修改器,把攻击面板改成10000 ,你显示的是20000攻),但是在我这里你还是原来的基础*2。然后就会导致游戏进入异次元时空,虽然没掉线,但是每人显示的画面不一样)。

状态同步:
在玩家B的电脑上,收到了我移动的方向向量和速度(因为我跑动导致我的方向向量和速度改动了)。然后跑到玩家B附近开始释放BUFF(我向服务器发送ID10的BUFF,同时目标为玩家B,服务器会检测我ID10的BUFF是否在CD,有没有蓝,等等一系列前置判断),这个时候检测到我的人物状态改变了,告诉玩家B我正在施法,玩家B电脑就开始显示施法动作。(服务器过了0.5秒,告诉我施法结束了,同时转告所有玩家,我施法结束,同时玩家B获得了ID为10的BUFF。过了30秒,服务器通知所有人,玩家B的BUFF结束)

1赞

简单说就是核心逻辑谁处理的区别。通常小游戏级别的不会太多玩家在同一个房间玩,AI挂在某个玩家身上就行了,服务器只管转发消息。要来个百人同屏就挂不住了,就丢给服务器去处理业务逻辑了,就变成状态同步了。不过通常是混着用的,无关紧要的东西还是前端去处理逻辑就行了。

现在主流都是混合同步,及状态同步+帧同步。
拿DOTA2当例子来说,是一个非常完美的混合同步例子了。

DOTA2产生网络差的时候,远程弹道打到目标身上是没有效果的,只有服务器判定生效之后才会扣血。
英雄人物操作用的是帧同步,但是具体技能产生的效果是由服务器判定的。(就算作弊你在本地把攻速间隔改到0,客户端会一直显示你在A人,但是掉血以服务器为主的)。

你以为是5v5实际上是6v6,两边还各有1个服务器上的电脑控制兵线和防御塔。所以DOTA2才能做到没任何人能作弊

摒弃了帧同步断线重连的弱点,像老牌的帧同步代表,WAR3,在进行多次更新之后才有的断线重连,只能通过加速本地游戏进程来实现断线重连,浪费时间。

2赞

上次链接发错了
https://mp.weixin.qq.com/s?src=11&timestamp=1642586218&ver=3568&signature=GA9DW0vvRTW4RLVAT4f3MklBV1l4Rvbx-2Jho21rNGE81Dky9UM214YxEzr3yQjI3TXJDeYM7DJZ9P-7B7pdBKtWEVvAzx6*XL1EycAa-Q-F16u6J7rd9CnEQCUlzM&new=1

解释非常到位,我的射击游戏也是这么搞的。再也不怕外挂骚扰。

看看同步么 最近弄的
http://ngame.jisol.cn/cocos-state/client/