一个AR关卡设计得再精巧,也有一个前提:玩家家里得有这块场地。设计师在办公室里搭出一个“三米乘三米空地,四个方位各有一处敌人出生点”的关卡,拿到真实家庭里,会遇到完全不同的现实。有人的客厅里一张大沙发占掉一半空间,有人的书房只有一条能站人的窄缝,还有人在宿舍里,床与书桌之间只剩一步宽。同一个任务,被固定尺寸的关卡硬塞进去,结局要么是敌人刷在了墙里,要么是玩家为了够到宝箱不得不后退撞上床沿。
本文讨论的是另一种思路:不要让玩家迁就关卡,而是让关卡根据房间重新生成。这类方法在文献里常被叫作 Room-aware Game Generation 或者程序化AR生成。爱游戏的设计思路是把房间的扫描结果当作生成过程的输入,让AI在空间约束下布置敌人、任务、宝箱和互动点。文中的房间尺寸、数值和任务过程都是模拟场景,用来演示规则如何运行,并非真实测试数据。
固定关卡在真实房间里的三种失败
为什么要专门讨论这件事?先看固定关卡在家庭环境中最常见的三种失败方式。
- 不可达:任务点落在了玩家够不到的位置,比如高柜顶部、沙发背后的窄缝,或者床与墙之间一处根本站不进去的角落。玩家只能对着屏幕上的图标干着急。
- 不安全:任务点要求玩家后退、转身或侧移,而身后正好是楼梯口、阳台门或者一把没收好的椅子。AR的特殊之处在于玩家的眼睛盯着屏幕,脚下的现实并没有消失。
- 不匹配:关卡针对空旷场地设计,放进小房间后所有敌人都挤在半米范围内,节奏彻底崩掉;放进大房间后又显得稀稀拉拉,玩家要走很久才碰到下一个目标。
这三种失败有一个共同根源:关卡把“空间”当作已知常量。而在家庭AR里,空间是每个玩家各不相同的变量。解决办法不是让设计师为每种房型手工做一套关卡,那不可能穷尽,而是把关卡拆成“规则”和“布局”两层:规则由设计师写,比如“三处信标需要被依次激活,每处附近有守卫”;布局由系统根据房间实时生成。
第一步:从扫描结果里切出真正的可玩区域
生成的起点,是弄清房间里哪里可以玩。前一步的空间理解会给出地面平面、墙、家具的位置与类别,以及带置信度的导航网格;这一层的工作,是把它们进一步整理成“可玩区域”。可以把它理解为四个动作:
- 取出可站立的地面:地面减去家具占地,再去掉低置信度的区域,比如反光地板、光线太暗的角落。
- 排除禁区:窗边、楼梯口、门槛、阳台门、明显的易碎物周围,全部标记为不可引导玩家进入的范围。
- 识别主活动区:可行走区域往往是几块互相连通的空地,其中最大的一块被当作“主活动区”,玩家大多数动作发生在这里,任务应当以它为中心展开。
- 标记可利用的家具:桌面适合放置道具,沙发适合放置掩体,墙面适合放置需要抬头才能看到的目标。家具不再只是障碍,也是关卡元素的挂点。
提取出的结果,可以用几个简单的量描述:主活动区的近似长宽、最窄通道的宽度、家具挂点的数量与高度分布、禁区占比。这几个量就是后续生成的“房间画像”。需要强调的是,这份画像是关于房间形状的抽象,不需要保存房间的照片,更不需要上传。在爱游戏的设计里,扫描产生的空间地图默认保存在本机,用来生成当前任务,玩家也可以随时删除。
第二步:用约束采样,而不是随机撒点
拿到可玩区域,接下来才是布置任务点。最省事的办法是在区域里随机撒点,但随机撒点几乎必然出问题:两个敌人叠在一起,宝箱刷在角落,玩家必须贴着墙走才能触达。所以更合理的做法是约束采样,也就是先定规则,再在满足规则的位置里选点。以下几类约束几乎总是必要的:
- 最小安全间距:任务点与墙、家具边缘、禁区之间保留一个缓冲,让玩家在靠近和转身时不会碰到东西。缓冲要考虑玩家的手臂伸展和一次转身的范围,而不是只看点与点的距离。
- 可达性:从玩家当前站位到任务点,必须在导航网格上存在一条无障碍路径。不可达的点直接排除。
- 视线与角度:目标不能长期处在玩家背后,否则玩家要不停原地转圈;连续两个任务点之间的转角也应受限,避免要求玩家在狭窄空间里做大幅度折返。
- 不要求后退:这是AR特有的约束。任务设计上尽量让玩家向前或侧向移动;需要“拉开距离”的玩法,比如躲避远程攻击,只在后方有足够余量时才启用。
- 分散度:多个任务点之间保持最小距离,同时又不能分散到一次任务需要横跨整个房间,否则节奏太拖。
采样得到的结果还要过一遍“可解性检查”:把所有任务点连起来,检查是否存在一条完整的、满足上述约束的路径。如果不存在,就重采样或者降级,比如把三处信标缩减为两处,而不是把一个走不通的布局交给玩家。这里的道理与传统程序化关卡生成一致,不同的是,AR里的“地图”是真实房间,验证失败的代价是玩家撞上家具,而不是屏幕上的一次穿模。
第三步:难度按空间补偿,布局还要能复现
同样的敌人数量,在大客厅里显得从容,在小卧室里可能令人喘不过气。因此难度需要随空间调整。直觉上,面积越小就应该越少的敌人,但实际情况更复杂。
面积只是一个维度。一间小而规整的房间,玩家能站在中央转身,可以承受较密集的目标;一间面积不小却被家具切成几段的房间,玩家可能需要频繁绕行,同样数量的目标反而更累。所以补偿因素至少包括:主活动区的连通性、最窄通道宽度、目标之间的平均步行距离,以及任务允许的时间。
另一个方向是调整“玩法形态”而不仅是数量。大空间可以用“巡逻”“追逐”这类需要移动的玩法;小空间则更适合“原地转向”“上下抬头”“伸手够取”这类不需要位移的玩法。换句话说,房间越小,玩法越向“站桩式”倾斜,房间越大,玩法越向“走动式”倾斜。这样比单纯减少敌人数量,更能保持“玩起来有事做”的感觉。
还有一层是玩家自己的选择。有些玩家喜欢大幅度走动,有些人只想坐在沙发上轻松玩一会儿。爱游戏的设计思路是在任务开始前给一个明确的“活动量”选项,让玩家决定今天是站着玩还是坐着玩,系统再据此收缩或放开生成范围,而不是替玩家决定。
同一个房间,下次回来应该一致。生成还有一个容易被忽视的要求:可复现。玩家今天在书房打到第二处信标,明天回来,如果关卡整体被重新随机,之前的进度就没有意义;反过来,如果布局完全固定,玩家又会觉得重复。
比较合理的做法,是把布局拆成“种子”和“变化量”。同一个房间的空间画像,加上任务的固定种子,会生成一套基础布局,保证主要任务点位置稳定;变化量则控制少量元素,比如守卫的巡逻路线、宝箱内的道具,让每次回来有些新鲜感。布局与房间画像绑定,而房间的空间锚点由设备重新定位得到。锚点如果漂移,布局需要在下一次扫描后做小幅校正,这也是为什么空间锚点的稳定性会直接影响生成结果的一致性。
房间本身也会变。玩家挪了沙发,或者在桌上放了一摞书,画像就发生了变化。系统的合理反应,不是无声地把任务点搬到别处,而是在检测到布局明显变化后,请玩家确认“房间有变化,是否重新扫描”,然后按新画像局部重新生成,而不是整套推翻。
模拟场景:同一个“守护信标”,两间不同的房间
为了把上面的步骤具体化,看一个模拟场景。任务规则是:房间里需要激活三处“信标”,激活时有守卫靠近,玩家要在守卫到达前完成动作,最后回到起点领取奖励。以下两个房间的尺寸都是为演示而设的假设示例。
| 比较项 | 玩家A:大客厅(模拟) | 玩家B:小卧室(模拟) |
|---|---|---|
| 房间画像 | 主活动区宽敞,沙发靠墙,中间空旷 | 床占据一侧,书桌靠窗,可站立区域狭长 |
| 禁区 | 阳台门附近 | 窗边、门口一步之内 |
| 信标位置 | 沿主活动区分散,一处放在沙发扶手,一处放在电视柜台面 | 集中在床尾到书桌之间,一处放在书桌台面,一处放在墙面高处 |
| 守卫玩法 | 会绕沙发巡逻,玩家需要走动躲避 | 从门口方向直线靠近,玩家需要原地转身、蹲下或抬头 |
| 难度补偿 | 守卫数量适中,移动距离较长 | 守卫更少,但节奏更快,不要求后退 |
| 可解性检查 | 全部信标之间路径通畅 | 发现第三处信标只能靠近窗边,自动换成书桌台面 |
值得注意的是玩家B这一栏。生成器最初可能把第三处信标放在窗边,因为那里空间最大、点位最“合理”;但禁区规则把窗边排除,于是它换到了书桌台面。玩家看到的只是“信标出现在书桌上”,看不到中间被拒掉的候选点。好的房间感知生成,正是让玩家感觉不到系统的约束,只感觉到任务恰好适合这间屋子。
在这个模拟里,两位玩家玩的是同一条规则、不同的布局。他们的游戏内容并不相同:一个在走动中躲避,一个在原地应对。但玩法的目标、奖励和叙事完全一致,所以仍然可以组队交流、比较心得。这也是房间感知生成想达到的平衡:规则保持一致,形态因地制宜。
生成得再聪明,也得先保证玩家不受伤
AR玩法有一条其他游戏没有的底线:玩家的身体在真实空间里。因此生成器在布置任务时,必须把安全当作硬约束,而不是可以被难度目标覆盖的软偏好。一些具体做法包括:
- 不设计需要奔跑、快速转身或大幅度跳跃的任务,特别是没有确认周围空旷时。
- 楼梯、窗边、阳台、炉灶附近默认标记为禁区,即使空间理解认为那里“可行走”。
- 在任务开始前提示玩家清理脚下障碍,并在低置信度的房间里主动缩小活动范围。
- 玩家一旦快速移动,或追踪质量下降,就暂停新目标的生成,先让画面稳定。
- 提供随时暂停、随时退出的入口,并在长时间游玩后提醒休息。
这些约束有时会让玩法显得保守,但对于一个要走进真实家庭的产品,保守是合理的。空间理解的细节可以参考AR角色怎么知道桌子不是路,而扫描不理想时如何做,可以看看识别不了房间的排查思路。
关卡编辑器不在游戏引擎里,在玩家家里
传统游戏里,关卡编辑器是设计师手里的工具;在空间游戏里,一个越来越明显的事实是:真正的关卡就在玩家的房间里,设计师能做的,是写出足够灵活的规则,让房间成为关卡的原材料。这意味着设计重心的转移:从“摆放什么”转向“在什么条件下摆放什么”,从固定的地图转向一套能适应任意地形的约束系统。
这条路并不轻松。生成需要稳定的空间理解作底,需要严格的安全约束作边界,需要可复现的锚点作依托,还需要保证不同房间里的玩家感受到的是同一款游戏。它做不到完美,玻璃、镜子和杂乱的房间仍会让画像出错,小到不能容身的空间也没有任何算法能凭空变出场地。但至少方向是清楚的:让AI去读房间,而不是让玩家去迁就关卡。当同一个任务在每个家里都长得不一样,却又都恰好合适,这才是AR任务本该有的样子。