游戏逻辑应该在客户端还是服务器上?

时间:2018-06-13 15:29:08

标签: java design-patterns client-server

我正在制作一款简单的多人回合制游戏。

我无法决定在客户端或服务器上放置所有逻辑之间的界限。

客户端是否应该仅仅用于向服务器发送输入并打印/显示响应?(这是我目前的解决方案,但似乎也使客户端过了"愚蠢")

如果没有,我该如何判断哪一方发生了什么?

游戏非常简单,所以我认为在任何情况下我都可能遇到任何滞后或带宽问题。

2 个答案:

答案 0 :(得分:1)

您应该始终将所有游戏逻辑放在服务器中,因为客户端可以被修改和欺骗。永远不要相信客户。

答案 1 :(得分:1)

将服务器视为“游戏”,将客户端视为“玩家”。尽可能减少客户端。尽可能地限制客户对游戏的影响。客户应该真的只能要求这样做并且这样做,它应该不能自己决定移动的结果是什么。

客户端表现为服务器的真实世界示例是Halo 3多人游戏,其中游戏选择了一个玩家作为主机(服务器),作为匹配的一部分。

缺点:

玩家可能会延迟切换其他玩家并导致他们滞后。那些球员无法做任何事情,主队球员只是杀了他们并赢得了比赛。

被选为主持人的玩家网络状况不佳,所以每个人都落后于必须选择新主机的地步。

如果主办方离开游戏,比赛将停止,并尝试找到另一个并不总是成功的主机(玩家)或花几分钟时间。