玩家在客厅里刚把三个AR信标激活了两个,门铃响了,他走到玄关取快递,顺便去厨房倒了杯水,两分钟后回到沙发。这时候,那两个已经激活的信标还在原来的位置吗?第三个是不是应该原地等着?如果他中途把手机放下、屏幕熄灭,回来时又会怎样?
这些问题看起来琐碎,却决定了AR任务能不能真正“属于”一个房间,而不是只在摄像头刚扫过的那一小片区域里存在。下面按一次完整的离开和返回来讲:系统保存了什么,走出去时发生了什么,回来后如何找回,以及爱游戏在设计上怎样取舍。文中的房间和时间都是模拟场景中的假设。
走出房间那一刻,系统到底丢了什么
先澄清一个常见误会:玩家走出房间,并不意味着系统“忘了”房间。追踪的本质,是设备不断把当前画面与已知的环境特征对比,估计自己的位置。走出去以后,视野里全是新的场景,旧特征不再出现,此时有两种可能:
- 系统继续在新的区域里建图,把玄关和厨房也纳入进来,并与客厅的地图相连,形成一张更大的地图。
- 系统只保留客厅的局部地图,在新区域里另开一张地图,两张地图之间没有建立联系。
两种做法的结果截然不同。前者让玩家在整个路径上都保持定位,但地图越来越大,需要更多内存和计算;后者省资源,但回到客厅时,需要靠重定位重新认出房间。多数情况下,两者都会用到:短距离走动保持连续建图,长时间或大范围离开则保存局部地图、暂停追踪。
局部地图与持久化锚点:保存的是什么
所谓局部地图,并不是一张房间照片,而是特征点与它们相对位置的集合,加上一些用于识别的描述信息。它记录的是“书架边缘、桌角、窗框这些特征长什么样、彼此相距多远”。任务锚点则是绑定在这些特征之上的物体位置。
持久化锚点,就是把这些绑定关系一并保存下来,包含物体相对于特征集合的位姿,和任务的状态,比如“信标一已激活、信标二已激活、信标三未激活”。如此,只要地图能够被重新认出,任务就能原样恢复。这里保存的是两部分内容,缺一不可:空间部分决定东西在哪儿,任务部分决定东西处于什么状态。
需要注意的是,空间部分是有“保质期”的。房间里的家具被挪动、墙上挂了新画,局部地图与现实的差异会变大。系统需要为地图打上时间和置信度,越久没被验证的区域,越应该在恢复时被谨慎对待。
门口,是最容易出问题的地方
房间之间的过渡地带,是追踪最脆弱的地方,原因有三个。
- 光线突变:从明亮的客厅走进昏暗的走廊,曝光跟不上,画面短暂过曝或过暗,特征点提取会中断。
- 视野收窄:门框会挡住大部分视野,只剩下一条窄缝,而穿过门的瞬间,设备往往在快速转身,运动模糊叠加特征稀少。
- 特征重复:走廊里的门、踢脚线、墙面往往高度相似,系统可能把两处不同的位置认成同一处,出现错误的回环。
因此爱游戏在设计上把“门口”视作一类特殊区域:追踪质量下降时不强行显示任务物体;在经过门口时提示玩家“可以稍慢一点”,或者在追踪不稳时干脆暂停任务计时;同时,任务点尽量不安排在门口附近,因为那里既不稳定,也常有人走动,是玩家最容易磕碰的位置。这也与锚点漂移的成因直接相关。
多房间地图:拼接、回环与重定位
如果游戏要求玩家在多个房间里活动,比如客厅里找钥匙、书房里解锁,就需要把几个局部地图拼接起来。拼接有两个难点。
第一是坐标对齐。每个局部地图都有自己的坐标系,要把它们放在同一个坐标系下,需要在过渡区域里找到重叠的观察,比如同时被两张地图看到的门框。重叠越少,对齐越不可靠。第二是误差累积:从客厅走到书房再走回来,如果路径中间没有回环,回到客厅时估计位置和真实位置可能已经差出一大截。回环检测在这里起作用,玩家一回到客厅,系统认出熟悉的沙发,就可以修正整条路径的偏差。
回到原房间后的重定位,则是一个“认出来”的过程:系统从当前画面里提取特征,与保存的局部地图匹配。如果匹配成功,就得到设备在旧地图里的位置,任务恢复。如果失败,常见原因是房间变了、光线差别太大,或者玩家站在一个之前没扫过的角度。此时合理的做法是引导玩家“请对准沙发和书架附近,慢慢左右移动”,而不是直接判定任务丢失。多试几次仍然失败,才提示重新扫描,并尽量保留任务进度,只重新放置物体。
模拟场景:从客厅到厨房,再回到客厅
假设有一个模拟的户型:客厅通过一段短走廊连着厨房,两处之间有一扇常开的门。玩家在客厅激活了两个信标,然后去厨房。
- 离开:玩家走向走廊,系统检测到相机离开客厅主要特征区域,此时把客厅局部地图和任务状态存档,当前任务暂停并淡出物体,提示“任务在客厅,等你回来”。
- 过渡:走廊光线偏暗,追踪短暂失效。系统不做任何物体放置,只保持后台建图。厨房里特征较丰富,追踪恢复。
- 停留:玩家在厨房停留两分钟,其间手机息屏。系统没有继续追踪,只保留存档。
- 返回:玩家走回客厅,重新打开游戏。系统尝试重定位,先匹配沙发和电视柜的特征,匹配成功,两个已激活的信标回到原位,第三个仍待激活。
- 异常:如果玩家在这段时间里把沙发挪了位置,重定位可能只在墙面和电视柜上成功,沙发区域的锚点置信度低。系统会把靠近沙发的那个信标标记为“待确认”,先请玩家在附近慢慢扫描,然后再显示。
整个流程里,系统对“不确定”保持诚实:不确定时暂停、淡出、请玩家协助,而不是让任务物体悬在半空里。
地图占多少内存,又该留在谁手里
保存局部地图带来两个现实代价:资源和隐私。
资源方面,地图越大,加载和匹配越慢,占用的存储也越多。合理的做法是限制每个房间地图的范围,只保留与玩法相关的部分;长期没有使用的地图自动清理,或者提示玩家是否保留;多个房间的地图不必同时驻留内存,只加载当前所在的那一张。
隐私方面,房间地图含有家里的真实布局,即便不含照片,也能透露不少信息。在爱游戏的设计里,房间地图默认只保存在本机,不上传;玩家可以在设置里查看已保存的房间,并逐个删除;换设备时也不默认迁移,而是重新扫描,详见换手机后哪些数据同步、哪些不同步的说明。具体界面与流程以正式版为准。
好的任务,本来就不该依赖玩家跨房间
技术上可以保存、拼接、重定位,不代表玩法就应该建立在多房间之上。多房间意味着更多失败点:过渡区域追踪不稳、地图对齐出错、玩家在走动中的安全风险。所以爱游戏的任务设计倾向于以单个房间为完整单元:一个任务的全部关键内容,都能在当前房间里完成;需要跨房间的内容,作为可选的延伸,而不是必需的步骤。
房间里的任务也不应因为玩家的短暂离开而失败。合理的规则是:离开时自动暂停,返回时提示恢复;长时间离开则保存进度,允许玩家在下一次进入房间时继续。设备重启也一样,任务状态存在本地存档里,重启之后只需要重新定位,不需要重新开始。
说到底,空间边界的意义,不只是告诉系统“这个房间到哪里为止”,也是在告诉玩家“这个任务的范围到哪里为止”。边界画得清楚,离开就是一次平静的暂停,而不是一次意外的丢失。想了解任务如何根据房间形状生成,可以参考根据房间重新生成AR玩法那篇文章。