0

Let's say I make a simple Snake game, and on top of that adds a highscore function.

What would be the best way to make sure that the players can't cheat their scores? The most straightforward way I can think of this is, well, just make sure to validate everything, or at least simulate the game on the server. Pressed right? Well, your snake moves right and stuff.

Is this sort of very server-heavy way the only way? or am I missing something?

4

1 回答 1

4

不确定有多少游戏使用了共享客户端/服务器模型,但如今它可能是相当一部分动作游戏。基本上服务器和客户端共享大部分代码库并同时模拟游戏(如果您的方法都是确定性的,这会有所帮助,但对于诸如火花/爆炸之类的图形效果之类的东西并不重要,这不会影响核心游戏玩法)

服务器向客户端发送更新,告诉它实际发生了什么,客户端纠正错误。这就是为什么在某些动作游戏中,当您遇到网络高峰并丢弃一些数据包时,您可以继续跑来跑去向人射击,然后服务器突然重新建立通信并将您恢复到 5 秒前的位置!

服务器控制所有重要的交互,例如失去健康、死亡等,因此您无法在任何时候将您的健康点数提高 10 亿

这里有一篇很好的文章:

http://gamelix.com/resources/Unity3D%20Forum/Interpolation%20Explained.pdf

这解释了旧的“服务器是老板”模型和带有客户端预测等的较新的共享编程模型。它已经有几年的历史了,但据我所知,其中大部分仍然适用。

于 2013-08-14T11:26:11.807 回答