社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

解谜游戏、知识锁和机器学习

GameRes游资网 • 3 天前 • 29 次点击  

0. 解谜游戏


近些年玩家高评价的“神作”,越来越多的非解密为主打的游戏开始往游戏内加入解密的部分,近的如蓝途王子、动物井,远的如fez,谜题越来越成为游戏丰富性的一个重要填充内容。

图片

Steam上的Hidden Depths捆绑包,一口气捆绑了5个口碑超高的探索类游戏


最近恰好心血来潮研究了一下《Öoo》的解谜和关卡设计,所以今天我们来聊——谜题。

并且看看谜题的设计中如何用到知识锁,它们和机器学习有什么共通之处。

1.谜题

1.1 游戏内容

我们在玩游戏时,究竟在玩什么?

我这里给出自己的下的定义,游玩游戏就是游玩游戏机制和游戏内容,机制指某个规则下做出抉择的情况,内容指故事和关卡。关卡又可以由游戏机制在某些情况下衍生而出,比如推箱子,推箱子的基础规则是:

角色可以四方向按格子进行移动
角色移动时转向目标方向
角色不能向墙的方向移动
角色可以向有箱子的格子移动
箱子被推时若被推方向后边格子为空则角色移动到箱子当前格子,箱子移动到目标格子
箱子被推时若被推方向后边格子不为空,则角色和箱子不移动
地图中存在一定数量箱子归位目标点
目标点全部被箱子归位后过关

简单的机制配合被精心思考的关卡,构成了游戏中的谜题,也就是“游戏内容”。

图片

不过由于推箱子自身规则实在太少,如果要做新的推箱子肯定要添加规则,patricks parabox就是把递归的各项规则添加变体规则的游戏


那么,什么是关卡?

关卡就是能在一定程度上阻挡玩家完成游戏的游戏组成部分,关卡的主要构成就是谜题和战斗,玩家在通过关卡的过程中需要做出不同的判断和执行。

这里的关键在于不同的判断和执行,同一个关卡,如与同一个怪物战斗或者砍100棵挡路的树,由于情景和执行过程不同,会自发涌现出不同的情况,导致判断过程也不同,所以近似的关卡也可以涌现出不同的体验;同理,如果不同关卡的判断和执行过程相似,也会导致相似的体验,从而使人感觉无聊。

至于战斗或谜题的选择,在低成本小团队的制作中,由于战斗或是美术或是动画的制作困难,谜题就成为了优先之选。

所以我们看到,在独立游戏市场上充满了各类解谜类小游戏,包括各类推箱子、扫雷、数独的变体,因为它们的机制简单,容易制作,难点在于内容,也就是谜题的设计。

图片

推箱子的变体还有baba is you,以及今年的沉星之序,虽然后者的制作成本并不低


但是成也萧何败也萧何,正是因为制作简单,此类游戏越来越由于缺乏独特优秀的画面或是激烈的战斗而难以吸引到大众玩家,容易被市场边缘化,基本上变成了只能一个人玩的游戏,一个人的aha moment。于是制作者们不得不加入更多的巧思来服务于游戏外的部分,来服务于市场营销,譬如邪恶冥刻的旧数据meta部分和动物井的社区解谜等,此为后话。

1.2什么是谜题


谜题是具有一定解法,并且能够在解题之前传授给玩家部分解题工具用以解开谜团的一种关卡。

在以上推箱子例子中,玩家一开始就知道所有的规则。所以玩家做的事情就是思考谜题的解法,而推箱子又具有状态转移的特性,与下围棋类似,所以可以衍生出的情况极多,难以靠遍历所有情况解决,所以很多情况下变成了在极高计算深度的情况下寻找一个目标的解法。

这种寻找解法的过程经常十分枯燥,而且时不时就需要推倒重来,体验类似于解一道麻烦的数学问题。当玩家卡住且长久没有进展时,自然就会从心流状态脱离。

图片

baba is you最后关卡的选地图界面都看着让人头大


像在《只狼》或者《黑魂》这样的游戏中,我们虽然认为它们的难度偏高,但打不过的boss还可以一次次尝试,玩家始终有事可做,每次挑战多躲开的一个招式或者多砍掉boss的一部分血量,都可以让人感觉到心理上的进步。

而在这类解谜游戏中,如果没有攻略,玩家在原地思考一两个小时而没有一点有效操作,带来的挫败感无疑是巨大的,让人感觉这个游戏无法正常继续进行下去了,所以当下的谜题设计很难继续延续这样的路线。

那么当下的谜题是怎么做的呢?

2 谜题从何而来

2.1 介绍

炸弹毛毛虫的大冒险! 《Öoo》是一款探索解谜平台游戏,在这个可爱又略显奇妙的世界中,探索炸弹的各种使用方式吧!

图片

以上为Öoo的steam简介,以下为表述方便,统称ooo。

Ooo是一个使用炸弹来攻克谜题的平台游戏,玩家通过放置炸弹来移动自己或是破坏墙壁,解开谜题并不断过关。

表面上看平平无奇,让人感觉“哦,又一个平台跳跃解谜游戏”,但能突出重围,获得如此多的关注,一定有其过人之处,而秘密其实就是它公式化的知识锁谜题设计。

这里说ooo的公式化,并不是说它做得不好,而是它的设计结构外显有种类似教科书一样的严密感。

而知识锁的设计区别于以往游戏中,玩家会在冒险过程中获得能力从而解开之前难以通过的难点,知识锁则是一开始就提供了玩家足够的工具,只不过玩家缺少使用工具的知识,所以当玩家拥有知识时,谜题也就解开了。

图片

星际拓荒的游戏核心是解读古代文字,而使用工具的知识就在这些文字中


比如当只能使用加法时,5+5+5+5+5这种计算需要一个个相加,假如有100个5相加,计算起来效率就显得极低,而当我们学会了乘法这样的工具,5*5和5*100的计算几乎都没有什么难度了。

游戏的很大一部分乐趣来源于新鲜感,像推箱子和数独,这种全局规则不变的解谜让人感觉乏味的很大一部分原因就是没有引入新的玩家能力或者环境机制,而知识锁就很好地解决了这个问题。

下面我们通过模仿机器学习的过程来反推ooo的设计,并且与机器学习的过程做对比,机器学习本质还是模仿人类的学习,但由于很多人类自己并不清楚自己是怎么学会东西的,所以反倒是借用机器学习的名词来对应会比较清晰。

2.2监督学习

监督学习是机器学习中的一个重要概念,以下是百度百科的解释。

图片

看着一头雾水对吧,我们举例来说明。

我们展示给机器一个苹果,告诉它这是苹果,具有水果分类、圆形、红色、口感比较脆、甜味的,这个就是苹果。

相当于给“苹果”这个名词添加一系列定义,用以说明“苹果”和这些定义的关联关系。

当然,这里下定义也会存在漏洞,比如苹果味道可能是酸的,可能颜色是黄色,口感可能比较软,可能被切掉了一半不再是圆形,西红柿或者西瓜的瓤也符合以上很多定义。

图片

这是...苹果吗?


但是数据集足够大,我们手动去标注,这是苹果,这不是苹果的情况下,机器还是能学会什么是苹果的。

但是监督学习和我们以上聊的解谜有什么关系呢?

很多人可能早已不记得自己是怎么学会加法或者乘法的了,实际上这种学习过程就是监督学习,而在解谜游戏中,这样的学习过程要被重新提出和重复,所以搞清楚人类是怎么学习的,就至关重要了。

在ooo的游玩过程中,我们有以下性质需要学习

角色

角色可以左右移动

角色在空中可以移动

角色可以在身下放炸弹垫高

角色可以头顶炸弹

角色可以头顶两个炸弹


炸弹自身

炸弹可以把角色提高

炸弹可以把角色炸高

炸弹可以让角色快速移动

炸弹可以跨屏幕保留(定时)

炸弹具有3*3爆炸范围

两个炸弹

先放的炸弹先触发

炸弹爆炸可以把炸弹推出去

炸弹可以把人推出去

一个炸弹上可以放两格物体

先上再左右或者先左右再上的位移

或者两次左右的位移,也可以等下落

炸弹上物体少时惯性更大,惯性只计算上边一层物体

上一个炸弹爆炸之后可以放下一个炸弹

墙
墙有延时恢复墙
墙有睡眠墙
睡眠墙切版恢复
炸弹可以开墙
炸弹可以卡住墙
炸弹可以开隐藏墙
隐藏墙位置1、2

钥匙
炸弹可以位移钥匙
钥匙被位移可以穿墙
钥匙去到错误的位置一段时间会回到原位

旗
旗可以吃钥匙

刺
刺可以扎死玩家
刺可以扎爆炸弹

传送
传送点可以传送
传送点可以保留速度
进入过的房间就算没有经过传送点也可以使用对应房间的传送点

按钮
炸弹可以按按钮
取消炸弹可以放开按钮
玩家可以通过炸弹按按钮设置定时

平台
炸弹会往下掉
炸弹掉在平台上不会继续掉

酸液
玩家在酸液上会死
炸弹在酸液不会爆炸

而谜题就出在这些性质和玩家相互交互的过程中。对比以下推箱子的性质。

角色可以四方向按格子进行移动

角色移动时转向目标方向
角色不能向墙的方向移动
角色可以向有箱子的格子移动
箱子被推时若被推方向后边格子为空则角色移动到箱子当前格子,箱子移动到目标格子
箱子被推时若被推方向后边格子不为空,则角色和箱子不移动
地图中存在一定数量箱子归位目标点
目标点全部被箱子归位后过关

怎么样,是不是看上去多太多了。

但是我们要区分玩家自身的能力和场景物体交互的能力这两者的区别,实际上在单个场景中玩家需要考虑的内容往往并没有那么多,而且这些内容也是逐步一点点学到的。

我们稍后举例来说明玩家在游戏里学习的过程,这里先讲强化学习的部分。

2.3强化学习

依旧上定义,也是有点不知所云的说明。

图片

我们沿用上述苹果的例子,通过标注训练,ai知道了什么是苹果,之后变成我们出题让ai回答。

这里有两张图片,如果ai选中是苹果的部分就获得加分,若选错则扣分。反复对ai进行考试,直到ai获得尽量高的分,当然也有可能出现过拟合情况,这里不表。

以上这个过程就被称为强化学习,而人类的刷题和考试,其实也是强化学习的表现。

所以监督学习和强化学习是怎么结合到谜题设计中呢?又是如何构成知识锁的呢?

2.4 Ooo的学习与考试

Ooo的谜题设计结构为,把整个游戏划分为若干章节,每章节包含普通谜题和考试谜题,先展示最后需要考试的内容,然后再提供一系列组成考试内容的谜题给玩家去学习,玩家完成学习后自然而然就会理解如何做出考试题目。

而考试前置的设计就是这个过程中的关键设计,带着问题找答案正好契合了解谜游戏让人感到爽感的Aha moment,也就是让ooo被捧上神坛的原因。

玩家完成学习内容的过程就是我们上文提到的监督学习,而学习过程中完成一系列变式并通过考试的过程就是强化学习。

我们这里取游戏里一章的内容来进行举例说明。

先来看考试部分。

考试内容

第一章:单炸弹的基础操作
第二章:定时、炸弹隐藏位置
第三章:利用平台制造头顶炸弹、利用按钮定时
第四章:双炸弹的使用、对称的隐藏墙布置、双炸弹进阶使用
第五章:炸弹的惯性和物体的重量
第六章:睡眠墙的切版刷新
第七章:传送点的速度保留,进入过的房间就可以传送
第八章:两个炸弹和平台的交互、炸弹可以位移钥匙、角色可以头顶两个炸弹

我们来将第八章的一道考试题目。

图片

玩家第一次看到这道题一定感觉莫名其妙,因为一眼看不到钥匙在哪里。

此时玩家有两个炸弹,已经掌握的性质包括:

飞虫钥匙可以开青蛙门

炸弹放在角色身下可以把角色抬起

炸弹放在悬空平台上等待一段时间后会落下

炸弹爆炸可以把角色和其他炸弹推走

目前解这道题缺少的性质为:

飞虫钥匙可以被炸弹爆炸位移

飞虫钥匙被位移时可以穿墙

玩家可以头顶两个炸弹

那么接下来让我们看看玩家是怎么学会这几点性质的。

图片

首先是单面题目,画面中包括一个悬浮平台下侧的飞虫和右侧的青蛙,左侧的旗子也杜绝了玩家从其他面带来飞虫钥匙的情况,所以这里是一个封闭环境,这道题只可能在本面进行解决。

因为没什么能做的操作,玩家能做的就只有往悬浮平台下放置炸弹,试试看会发生什么。于是就发现了炸弹可以位移虫子这一性质。

这个过程中玩家知道炸弹会往下掉的性质,但是不知道炸弹可以炸钥匙的性质,但是图中要素很少,玩家可以在穷举的操作里得到答案,所以这是一道无说明谜题,答案就是这个炸钥匙的规则,这个规则既是知识锁的钥匙,也同时扮演了谜面和奖励。

这里其实就相当于对玩家关于炸弹位移虫子的教学,是一种监督学习。

然后我们看下一道谜题。

图片

玩家刚刚知道了炸弹爆炸可以位移虫子,马上要面对这道题的情况。

图片

很容易就想到这样的连续爆炸位移的解法。

这里的题目就是原题的变式,也就是我们之前提到的强化学习,举一隅而反三隅。

图片

然后是这样的题目,这个题目包含两面,右侧是锁,左侧是封路的旗杆和钥匙。

这里玩家原来不知道爆炸位移钥匙穿墙的性质,但是左面单面中除了炸虫子之外没有什么有效的操作,所以在穷举的操作中一定能突然意识到这一性质,这里就是一个新性质的无说明谜题,一个新的监督学习。

图片

然后是这样一道谜题,我们从两面的连续视角看时,很容易就会发现可以从右面用两个炸弹炸到左侧凹槽中拿到钥匙。

游戏过程中玩家只能看到自己所处一面的情况,但是由于玩家刚学到炸弹位移钥匙穿墙的性质,加上上一面存在一个奇怪的凹槽,所以玩家也很快能发现要把虫子炸到左侧面的方法。这里的变式也是强化学习。

图片
图片

然后是这样一道题,需要玩家学会炸弹放在头顶上。通过一个炸弹移动另一个炸弹来通过,这里不再赘述。

图片

最后一道练习题如上图,由于经历了前边各种题目的练习,玩家很容易想到需要用利用平台来头顶两个炸弹来把左面的钥匙炸出来,这样获得钥匙而解开此题。

图片

然后回到一开始的考试,右侧长长的缝隙似乎有些眼熟,我们看看右面有什么?

图片
图片

这下答案呼之欲出了,头顶两炸弹,通过炸弹位移钥匙虫,钥匙虫被爆炸穿墙,最后到对面拿到钥匙,通过考试。

到这里,通过监督学习学到新的知识能力,再通过变式来扩展这些能力的运用,最后利用整个章节获得的知识来通过最后的挑战,可谓酣畅淋漓的知识锁设计!

知识锁,机器学习终于结合在一起,共同构成了解谜游戏的学习历程。

2.5 解谜和知识锁

“可我还是不明白知识锁到底是从哪来的呢?”“为什么上边炸弹可以使虫子位移或者炸弹会从平台上掉下这件事就能成为知识锁呢?”

这时候有人就要回答了“知识锁是游戏设定,有什么好挑刺的”“你这样不是抬杠吗”。

不,我觉得这个问题至关重要——“知识锁是从哪来的?”和“苹果为什么会掉到地上而不是飞到天上”的重要程度旗鼓相当。

苹果为什么没有飞上天空?

那么知识锁到底是从哪来的呢?

我这里自己下的判断是“直觉”,知识锁正是从人的“直觉”衍生的。

虽然听上去很不靠谱,但是请看我的论述。

“物体会往下掉”“轻的物体会比重的物体掉落快”“地面是平的”这些论述都是人类的直觉,而人类认知世界的第一反应就是直觉。

而在游戏的世界里,由于游戏是现实的投影,所以游戏里的直觉也就是现实的直觉。所以哪怕有一些事情在现实里不一定是正确的,但由于符合直觉,所以它就可以成立。

譬如上文中,炸弹可以移动玩家,所以炸弹爆炸移动钥匙虫就显得合情合理;玩家可以踩住踏板阻止平台关闭,那放一个炸弹代替也很合适;玩家垫在两个炸弹上时,炸弹爆炸造成的推力不会使另一个炸弹飞的更高,而玩家待在地面上时,两个叠置的炸弹可以非得更高。

以上这些都是符合直觉的设计,而一般情况下玩家可能没有使用到,在某种情况下发现后就感觉自己顿悟了,而不会怪罪游戏没有教学自己这样的行为。

那么反例是什么呢?

图片

虽然上图是一张梗图,但它的错误其实就是没有符合直觉,所以才被人认为不合理。

从上图我们也同样可以设计知识锁出来,比如在一个场景中虫子会去靠近吃场景里的糖,然后玩家需要控制场景中糖的位置来吸引虫子,也就是正向控制虫子轨迹;解开几个谜题后,在某个场景玩家观察到虫子会把糖当作盐,吃过盐的虫子会喝水,也就是反向控制虫子轨迹;后边看到虫子喝水的时候喝到酒会晕倒....

虽然不合逻辑,但硬要设计也是可以做成一个游戏的。此类游戏就是我们经常看到的点击解谜,而点击解谜经常被吐槽的原因也就是上文的不合逻辑性,以及谜题的性质不复用,经常用完即弃。

游戏是一个被架构的虚幻世界,所以只要符合直觉,那就是合理的。

3 学到什么

一般到这里差不多就要升华一下,讲讲通过XXX,我们学到了XXX,之后就能更好地XXX了,但是这里反而没这个必要了。

为什么?

因为Ooo自己就是解谜游戏教科书一样的设计了,教科书的重点不在设计多么优秀,而在它的简明精妙,同时又有迹可循。我想只要玩过一次它的关卡,也就大概能明白人类学习的过程和关卡设计的一种思路了。

结尾

本来大概是想要再写点内容聊聊arg的营销或者相关内容,比如聊聊邪恶铭刻,大学生登山,衍生到明日方舟或者守望先锋的解谜之类的,但是这篇就到此为止吧,可能之后再写。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/202257