我正计划用Java编写基于物理的竞技多人游戏。它将涉及大量的碰撞检测和流体模拟,我想在服务器负载的原因做客户端。每个玩家都可以控制一辆车,可以相当独立地模拟其他车辆。
Multiplayer billiards game physics simulation中接受的答案(模拟服务器端!)在我的案例中是完全不切实际的。仅模拟几辆车就会占用中档PC的大部分资源。
我正在考虑让客户模拟他们自己的车辆,服务器将他们的结果广播给其他客户并调解碰撞。通过使用服务器的备用CPU进行偶尔的物理审计,可以在某种程度上防止作弊。客户不知道他们何时被审计,因为他们无论如何都要发送所需的状态。
你会做什么?这个项目只是为了好玩,所以如果人们做作弊,我不会失去任何东西。答案 0 :(得分:1)
在您提及的条件下,您可以采取的措施是减少服务器上的负载,让每个客户端模拟自己的车辆,加上一个或多个随机车辆,每隔一段时间随机变化。
这可以减少审核所需的服务器资源数量,从而使您的审核更加频繁。如果您的不同玩家报告的数字不一致,您的服务器可以检查谁在作弊(被审计员或审计员)。如果每个玩家的变量由两个或多个其他玩家计算,随机选择并以足够频繁的间隔进行更改,则会降低玩家组队作弊的可能性。
如果您在Java(JVM)环境下编写服务器代码,那么可以帮助您分发计算的库是Akka。