我正在使用基于图块的MMORPG,但遇到了问题。
每个用户一直都有固定位置(一个图块),因此其余用户可以在那里看到他,而不能移动到该图块。因此,每个图块中只有一个对象或用户。
如果用户不可见,则其他用户将看不到他,但他们仍然无法移动到他的图块。
我的问题是,客户应该知道所有用户的位置(甚至是看不见的用户)吗?这种方法的问题在于某些用户设法破解了客户端并看到了不可见的用户。
我曾经有一个想法是,客户端不应该知道用户的位置,并且在移动之前询问服务器hi是否要移动到的磁贴是否可用,但问题是我们遇到了延迟。
仅供参考,客户端/服务器协议是使用TCP / IP构建的。
您绝对应该遵循第二种方法来拥有安全的MMORPG。
实际上,客户端和服务器之间的逻辑应该完全分开。虽然客户应该
能够渲染世界的“视觉事物”
输入界面,让玩家执行动作
服务器应该照顾其他一切。
因此,例如,您应该以以下方式处理运动:
用户尝试在客户端中移动播放器
客户端将带有“移动请求”的数据包发送到服务器
服务器检查移动是否合法,并根据其更新内部地图
如果搬家是合法的,只需向所有客户发送最新状态(带有新职位)
如果搬家是非法的,请警告试图这样做的客户
关于此方法的更重要的事情是:客户不负责将玩家实际移到新位置,它只是接收到新的地图状态。
忘掉这个:
客户询问此举是否合法
如果服务器说是,则客户端更新位置