为了学习更多和新技术,我已经开始制作一个小游戏。这个想法是继续扩展它并添加新的东西。对于我来说,这是一种很好的尝试和尝试新技术的好方法,同时也可以玩一些东西。
现在,我的基本情况很好。它完全在Vue.js中构建。但是,现在一切都在客户端处理。将来,我想使用网络套接字将其转变为多人游戏。我知道让客户处理所有事情并不理想,因为作弊很容易。我想知道解决这个问题的最佳方法是什么。我的游戏有点像太空侵略者。大量敌人产生,您必须射击它们。
最初,我想到了将所有游戏逻辑都放在服务器上,只是让客户端按照服务器指示的方式进行渲染。但是高负载情况如何呢?如果同时有10000个玩家在玩,则意味着每秒向服务器发出大量请求。我认为这将严重影响游戏的性能。
最佳实践是什么?我想尽可能地防止作弊,同时还要牢记高负载和功能良好的游戏。我已经读过一些游戏只是对分数的计算方式进行了某种形式的混淆,但是由于我的方法很简单,因此似乎很难进行混淆。我提供了当前游戏的屏幕截图,可以让您大致了解我在说什么。
您是船,敌人是黄点,在顶部生成。当他们跌到最底下时,你会丧命。当您输掉3时,游戏结束了。我的问题是,随着许多这些游戏同时运行,跟踪所有这些敌人将变得异常困难,因为会有很多游戏。
亲切的问候。
最佳答案
首先,如果您打算让成千上万的用户保持同步,那么 TCP并不是可行的方法,在处理多人游戏时,必须使用UDP,它比TCP协议(protocol)好得多。
其次,您说对了,,游戏引擎也必须在服务器上运行,并且服务器引擎时钟必须比玩家引擎时钟提前(也许200 / 500ms),以便验证和预测用户输入。
然后,当您收到输入时,您可以在触发输入时验证输入(您的引擎已经超过了该游戏时间),并在接下来的200 / 500ms内检查条件,从而可以根据需要协调客户端状态。
多人数据预定义和同步是硬来看看this之类已经可用的实现或有关this的有关此特定主题的文章
注意:您会在https://gamedev.stackexchange.com/中找到更多帮助发布