我正在计划一个基于物理的竞争性多人游戏,用Java编写。它将涉及大量的碰撞检测和流体模拟,出于服务器负载的原因,我想在客户端进行这些工作。每个玩家都可以控制一辆车,可以完全独立于其他车辆进行模拟。
Multiplayer billiards game physics simulation中接受的答案(模拟服务器端!)对我来说是完全不切实际的。仅仅模拟几辆车就会消耗一台中端个人电脑的大部分资源。
我正在考虑让客户端模拟他们自己的车辆,服务器将他们的结果广播给其他客户端并调解冲突。通过使用服务器的备用CPU进行不定期的物理审计,作弊将在一定程度上得到防止。客户端不会知道它们何时被审计,因为它们无论如何都会发送所需的状态。
你怎么做?这个项目将只是为了好玩,所以我不会失去任何东西,如果人们真的作弊。
发布于 2013-01-02 15:25:03
在您提到的条件下,为了减少服务器上的负载,您可以做的事情是让每个客户端模拟自己的车辆,外加一个或多个随机车辆,这些车辆每隔一段时间随机变化。
这可以减少审计所需的服务器资源的数量,从而使您的审计更加频繁。如果不同玩家报告的数字不一致,您的服务器可以检查谁在作弊(审计人员或审计人员)。如果你让每个玩家的变量由两个或更多的其他玩家计算,随机选择,并以足够频繁的间隔改变,你就减少了玩家联合作弊的可能性。
如果您是在Java (JVM)环境下对服务器进行编码,那么可以帮助您进行大量分布式计算的库是Akka。
https://stackoverflow.com/questions/14117439
复制相似问题