我对魔兽世界导航系统的想法

我已经计划了很多年的时间来制作魔兽世界的导航网站,这是Google Maps的一种东西,您可以在其中输入起点和终点位置,并且考虑到门户网站,职业能力,种族能力和阶级能力以及你的水平。 绝对看起来像是一个编码难题的地狱。

这篇文章是经过许可的知识共享(Creative Commons),我不会强行注明出处,但我很想听听是否有人从中做出了贡献。

我认为最初应该是数据库和某种寻路算法。 这可能是一张桌子,例如位置1,位置2,之间的距离; 另一个地方可能有通往其他地方的门户网站。 举例来说,暴风城(Stormwind)到幽灵之地(Ghostlands),您可以飞到那里,但是这需要一整分钟的时间,并且有许多更快的选择。 如果您是圣骑士,那么您的教室就在那儿的南部,因此也许通往达拉然的门户是最快的方法。 另一方面,如果您是出于某种原因而坐在暴风城中的部落角色,最快的方法是返回奥格瑞玛(Orgrimmar)或达拉然(Dalaran),然后进入银月城(Silvermoon),因为那里就在那儿; 如果您是其他阶级(或不是部落),并且您对《魔兽世界》的城市历史有所了解,则可以使用Dalaran地下室的Ancient Dalaran门户,它将使您进入Dalaran过去的火山口东部王国的北端,距Ghostlands仅一小段路程。

到目前为止,这是我的实现想法的模型:

目前,我正在玩“下一跳”之类的想法,例如互联网路由器。 每个目的地可能都附加有一个区域,并且每个区域都将有一条通往同一大陆上其他区域的路径,或者是另一个知道该区域在哪里的大陆上的枢纽。

因此,假设在此示例中,有人插入了“暴风城”。 它将与起点和终点区域,中东王国中的暴风城和东北半岛上的Ghostlands相匹配。 它会检查两者之间是否有直接路径,并且两者之间是否存在飞行路径和直接飞行,如果您有一个小时的浪费,您甚至可以步行到那里。 然后,它将检查连接到Stormwind的其他区域,以查看其中是否有通往Ghostlands的路线,预计该路线将花费较少的时间。 该系统将检查通往例如达拉然,波拉鲁斯,奥丹姆,瓦什吉尔的门户,并获取每个地方的估计时间,最有可能的时间长于直接飞往那里的时间。 也许这可以继续下去,并为每个区域绘制完整的路径并对其进行排名,但是我想将递归限制为一到两次迭代可能会更有效,因为没人愿意花费四个门户到达某个地方,除非数十比下一个选项快几秒钟,例如从埃索达尔(Exodar)转到地狱火半岛门户网站,因为从外域反弹是从那里到达暴风城的最快方法,那么暴风城拥有更多前往其他地方的选择。

因此,该算法将从暴风城到达达拉然,从达拉然检查目的地,它会看到通往Silvermoon的部落门户和通往其教室的圣骑士门户,这两个都非常靠近Ghostlands,因此可以推荐其中之一。 门户网站上需要有条件表明第一个仅适用于部落玩家,第二个仅适用于圣骑士。 然后,它可能会看到Ancient Dalaran门户,该位置位于东部东部王国的北部,如果不是最近的全玩家门户,那么它肯定足够接近。 然后,可能存在从该门户到Ghostlands的路径,或者从该门户所在区域的路径,无论哪种方式,它都应该能够映射它们并决定采用两个门户并飞行比直接飞行更快。

这就是一般想法。 在上面的代码示例中,我展示了路径的两种实现:BFA中的Alliance和Horde首都的主要航班管理员以及他们的PVP供应商。 联盟是直截了当的,直到玩家飞行在BFA区域中解锁为止,最快也是唯一的选择是直接在坐骑上奔跑。 部落的种类更多,因为主要的飞行大师在金字塔的顶部,而PVP供应商在金字塔的另一侧。

最直接的途径是跳下去,但如果没有地精滑翔机,您将遭受巨大的坠落伤害并死亡。 使用滑翔机时,它会从顶部跳下并在底部稍稍盘旋,直到到达地面为止,这只需要一分钟多的时间,而且可能会提早滑下滑翔机。 然后就有了寻路的机会,因为玩家可能会选择从大海豹到穆古姆巴拉的飞行路线,而距PVP供应商仅七秒钟路程。 一种算法可能会检查一条直接路径,然后从同一位置查询其他路径,发现它有一条通向Mugumbala的路径,Mugumbala有一条通向PVP供应商的路径,这些路径的总和比直接路径少20秒,因此这就是选择的路径。

您可能会告诉我,我为此感到非常兴奋。 只要某点存在,只要有人从这个想法中得到启发并将它摆在我面前,我就不会大惊小怪。