Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

看了您TSRPC + Cocos,多人实时对战 So Easy!的文章,请教俩个问题。 #42

Open
codingnan opened this issue Mar 10, 2023 · 4 comments

Comments

@codingnan
Copy link

文章写的真好,受益良多。但有两个问题还望请教。
1,关于判定该听谁的问题,大佬你举的例子是个射击游戏,这还好,要是moba游戏,放一个技能,这技能也不带晕,就是简单的子弹飞行,命中,掉血,这么一个技能。由于没有晕、位移等效果,也不存在被击中者被强制拉回去的问题,就是中了掉血。这种判定是听攻击者客户端运算的,还是听服务端运算的呢?听谁的好像另外一边都不会同意,影响游戏体验,那现有的moba游戏是如何实现这里的同步策略的呢?
2,关于作弊问题,大佬你文章最后提到:你担心客户端可能发给你作弊的计算结果,其实客户端一样可能发给你作弊的输入,所以客户端算和服务端算,对于作弊来说都是一样的。我这里觉得还是不一样,因为服务端可以比较容易校验客户端传过来的输入是否合法,而不太容易校验客户端传上来的结果是否合法。

@ssyyzc
Copy link

ssyyzc commented Oct 13, 2023

这种一般是客户端和服务器一起算吧,客户端模拟结果进行显示,服务器返回结果后按策略修复调整

@k8w
Copy link
Owner

k8w commented Dec 25, 2023

  1. 毫无疑问,操作序列以 “服务端收到的” 为准(权威输入)。至于是服务端算结果,还是客户端算结果,都可以。因为操作序列一致,显然无论在哪边算结果都应当一致。
  2. 对于 JavaScript 项目而言,如果网络有做加密并非抓包破解,而是基于源码层面的破解;那么程序化的外挂式提交输入,也不是什么复杂困难的事情吧。

@avi9111
Copy link

avi9111 commented Jan 2, 2024

1.就是大佬文章里说的:快速-无冲突,和快速-有冲突的问题,你的问题应该属于无冲突,就按无冲突的做就行了,cocos不知道,但是unity经常有丢帧问题,所以如果你的逻辑是根据每帧移动判断,要注意!,因为那个你懂的插件
2.作弊更多的要先拿到整体的准确的作弊比率,曾经一个游戏2%的作弊率,还是照样运行,每天很多人在线,很多作弊原因和解决方法知道但整个团队却缺少修改这些个作弊问题的意志

@kelvinlyan
Copy link

  1. 毫无疑问,操作序列以 “服务端收到的” 为准(权威输入)。至于是服务端算结果,还是客户端算结果,都可以。因为操作序列一致,显然无论在哪边算结果都应当一致。
  2. 对于 JavaScript 项目而言,如果网络有做加密并非抓包破解,而是基于源码层面的破解;那么程序化的外挂式提交输入,也不是什么复杂困难的事情吧。

想问下大佬,例子中有个回滚操作,如果状态数据很大,那么备份和回滚操作会不会很耗时

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants