在考虑服务器负载的同时,如何制作多人Javascript游戏作弊证明

时间:2019-03-05 10:54:30

标签: javascript server client anti-cheat

要了解更多和新技术,我已经开始构建一个小游戏。这个想法是继续扩展它并添加新的东西。对我来说,这是一种很好的尝试和尝试新技术的好方法,同时还可以发挥一些作用。

现在我的基本情况很好。它完全在Vue.js中构建。但是现在,一切都在客户端处理。将来,我想使用网络套接字将其转变为多人游戏。我知道让客户处理所有事情并不理想,因为作弊很容易。我想知道解决这个问题的最佳方法是什么。我的游戏有点像太空侵略者。大量敌人产生,您必须射击它们。

最初,我想到了将所有游戏逻辑都放在服务器上,只是让客户端按照服务器指示的方式进行渲染。但是高负载情况如何呢?如果同时有10000个玩家在玩,则意味着每秒向服务器发出大量请求。我认为这将严重影响游戏的性能。

关于此的最佳实践是什么?我想尽可能地防止作弊,同时还要牢记高负载和功能良好的游戏。我已经读过一些游戏只是对分数的计算方式进行了某种形式的混淆,但是由于我的方法很简单,因此似乎很难进行混淆。我提供了当前游戏的屏幕截图,可以让您大致了解我在说什么。

您是船,敌人是黄点,在顶部生成。当他们跌到最底下时,你会丧命。当您输掉3时,游戏结束了。我的问题是,随着许多游戏同时运行,要追踪所有这些敌人将变得异常困难,因为将会有很多游戏。

此致。

1 个答案:

答案 0 :(得分:0)

首先,如果您打算让成千上万的用户保持同步,则TCP并非可行之路,必须使用 UDP ,这要好得多在与多人游戏打交道时使用的协议不是 TCP

第二,是的,游戏引擎也必须在服务器上运行,并且服务器引擎时钟必须比玩家引擎时钟领先(可能为200 / 500ms) )以验证和预测用户输入。

然后,当您收到输入时,您可以在触发输入时验证输入(您的引擎已经超过该游戏时间),并在接下来的200 / 500ms内检查条件,从而可以根据需要协调客户端状态。

多人数据预配置和同步非常困难 ,以了解诸如this之类已经可用的实现或有关this的关于此特定主题的文章

注意:您会在https://gamedev.stackexchange.com/

中找到更多帮助发布