让一个虚拟角色稳稳站在地板上,已经是不小的技术成果;但玩家很快会发现,它对“站在哪里”毫无概念。它可以从沙发的正中央穿过去,可以把一只宝箱放在悬空的半米高处,也可以从一面实心墙里走出来。这些错误的共同原因是:系统只认识几何,不认识用途。空间游戏想更进一步,需要理解的不只是“这里有一个平面”,而是“这个平面可以用来做什么”。
几何层:知道形状,还不知道是什么
空间理解的第一层是几何。设备通过摄像头与惯性传感器估计自己的位置,逐渐积累出稀疏点云,再拟合出平面,进一步构成粗略的网格。到这一步,系统能回答的问题是:地面在哪一个高度,墙面朝向哪里,前方一米处有没有一个较大的凸起。
几何层足以解决最基础的问题:角色不会沉到地下,虚拟物体不会漂在半空。但它无法区分一张桌子和一堆纸箱,也不能判断一块平整的水平面是“可以放东西的桌面”,还是“悬空的窗台”。对几何层来说,所有凸起都只是障碍,所有平面都只是平面。
这也是为什么“只认识墙和地板”的游戏体验往往显得空洞:角色行为只有“走到玩家附近”和“停在地面上”两种,任务只能是“找到一个漂浮的图标”。空间的复杂性被压扁成了一张平坦的舞台。
语义层:给形状贴上名字
第二层是语义。系统利用图像分割、物体检测等方法,把几何结构对应到具体类别:这是沙发,这是桌子,这是门,这是窗,这是一盆植物。这一步通常依赖视觉模型,输出的是类别以及大致的范围。
语义层带来的第一个变化,是可以按类别设计玩法。“怪物从门口进入”比“怪物随机出现在某个位置”更有空间感,因为门是现实里本来就用来进出的地方;“角色停在沙发旁边打量玩家”比“角色站在客厅中央”更像是这个房间里的居民。类别信息还能帮助过滤:不要把互动点放在植物、镜子或电视屏幕上,因为它们要么不稳定,要么容易造成误识别。
但语义层也有天然的局限:类别只告诉系统“它是什么”,没有告诉它“能拿它做什么”。同样是“桌子”,一张咖啡桌只有膝盖高,一张书桌可以放笔记本电脑,一张餐桌则可能有一半被杂物占据。同样是“沙发”,有的是三人座,有的是单人椅,有的靠着墙,有的摆在房间中间。只知道类别,玩法仍然是粗糙的。
可供性层:能坐、能放、能通过、不能靠近
可供性(Affordance)这个词来自感知心理学,意思是物体为使用者提供的行动可能。用在空间游戏里,可以理解为:系统要为每一个被识别的物体,估计它对角色和玩家分别意味着什么。
- 桌面:可放置小型道具,高度决定了角色是站在旁边还是需要“跳上去”;边缘位置决定道具会不会被玩家碰掉。
- 沙发:可坐的座面、可倚靠的靠背,以及玩家自己也许正坐在上面,这时需要避开玩家的身体。
- 门:可以通过的开口,位置固定,适合作为事件入口,但通常也是现实里人来人往的地方,不能放置需要玩家长时间停留的互动点。
- 窗与楼梯边缘:不可靠近区域,任何要求玩家走近、探身、后退的玩法都应回避。
- 可移动物体:椅子、纸箱、宠物,它们的位置随时会变,不适合作为长期锚点。
可供性层最有价值的地方,在于它把“空间理解”变成了“玩法输入”。角色的路径规划不再只依赖几何,而是知道哪里“允许通过”、哪里“尽量绕开”;任务生成不再只随机采样平面,而是能按类型选点。关于AR角色如何在房间里规划路径,可以参考AR角色如何理解客厅里的桌子和地面;关于同一任务如何随房间重新布局,则见房间感知的AR任务生成。
一个模拟场景:书房里的同一个任务,三种理解
下面是一个模拟场景,房间尺寸与物品均为示例。假设玩家的书房里有一张书桌、一把转椅、一个靠墙的书架、一扇朝向阳台的落地窗,还有一块窗帘。游戏任务是“帮一只虚拟小机器人找回散落的零件”。
- 只有几何层:系统把书桌桌面、地板、书架前的空地都当成平面,零件被随机撒在其中几处。结果可能是有一个零件落在了转椅座面的斜边上,另一个卡在书架的缝隙边缘,玩家需要趴到地上去够。机器人从书桌上直接“穿”过去,落地窗前也放了零件。
- 加上语义层:系统知道有书桌、椅子、书架、窗。零件不再放在椅子上或书架侧面,机器人也会从书桌旁边绕行。但窗前仍可能有一个零件,因为系统只知道那是“窗”,并未将其和“不要引导玩家靠近”联系起来。
- 加上可供性层:桌面被标为可放置区,零件分布在桌面靠内的位置,避免掉落;窗边区域被标为低优先或禁入,零件不会出现;机器人的“家”被安排在书架旁的一块空地,因为它既稳定又不影响玩家走动;最后一个零件放在门口附近,作为“从门外进来”的剧情点,但玩家只需要转身就能看到,不需要走出房间。
三层理解下,同一个房间产生的是三种截然不同的玩法。差别并不在于模型多大,而在于系统是否把空间当成“有用途的场所”,而不是“有形状的背景”。
识别会出错:矮桌、窗帘与镜子
空间理解不是万无一失的,几个典型错误值得单独说。
- 矮桌被当成地面:当桌面与地面在视觉上颜色接近、高度差较小,平面检测可能把它们合并成同一个水平面,导致角色“陷入”桌腿之间,或者道具被放在了桌子里面。
- 窗帘被当成墙:厚窗帘外观上与墙面接近,系统可能认为它是一堵实心墙;但窗帘会飘动,后面还是窗,靠近窗帘的互动点在现实中容易让人不自觉地伸手去拉窗帘。
- 镜子与玻璃:镜子反射出另一个“房间”,会让点云出现虚假的深度;玻璃则可能让摄像头看不见它的存在。这类物体应当被主动排除在互动区域之外。
- 光线与遮挡:暗处的物体无法被稳定识别,被杂物半遮挡的家具容易被误判为别的类别。
面对这些错误,爱游戏的设计取向是:不确定就降权,涉及玩家安全的区域宁可保守。具体来说,置信度较低的物体不参与关键任务的放置,被判定为窗、楼梯、玻璃的区域和邻近范围统一视为禁入,任务生成时给出的是“可选布局”而不是唯一布局,玩家可以在预览中手动排除某个位置。这些做法会让游戏偶尔显得“不够聪明”,但比让玩家靠近窗边捡零件要好得多。
与VR、AR、MR的关系
语义与可供性理解在三种形态里的分量并不一样。VR以虚拟环境为主,现实空间的语义理解主要用来划定安全边界;AR是在现实画面上叠加数字信息,语义理解能让叠加更贴切,但即使不理解,也能勉强“贴上去”;MR要求虚拟物体理解并参与真实空间,语义与可供性几乎是前提,没有它,虚拟角色就无法真正坐在沙发上,也无法被真实的桌子挡住。
换句话说,空间理解的深度,决定了游戏离MR有多近。它也和界面设计相关:如果系统知道玩家正在对着哪一类物体做事,就可以更有依据地决定什么时候显示提示,关于这一点可参见空间界面为什么要研究“什么时候出现”。
好的空间理解,让玩法从“摆放”变成“发生”
把角色放进房间只是起点,让角色的行为与房间里的物体发生关系,才算真正开始利用空间。认识墙和地板,只能让虚拟内容不穿模;理解沙发、桌子、门能做什么,才能让内容在房间里“有理由地存在”。
与此同时,这套能力也带来责任:越是深入理解玩家的房间,越要谨慎处理这些数据。爱游戏在设计上倾向于把空间地图和语义结果保存在设备本地,玩家可以查看、清除,并且不因为“识别出了某类物品”而做任何推断或展示。空间理解的目标,是让游戏更懂房间的用法,而不是更懂房间的主人。具体行为以正式版为准。