基于Tile的MMORPG运动协议

时间:2010-03-03 00:51:18

标签: networking udp tcp protocols

我正在使用基于磁贴的MMORPG,我遇到了问题。

每个用户始终有一个固定的位置(一个图块),因此其他用户可以在那里看到他,并且无法移动到该图块。因此每个图块中只有一个对象或用户。

如果用户变得不可见,则其他用户无法看到他,但他们仍然无法移动到他的磁贴上。

我的问题是,如果客户知道所有用户(甚至是看不见的用户)的位置吗?这种方法的问题在于,一些用户设法破解客户端并看到隐形用户。

我的一个想法是客户端不应该知道用户的位置,并且在移动之前询问服务器是否可以使用hi想要移入的磁贴,但问题是我们遇到的延迟。 / p>

仅供参考,客户端/服务器协议是使用TCP / IP构建的。

1 个答案:

答案 0 :(得分:4)

你绝对应该遵循第二种方法来获得安全的MMORPG。

实际上逻辑应该在客户端和服务器之间完全分开。客户应该只是

  • 能够呈现世界的“视觉事物”
  • 让玩家执行动作的输入界面

服务器应该处理其他所有事情..

因此,例如,您应该处理类似的动作:

  • 用户尝试在客户端
  • 中移动播放器
  • 客户端将带有“移动请求”的数据包发送到服务器
  • 服务器检查是否移动它是合法的并根据它更新其内部地图
  • 如果移动是合法的,只需向所有客户发送更新状态(使用新职位)
  • 如果移动是非法的,只是警告试图这样做的客户

这种方法更重要的是:客户端不负责实际将玩家移动到新位置,它只是接收新的地图状态

忘了这个:

  • 客户询问移动是否合法
  • 如果服务器显示YES,则客户端更新位置