3

为了学习更多和新技术,我开始制作一个小游戏。我们的想法是不断扩展它并添加新事物。这对我来说是一种很好的方式来试验和尝试新技术,同时也有一些东西可以玩。

现在我有一个很好的基础站。它完全构建在 Vue.js 中。然而,现在一切都在客户端处理。将来我想使用 websockets 把它变成一个多人游戏。我知道让客户处理所有事情并不理想,因为作弊很容易做到。我想知道应对这种情况的最佳方法是什么。我的游戏有点像太空侵略者。很多敌人产生,你必须射击他们。

最初,我想将所有游戏逻辑都放在服务器上,然后让客户端按照服务器的指示渲染事物。但是,如果负载很高,结果会如何呢?如果有 10000 名玩家同时在玩,这意味着每秒向服务器发送大量请求。我认为这会严重影响游戏的性能。

在这方面有哪些最佳实践?我希望尽可能避免作弊,同时牢记高负载和运行良好的游戏。我读过一些游戏只是使用某种形式的混淆来计算分数,但由于我的很简单,所以混淆它似乎并不能真正起作用。我已经包含了当前游戏的屏幕截图,让您了解我在说什么。

你是船,敌人是黄点,在顶部产卵。当他们撞到最后一排时,您将失去生命。当你输掉 3 时,游戏结束。我的问题是,随着许多游戏同时运行,跟踪所有这些敌人将变得非常困难,因为会有很多。

亲切的问候。

4

1 回答 1

0

首先,如果您计划让成千上万的用户保持同步,则 TCP 不是要走的路,在处理多人游戏时,您必须使用比TCP更好的协议UDP 。

其次,你是对的,游戏引擎也必须在服务器上运行,并且服务器引擎时钟必须领先于玩家引擎时钟(可能是 200/500 毫秒),以便验证和预测用户输入。

然后,当您收到输入时,您可以在触发时验证输入(您的引擎已经过了该游戏时间)并检查下一个 200/500 毫秒的条件,以便根据需要协调客户端状态。

多人数据预置和同步很难看一下像这样的已经可用的实现或关于这个特定主题的文章

注意:您会在https://gamedev.stackexchange.com/中找到更多帮助发布

于 2019-03-05T11:09:19.153 回答