Warmer Globe · 思考的食粮
引擎把地理变成热度,把地点之间的空间转化为一种光芒,引导每一次猜测逼近那个隐藏的国家。
本文以英文撰写和编辑。此中文版本由机器翻译生成;凡涉及准确性之处,以英文原文为准。 阅读英文原文 →
游戏的核心是一个简单的循环,每一回合都会重复一次。一个国家隐藏着等待被找到,玩家则说出另一个国家。引擎读取这次猜测的纬度和经度,测量它与隐藏国家相距多远,并返回一种光芒,告诉玩家该往北还是往南、往东还是往西。这个循环一直持续到找到隐藏的国家,然后针对下一个国家重新开始,直到这次远征的五个国家全部被找到。每一次猜测都为下一次提供依据,而热度成为玩家用来引导思考的唯一信号。3
引擎把每个国家都看作一对数字。纬度表示一个地方距离赤道有多远,经度表示它距离本初子午线有多远。这两个坐标确定了地球表面上的一个点。引擎就以这种方式存储每个国家,于是两个国家之间的每一次比较,都变成了两对数字之间的比较。它们之间的距离通过数学方法计算出来,而这个距离就成了玩家看到的热度。1
玩家说出的不只是一个词,而是一个带有精确坐标的位置。引擎并不关心名字本身。它关心的是这个名字指向哪里。出现的热度与猜测在任何文化意义上的对错无关。它只关乎一个测量值:球面上的两个点相隔多少公里。正是这个测量值驱动着玩家做出的每一个决定。3
远征的每一站都从一个玩家不知道的国家开始。这个国家从全部国家的集合中选出,由引擎秘密保存。玩家无法直接看到它。了解它的唯一途径,是每次猜测后出现的热度。引擎把隐藏国家存储为一个纬度和一个经度,与游戏中其他每个国家完全一样。2
隐藏国家并不是在不可预测的意义上随机选出的。它由一个种子抽取,种子是一个决定出现哪些国家的数字。这意味着同一个种子总会按同样的顺序产生同样的五个隐藏国家。每日游戏使用基于日期的种子,因此同一天游玩的每个人面对的都是同一批隐藏国家。这让游戏可以复现,并在所有玩家之间保持一致。3
由于隐藏国家以坐标形式存储,引擎可以用同样的方法把它与任何其他国家进行比较。隐藏国家没有任何特殊待遇。它只是另一组纬度和经度数值。唯一的区别是,在玩家猜中它之前,它不会被揭晓。玩家必须根据自己猜测的热度来推断它的位置。3
当玩家输入一个国家名称时,引擎会在它的全部国家列表中查找这个名称。每个国家都存有固定的纬度和经度。引擎取出所猜国家的这些数值。现在它有了两对坐标:一对属于猜测,一对属于隐藏国家。引擎现在就可以测量两者之间的距离了。3
一个国家的纬度表示它距离赤道有多远。这个数值从赤道的0度到两极的90度不等。经度表示它距离本初子午线有多远,本初子午线穿过格林尼治。这个数值从0度到东经或西经180度不等。这两个数字合在一起,就能精确定位地球表面上的一个位置。引擎在每一次比较中都使用这些数字。2
玩家说出的名字,变成了引擎可以使用的一对数字。名字本身与计算无关。无论玩家猜的是靠近赤道还是靠近两极的国家,引擎都一视同仁。它取出纬度和经度,并测量到隐藏国家的距离。出现的热度完全是这个距离的函数。3
两个国家之间的距离是沿着地球表面测量的。地球被视为一个平均半径约为6371公里的球体。距离是这个球体表面上两点之间的最短路径。这条路径位于一个大圆上,大圆是圆心与球心重合的圆。距离等于两点之间以弧度计量的圆心角,乘以球体的半径。1
为了根据纬度和经度计算这个距离,引擎使用半正矢公式(haversine formula)。即使在较短的距离上,更简单的方法会丢失精度,这个公式在数值上依然准确。半正矢公式接收两个点的纬度和经度,返回它们之间的距离。这个距离以公里为单位,因为地球半径是以公里给出的。球面上两点之间可能的最大距离是对跖点之间的距离,约为20000公里。1
大圆距离是测量球面距离的标准方法。正因如此,它在导航中被广泛使用。把地球视为球体,能让结果与真实距离的误差保持在约0.5%以内。这样的精度足以满足游戏的需要。出现的热度反映的就是这个距离,并被缩放到玩家能够读懂的范围内。1
引擎把距离映射为玩家看到的热度值。这种映射是平滑且连续的。当距离为零时,热度显示为沸腾。随着距离增加,热度平滑地下降。即使到了世界的另一端,热度也永远不会完全趋于平坦。这意味着两个遥远的猜测仍然可以通过它们的热度值加以区分。3
热度刻度的设计保证了越近的猜测总是显示得越热。离隐藏国家更近的猜测,总会比更远的猜测发出更强烈的光芒。这形成了一个玩家可以追随的梯度。朝隐藏国家移动,热度就会上升。远离它,热度就会下降。玩家利用这个梯度来调整下一次猜测。3
这种映射是严格单调的。没有平台期,也没有平坦区域。每一个距离都对应一个唯一的热度值。这保证了热度始终能提供有用的信息。即使一次猜测位于世界的另一端,它的热度值也与任何其他遥远猜测的热度值不同。玩家仍然可以从每一次尝试中有所收获。3
除了距离之外,引擎还会计算从猜测地指向隐藏国家的初始方位角。这个方位角是一个罗盘方向,从所猜的位置指向隐藏的位置。它以度为单位,北为0度,东为90度,南为180度,西为270度。方位角告诉玩家大致该朝哪个方向移动才能更接近目标。3
方位角根据两个点的纬度和经度计算得出。它给出的是沿大圆从猜测地前往隐藏国家时的行进方向。这个方向在整条路径上不一定保持不变,但它是起点处的方向。方位角在热度之外提供了额外的指引。3
并非每种显示方式都会向玩家展示方位角。方位角由引擎计算,界面可以用它来提供提示。玩家可能会看到一个罗盘箭头,或者一个方向指示器,也可能根本没有方向提示。无论是否显示,方位角都作为一个计算值存在。它是引擎对每次猜测所做完整计算的一部分。3
游戏的每一轮都被设计成一次五站远征。种子按固定顺序抽出五个互不相同的隐藏国家,玩家逐一攻克。每一站的猜测次数没有上限;玩家不断说出国家名称,从每次尝试的热度中学习,直到找到隐藏的国家。3
远征结构赋予了游戏一个开头和一个结尾。解开一站,玩家就会前往下一个隐藏国家,五个国家全部找到后,远征即告结束。旅程的代价以猜测次数计算:如果第一次猜测就找到该站的国家,这一站值1000分,每多猜一次少100分,但最低不少于100分,因此一次猜中的国家,其分值是猜十次才找到的国家的十倍。3
这种结构是每日游戏设计的一部分。每一天,一个新的种子都会产生一条由五个隐藏国家组成的新链条,每位玩家都从同一次全新的远征开始。种子确保同一天的所有玩家以相同的顺序面对相同的五个国家。这为所有参与者创造了一种共同的体验。3
隐藏国家及其游戏顺序都由种子决定。种子是一个控制隐藏国家随机选择的数字。同一个种子总会按同样的顺序产生同样的五个隐藏国家。这让游戏具有确定性且可以复现。当每日游戏使用基于日期的种子时,当天的所有玩家都会得到同一批隐藏国家。3
基于种子的确定性是游戏设计中的一项标准技术。它让游戏在不同的运行和不同的玩家之间保持一致。种子可以分享,任何拿到种子的人都能复现一模一样的游戏。这对于分享游戏、验证结果,以及创建只有唯一正确答案的挑战都很有用。
种子并不影响引擎计算距离或热度的方式。这些计算纯粹是数学性的,只取决于各个国家的纬度和经度。种子只决定哪些国家被隐藏,以及它们的顺序。一旦选定了这些国家,游戏的其余部分就按照距离和热度的规则进行。3
haversine formula, taking the Earth's radius as about six thousand three hundred seventy-one kilometres and the greatest possible separation, at the antipode, as about twenty thousand kilometres. It also computes the initial bearing from a guess toward the target, a compass direction to point the way. A round is a five-stop expedition, and its five hidden countries and their order are drawn from a seed, so the daily game is the same for everyone.