如何查询具有可见地图图块的服务器?

在我的游戏中,我需要根据视口中可见的图块检索可见图块中的项目数据。 我打算使用包含图像标签(如Google地图)的可见图块来制作批量AJAX请求。 商品信息将采用JSON格式。

什么是最好的办法呢? 我目前有一个类,确定可见的列/行和相对于可见区域显示的偏移量。

实际上,在大多数情况下,客户端不需要为服务器“查询”任何东西。 一般在MMO或networking游戏中。 那么,这取决于你的查询的定义我想…让我们来看看你的传统游戏的背景下。

这个答案假设了一个有状态的模拟,而不是一个无状态的networking应用程序可能利用(如谷歌地图)。 这对游戏更有用。

让我们假设我们有以下图表:

在这里输入图像描述

突出显示左侧字符的方框是客户端视口。 这可以通过几种方法之一来确定:

  • 客户端发送了一个值(在2D游戏中的parsing),他们可以看到,服务器解释并存储它
  • 游戏对所有玩家有一个固定的视角,提前决定。

现在,我们如何定义这个视口? 这个视口被称为感兴趣区域 。 当涉及其他项目的游戏世界中发生的事情是对象时,可以查询这个感兴趣的区域视口来查看它是否适用。 例如,让我们考虑“有些玩家”希望移动,但我们的客户还不知道他们。

只要“有些玩家”没有进入我们的客户端定义的框,客户端将不知道“有些玩家”,甚至他们正在移动。 不过,让我们考虑一下:

在这里输入图像描述

突然,感兴趣区域视口现在与“某个玩家”相交。 这意味着现在应该播放有关“某些播放器”的更新以及项目和信息。 当更新兴趣区域时应该发生以下情况:

  • 如果客户端上不存在该对象,则应该创建该对象。
  • 所有的状态应该立即同步,并且相关的更新应该被订阅

相反,当一个对象离开时,可以取消订阅,并可选地终止客户端内存中的对象。

这种方法可以应用于各种各样的游戏,包括自上而下的MMO,FPS游戏和其他需要隐藏某个“视图”信息的游戏。