这是一本游戏设计方面的好书
转自天:天之虹的博客:http://blog.sina.com.cn/jackiechueng
感谢天之虹的无私奉献
Word版可到本人的资源中下载

第二章游戏感与人类感知能力

理解人类是如何感知我们创造的游戏世界,这点是设计出优秀的游戏感的关键。在开始的时候我们会先更详细地看看第1章谈到的交互行为的反馈循环模型。通过对这个系统的每部分进行解构,再合并上“人类加工模型”中提到的概念,我们能基于人类感知能力中具体且可测量的特征去定义实时控制。这能让我们确切了解到实时控制是在何时发生的,它如何能产生出来,以及什么因素会导致它停下来。我们还会看看计算机的一些细枝末节的部分。最后我们会看看游戏感在感知上的含义。

游戏感会在何时且如何产生?

在第1章里我们定义了实时控制,实时控制是从玩家到游戏的不间断的指令流,这些指令流会对一个运动中的角色带来准确且连续不断的控制。正如我们之前说过的,这就更像是在开着一辆车,而不像谈话那样总是被打断。这个定义中需要进一步澄清的是“不间断”这个词。假如玩家能随时输入新指令,但游戏只会在固定间隔周期下接收,那会怎么样呢?又或者假如玩家有一段时间是被锁定不能输入的,直到一段动画播放完才能输入新的指令,那会怎么样呢?换句话说,什么是实时控制呢?我们如何能知道它当前存不存在?

让我们再次看回交互行为的模型,这次要看得更仔细了。在这个过程中有不同的两半,一半是玩家,另一半是计算机(如下图2.1)。在玩家的一边,人类感知能力中有着很多不可改变的因素。例如玩家需要经历一段最小限度的时间才能感知到游戏的状态,思考出如何应对的方法,然后才能把这个想法转到身体的肌肉行为里。

在计算机的一边,它创造出各种界线。计算机要维持实时控制,必须以大于10帧/秒的速度显示图像,这是运动成像的下限界线。计算机还必须在240毫秒内响应输入,这是响应时间的上限界线。在连续性上也有着一个临界点:游戏在接收输入和提供响应之间的时间必须一直维持在100毫秒内。假如游戏偶发地响应输入,那控制流就会被打断了。因此维持实时控制的义务在于计算机。在这个过程中计算机的那半是可以改变的,而玩家的感知能力是不能改变的。

在玩家的那边,一个人要感知到整个世界的状态,思考如何行动并对想法作出反应是需要一个最小限度的时间的,它大概在240毫秒左右。这是一个非常短的时间。

在人们制作三文治、驾车,或者在电子游戏中对物件执行实时控制时都会用到这个循环,利用这个循环来不断作出细微的调整。这个过程的测量结果是在Card、Moran和Newell提出的“人类加工模型”中给出来的,它从人类反应和响应时间的众多不同的研究中得出。240毫秒这个数字是由三段过程组成的,分别是:感知、思考和行动。分解下来大概是如下的范围:

l  感知处理器:100ms [50-200ms]

l  认知处理器:70ms [30-100ms]

l  运动处理器:70ms [25-170ms]

这里衡量的是每个处理过程的循环时间,在一个循环内需要这么长的时间才能接收完一个输入并提供一个输出。值的变化波动来源于生理上的情况和当时所处的环境。一些人能比别人更快地处理完这些信息,同时每个人在紧张和高强度压力的情况下都会更快地处理信息,展现出意识感的强化。类似的,在放松的场合或者不理想的环境下,人的处理速度会下降,例如在阴暗的环境里看书。在这个模型里,每一个步骤都界定出一个单独的处理环节,有着各自的循环时间(如下图2.2)。

从感觉→感知→认知→行动→到肌肉

~100ms ~70ms ~70ms

图2.2 三个处理环节:感知、认知和运动

不妨自己试一下

    如果你想体会一下你自己的处理功能的速度,那我强烈推荐你试试humanbenchmark.com网站上的反应时间测试(http://www.humanbenchmark.com/tests/reactiontime/index.php)。这能让你清楚地感受到前面我们说到的一点点的时间增量在计算机里到底是什么样一个概念。我的最佳反应时间大概在170毫秒。或许你会像我那样,很奇怪地不断去尝试打破自己的纪录。但问题在于你无法否认计算机在衡量你的反应时间上的精度。这是我们能测量到的最精确的方式!

感知、认知和行动这三个过程是分别单独地处理的,但它们会互相影响,让一个人能看到事物的状态,思考如何去改变它,然后基于想法去作出行动。在继续下面的内容前需要提醒一点,我所说的只是对人类认知的一种抽象,在大脑解剖学中从来没有一个结构是叫做感知处理器的,之所以这样叫是因为它能便于我们理解这些艰深复杂的数字。

感知处理器从感觉里获得输入,然后搞清楚情况,寻求模式、关系和归纳方式。它从所有感知到的数据里产生出可辨别的状态,提供给认知处理器。

认知处理器完成思考的工作。它把想要的结果和事物当前的状态作对比,决定接下来怎么做。

行动处理器接收到想要采取的行动,指示肌肉去执行。当想法在身体里转变为肌肉的行动后,整个处理过程又重新从感觉上的感知开始。

以上三个步骤都在我们的交互图上的第2步里发生,都在玩家的大脑里产生(如下图2.3)。

修正循环与游戏感

当以上三个处理器(感知、认知和行动)都一同运作,组成一个封闭的反溃环时,此时会产生一个不断前进的修正循环。修正循环会在你需要在一段时间内精确地协调肌肉去达成某事时出现,例如检起一本书、驾驶汽车,或者在视频游戏中控制某个对象。麻省理工学院的UI设计小组的Robert Miller曾经描述过这个处理过程:“在处理信息时是有一个很明确的反馈环的:你的感觉能观察到行动的效果(例如你的身体在空间中的位置,或者周围环境的状态),然后利用它来在后续连续的处理中修正行动。”

例如,设想一下你现在想伸手去拿桌面上的一块蛋糕。于是你构思出你的意图:我要抓住那块蛋糕(如下图2.4)。当这个意图形成时,它会转化成你肌肉的行动——调整你在座椅上的姿势,激活你的手臂肌肉,张开手指成为能抓取蛋糕的手势,等等。当这个行动开始时,你能感知到你的手在空间中的位置,看到它开始移动和响应着你的想法。此时感知处理器会观察你的手在空间的位置,然后把详细的信息传给认知处理器。认知处理器思考出手相对于最终要到达的位置的距离,然后构思出新的计划去修正行动。随后由行动处理器去采取新的计划,把计划转变成行动。从想法刚开始的瞬间到蛋糕终于抓在你手上,你会不断地重复这一过程,不断地进行行动、感知和思考的循环,以距离和目标的大小去不断提高每一个循环的精确性。(如下图2.5)。

由于我们知道每一个处理器的循环时间(感知=100ms,认知=70ms,行动=70ms),所以我们知道每一轮的修正循环的时长是240ms(如下图2.6)。

图2.6 修正循环时长:240ms(略)

通过修正循环,人们能准确地追逐和击中目标,能操纵事物、指向事物,并成功地在物理世界中导航。假如你想亲身体验这种感觉,你可以试试CH02-1的例子。尝试尽可能快地把你的鼠标放到圆点的上方。你会看到自己先是左摇右摆,最终才停到目标上,通过这样你能真正感受到修正循环在这个过程中起的作用。

现在想象你肚子很饿,你的蛋糕都吃完了,于是你走进车里,开始开车到蛋糕店。这一趟旅行的总体目标是拿到一块很美味的香蕉蛋糕。这个目标会细分成多个不同层次的意图,例如“右转开到Elk街道上”。在整个目标最低的层级里,你需要时时刻刻调整汽车的移动,保持它一直开在街道上,在红灯出现时停下……等等情况。正如前面提到的,在每240毫秒里,你会感知到周围环境的各种状态,思考出当前行动所需的修正策略,然后再作出调整(如下图2.7)。

这个过程和你伸手去拿桌上的蛋糕是一样的,区别只是前者的修正循环的次数更多,经历的时间更长。桌上的蛋糕是静止的,它呈现的是单个目标,单一的意图。开车到蛋糕店可能要20分钟,过程中有着20个不同的子目标。

在电子游戏里,实时控制就是类似这样的一种不断前进的修正循环了。实时控制就像驾车那样,是一个不断向前的过程,在这个过程中更高层的意图会细分成单个时时刻刻执行的行动。这些行动是这个不断向前的修正循环中的一部分,在循环中,玩家不断感知游戏世界的状态,以某种方式去仔细思考,然后构思出行动意图,把游戏中的状态往更接近意图中的理想状况的方向引导(如下图2.8)。这个过程同样是在240毫秒的循环时间里发生的。

这里的区别在于,现实生活中行动往往是转化成物理现实的,而在电子游戏里,游戏世界替代了现实世界。感知处理器得到的输入来源于屏幕、音箱,以及从手柄上得来的触感,而输出不像是现实世界那样直接地作用在对象上,而是通过手柄转化到游戏世界里,驱动出各种对象的运动。

目标:拯救公主

意图:去到城堡前

意图:踩怪物

比较

↓        ↑

行动  感知

游戏世界

图2.8 电子游戏中实时控制的修正循环

Fitt定律

    Fitt定律是一个很有名的公式,它能准确地预测出把你的手移到离你特定距离的特定大小的目标上所需的时间。卩Fitt定律显然是很成功,并且是一个良好重现的人机交互模型(HCI model),也通过了众多研究和实验的验证。这个公式是这样的:

MT=a+b*log2(D/W+1)

    在公式里:

    MT=移动时间

    a=设备开始/停止时间,

    b=设备的速度

    D=从开始点到目标的距离

    W=目标在运动轴上测量的宽度

    这个公式最初能预测出,当某件离你特定距离的特定大小的物件在你伸手能够够得着的范围时,你要花多长时间才能伸手碰到它。后来经过研究和发现,这个公式同样能预测出把鼠标指针在电脑屏幕上移到特定大小和形状的物件上所需的时间,于是它又被UI设计师广泛地采用和研究。例如苹果操作系统的菜单栏一直都显示并占据着整个屏幕的顶部边缘。这意味着菜单栏的“尺寸”是无限大的,让用户能快速轻松地把指针移到上面,无需经过太多的修正循环。相比于这个,你可以想象一下在一个层层嵌套的子菜单里点击一个小小的勾选框,你就明白两种感觉有多大差异了。

交互过程中计算机那半的情况

实时控制依赖于计算机那半边的情况,需要计算机一直维持着三个重要的值:

1. 运动的印象(需要以大于10fps的帧率显示)。屏幕上显示的帧率必须大于10帧每秒,这样才能维持运动的印象。当帧率处于20〜30fps时,运动的印象会更好更流畅。

2. 即时响应(从输入到显示要在240ms以内)。在交互过程中,计算机那半边的处理时间必须小于玩家的修正循环时间。当这个时间在50ms时,人会觉得响应是瞬时发生的。当超过100ms时,延时开始明显起来了,但还可以忽略不计。到了200ms时,响应就会显得行动迟缓了。

3. 连续响应(计算机在交互过程中的循环时间需要保持在恒定的100ms以内)。

运动的印象

计算机在建立和维持运动的印象上类似于电影和动画,这是很好理解的。你可以把玩家感知处理器的每一轮循环都看作是现实中的一张快照,快照里包含了视觉、听觉、触觉和本体感受上的感觉。在每个100ms的循环里,感知处理器会捕捉出所有这些刺激感的一帧。假如两个事件是在同一帧里发生的(例如马里奥最初在一个位置,然后稍微地往左移动了一点),那它们看起来会融合在一起,就像是运动中的单个对象那样,而不是一系列的静态图像(如下图2.9)。这种现象就是感知融合。

图2.9 10帧每秒是维持运动的印象的必需值(略)

从计算机的一边来看,感知融合解释了游戏中的对象在视觉里是如何动起来的。假如显示在一秒里更新10次(100ms的循环时间=10帧每秒),则足以维持运动的印象。但这正好是边界值,看上去还不够好——20帧每秒(fps)的感觉会更好,30fps的运动会开始让人感觉很流畅。基于这个原因,大部分游戏会在30fps以上运行。

即时响应

感知融合也影响着人对因果关系的看法。假如我按下电灯开关,灯的光线在同一个感知循环里出现了,那我会把这种状况看作是因果联系。我觉得是我的行动导致了灯光的出现,这对计算机响应来说也是一样的:假如我移动鼠标,鼠标指针看起来也是即时反应的,那我会认为这个效果是由于我的行动导致的。把这点进一步延伸,我们能得到响应性的印象。Miller教授曾经这样说道:“感知融合对计算机的响应时间也给出了一个最大上限。假如计算机在玩家行动后的100ms内作出响应,则响应会让人感觉是即时的。有着这种响应时间的系统会让用户觉得是自己身体的延伸。”

在现实世界里,我们是从来都看不到响应滞后的情况的。现实世界中的响应都是即时的。但在游戏里响应从来都不是即时的。即使一个游戏以60fpS的帧率运行,3帧的延时总是不可避免的。在60fps中,3帧意味着50ms。(你可以把这个数字除以60再乘以1000来把帧率转化成毫秒。因此60fps中的3帧相当于3/60*1000=50ms。)

Mick West是初代Tony Hawk的程序员兼设计师,他曾经这样去定义响应滞后(Response Lag):“响应滞后是在玩家触发某一事件到玩家得到事件发生的反馈(通常是视觉上的)之间的延迟。假如延迟太长,则玩家会觉得游戏反应迟钝。”

Mick留意到,响应时间在50~100ms内的游戏能让玩家明显感觉“紧凑”和“响应灵敏”。这是因为50〜100ms处于人的感知处理器的循环时间的范围内。一旦超出这个范围,游戏的操作就会开始显得行动迟缓。从响应灵敏到响应迟顿的过程是逐渐变化的(如下图2.10)。

图2.10 响应时间和玩家感知

Mick West与响应性

    你可以访问www.cowboyprogramminq.com来看看Mick关于响应性编程的文章。他为避免响应滞后提供了一套很棒的技术基础,同时还介绍了一种测量游戏的响应时间的很实用的方式——通过一台便宜的数码相机(以60fps的频率录制下屏幕和控制器的情况)。

对一个游戏来说,很难确切地说出哪个时间点会让游戏的感觉从紧凑变成行动迟缓,因为诸如操作布局和润色效果这些因素也会塑造出游戏在响应性上的印象。但超过了240ms这个值后,实时控制的感觉必然会被破坏。超过了这个值,玩家完成感知、思考和行动后就需要等待计算机响应并再次接收新的输入了。

连续性

既然瓶家需要240ms才能完成一次感知、思考和行动的循环,那为什么说计算机必须在100ms内完成任务并提供反馈才能显出响应是即时的呢?这是因为人类的三种处理器是同时运作的(如下图2.11)。

图2.11 三个处理器是同时运作的,以0延时的效率不断向前传递着现实信息(略)

感知处理器会把信息传向认知处理器,然后再次开始循环。当指令通过了最初的循环,以肌肉的运动传到现实世界时,感知已经开始第三轮循环了。这在现实生活中是完全没关系的,因为现实生活中的响应总是即时的。然而换到游戏的情况里,当运动的想法传到游戏时,往往会出现一定的滞后(如下图2.12所示)。

这意味着游戏需要在玩家的感知处理器运作过程中更早地完成更新工作。假如游戏没达成这点,则从游戏中输出的反馈会越过了当前的感知周期,玩家会感觉到滞后。因此游戏必须让玩家随时能输入指令,即使玩家不会一直给出输入信号。这种做法能让玩家不断调整输入,增量式地调整它。驾车的人会把方向盘持续转向左边,此时汽车也会不断转向左边,然后玩家会每隔240ms去调整汽车的转向量。这就是连续性的阀值了:计算机交互过程的一边必须在100ms内持续地更新,这样才能让实时控制维持下去。

连续性是很难测量和判断的。很多游戏有时会响应输入,有时候会不响应。不响应的情况可能是一次帧率突然下降,可能是在计算机和显示间出现延迟,也可能是游戏中突然要处理大量效果而带来的负载过高的问题(无法按时地显示和更新画面)。一旦计算机的响应长于感知处理器的循环时间,则玩家就会留意到。假如花费的时间长于一次修正循环的时间,则实时控制就会被破坏了。

然而有时候这种延时是游戏玩法中的一部分。例如当我在《街头霸王2》里用Zangie使出一招冲拳时,我会在紧接着的750ms里失去角色的控制。这比一次修正循环的时长值多了510ms。但这种暂时性失去控制是可以忽略的,因为我可以选择在何时发动这招。这是一次风险和奖励的交易,而不是一次干扰。它在游戏这种奇特的世界的大环境下也是说得通的。大招和重击都会造成大量的伤害,它们要花较长的时间才能使出来。我知道搓完招后会发生什么事。这个例子正说明了实时控制的连续性也是可以在不打断玩家的控制感的前提下被打断的。

这说明了控制干扰不能单纯说成是响应时间太长或者连续性被打断,通过其他的因素是可以把这种干扰弥补的。实时控制是一个格式塔。它主要依赖于计算机对三个因素的维持和控制:包括运动的印象、即时响应,以及响应的连续性。

但最后的判断权还是在玩家手上。设计师可以巧妙地通过输入映射或者动画来遮掩控制流上的任何干扰。最终只要保证玩家脑海里的印象就可以了。假如玩家觉得它像是实时控制,那它就是实时控制。

接下来让我们更全面地看看感知和游戏感在游戏设计上牵涉的因素。

游戏感的感知所牵涉的因素

要研究游戏感,这需要以一种特殊的方式去看待人类的感知。首先游戏感包含了很多不同的感觉,包括视觉、触觉、听觉、本体感受。在体验游戏感的过程中,这些感觉会结合成一种感受。其次,这里不得不提到玩家在游戏中的代理化身。游戏感能让身体外部的对象融入到身体里,感觉就像是身体的延伸那样,再次,游戏感是建立和实践技能的一个不断前进的过程。它就像现实生活中驾车或者打网球那样,因为它也是需要不断重复练习才能掌握的。最后,游戏感的感知模型需要包含游戏感的特性。体验游戏感就像与替代实体交互那样,你需要遵循它自身的法则,通过交互和观察来理解它。

把我们在第1章中的内容进一步扩展,在感知模型里有5个有趣的因素是能支撑我们对游戏感的定义的:

1.         感知需要行动。

2.         感知是一项技能。

3.         感知包含了思考、想象、归纳和误解。

4.         感知是一种全身体验。

5.         感知的工具会变成我们身体的延伸。

感知需要行动

要感知一样事物,你必须在行动中来观察它。这曾经通过小猫和盲人的实验来验证过。

小猫的研究是Held和Hein在1963年举行的,实验里用的是两组小猫,它们都是在黑暗的环境里养大的。第一组小猫可以自由地漫游,第二组被捆着不能四处走。整个实验控制了各种条件,例如两组小猫都接受同样的刺激:例如闪烁的灯光、声音等环境因素。然后这两组小猫都被放到一个正常的有光的环境里。之前能在黑暗中自由行动的小猫都像正常那样动起来,而原本被捆住的小猫都无助地像瞎子那样四处摇晃,这说明了感知是一个主动而非被动的过程,这两组小猫受到的光线和画面上的刺激是一样的,但能自由地探索周围的环境并在运动中感知事物,这造就了两者的差别。要正常感知事物,你需要和事物进行交互。

另一个研究是在1972年由Bach y. Rita举行的,他找一群肓人做了类似的实验。他做出了一个特殊的由视频摄像机驱动的刺激点矩阵(如下图2.13所示)。这个摄像机(安装在镜框上)通过电子电路发送信号到手上的刺激点矩阵里(图中左手拿着的仪器),该矩阵会紧贴着受测者的皮肤。刺激点受到信号后会震动,其震动模拟出来的触感矩阵会粗略对应于视觉上看到的画面。

每个震动的刺激点对应于视频摄像机接收到的画面里相应一个像素,所有这些刺激点共同形成了视频摄像机看到的一幅“触感上的图像”。当受测者允许自己移动摄像机时,他们能很粗略地“看到”摄像机里的画面。但假如受测者无法自己去控制当前“看到”的东西,那这个画面刺激设备只是像一个温和但不熟练的按摩师那样。

感知需要行动,这个概念和游戏感是密切相关的,因为它准确描述了你在一个不熟悉的游戏空间中探索和学习时的感觉。而且它把物理现实和虚拟现实有意义地关联起来:你在游戏里控制的事物变成了你的替身。人类都擅长于掌握陌生的新事物的物理特性,并且能很快地掌握好。当你把它拿在手上把弄片刻后,你很快能得到大量的细节信息:它的重量、密度、材质、纹理、颜色等等。有趣的是这种能力也能延伸到虚拟对象上,甚至能延伸到一个有着不同规则、定律和物理特性的虚拟世界里。基于某种原因,在一个陌生的新世界里用一个虚拟的替身去探索它是很快乐的。你所控制的事物会变得充满了表现力,让你借助它来感知一切:当你控制着它四处移动时,反馈流会通过它传回你的眼里、耳里和指尖上。

感知是一项技能

假如说感知需要行动,则这种行动必须要去学习才行。我们通常不会把感知看成是一项技能,但它的确是贯穿在人的一生里的一整套技能。从我们出生的那一刻开始,我们就学会了如何去判别差异了,逐渐形成各种神经通路,不断地越来越擅长感知周围的事物。我们会伸手去抓钥匙,把钥匙塞到嘴里。我们重复着这些感知的过程直到逐渐掌握这些事物,最终慢慢变成一个功能完善的成人。正如Dag Savanaes所说的:“感知在很大程度上是一项后天习得的人体技能,它是由我们在世界里发生的所有交互共同塑造起来的。”

这个过程中有一部分是用于对一些抽象概念进行归纳和学习,例如公平、自由和淫荡。另一部分是用来体验过去曾经经历过的体验。两位备受尊敬的心理学家Donald Snygg和Arthur Combs曾经提出过一个概念,它生动地描述了过去的经历、想法、归纳和幻想在感知里扮演的角色:这个概念叫感知域。人在一生中会和周围的空间做出极大量的交互,然后在空间里建立起与这些事物间的各种关系。Snygg和Combs在感知域的概念里阐明了这种记忆、感知和技能建立的现象。

感知域的概念是感知是基于过去所有的经历组成的背景下产生的,包括我们的态度、观点、想法、想象,甚至是误解。换句话说,我们在感知事物时是不会和过去曾经经历过的事做区分的。而是在体验时在我们自己对世界的看法的大背景的对照下,透过这层过滤来看待事物。用另一种说法来说是:“一个人对客观现实的重构表达是,大脑在极大量刺激的轰炸下基于个人以前的经历组织和概念化后给出的意义。”再者,“感知域是我们的主观现实,是我们所意识和了解到的世界,这包括了人和物质对象,包括了我们的行为、思想、形象、想象、感觉、观点(例如公平、自由、対等)等等。”

因此你的感知域就是你的世界,是你对周围一切事物及其意义的感知和结构化的理解。

这是一个很酷的概念,因为它超越了简单的心智模型的概念,后者只是从一些枯燥无味的临床细节去说出一个人是如何思考事物的功效而已。

在电子游戏的情况里,大脑意识到游戏中的“世界”只是它所理解的对现实的感知域中的一个子域,只是一个小缩影。它有着自己的法则,并遵循着这个法则。与此同时,大脑会把过去存储下来的所有经历都展现出来,帮助它理解这个新的地方。

这里的区别在于,游戏世界不必非得遵循物质现实中的法则,也不必非得被其框定得很死。你可以把游戏感的建立看成是一个独立但又有关联的物质世界的建立。这虽然是一个简化的物质世界,但它却是完整的、内聚力强的,且自给自足的世界。很多时候,建立并调整一个游戏的游戏感系统,意味着建立一套全面的律例和规则来掌控系统内的所有行为。这就像从头开始编写你的世界那样:你设定出世界的重力规则,设定出它的动量和摩擦规则,乃至设定出你对两个物体碰撞的定义。

在你周围的世界是客观的不可改变的。你不会在有一天醒来后发现周围的重力突然停止运作了。当我把一串葡萄扔到墙上时,它会猛地撞到墙上然后掉到地上。但这种现象要在游戏世界里达成是很难的。

因为我们在游戏世界中处理和理解各种事件的方式是和我们与现实世界的交互极其相似的,我们希望过程中保持同样的一致性。然而哪怕是极细微的一点点细节也会打破这种感知上的沉浸感。

游戏和电影不同,电影展现的是世界在一帧里的景象,它只要在这一帧里维持视觉和听觉上的一致性就可以了,但游戏必须面对主动感知所带来的问题。玩家在游戏里能自由地探索整个世界中每种行为和响应的所有排列组合。这是一种感知技能,是每个人自出生开始就一直磨练的。

由于人都极擅长于感知周围的世界,所以任何细小的不一致都会变得很显眼。角色的脚部插到楼梯里,透明墙——这些在我们周围的世界里都是不会发生的。因此这种探索过程更像我们在现实世界中的体验,而非被动地观赏一部电影或者看一本书。

当在游戏世界中探索时,我们用平常应对周围的世界的方法去应对游戏世界,以此去理解和操纵它。这个过程等同于在这个新世界里拓展我们的感知域,四处探索去作出各种归纳和区分,靠着这些归纳和区分来在这个世界里交互和成功。

这就是为什么一个始终如一的抽象世界比一个巨细无遗的具体世界要好得多的原因了。你完全可以创造出一个简化的现实世界去让玩家交互,只要他们拿起手柄几分钟,他们就能找出这个世界里方方面面的因素,包括它的约束、规则,以及物质定律。别亲手违背了你自己设立的规则。假如一个物件是刻画得很大很重的,那就别让它在轻轻碰触下就往下飘,也别让它毫无原因地穿过另一个物件。当然,说比做要容易得多,但这在一定程度上是由设计师决定的。设定一个像《Dig Dug》那样简单、紧凑且有内聚力的世界,比设计一个像《侏罗纪公园:入侵者》那样奇怪的不一致的世界要好。我们所处的物质世界比任何一个游戏世界更复杂和更细致,并且我们多年以来都擅长于感知这种世界,基于这两个原因,人们很快就能找出你世界中一切有问题的地方——所以更好的做法是把世界塑造得简单和始终如一,而不是又庞大又混乱。

感知是一项技能,这点和人们随时间越来越擅长于某事的原理是有关联的。当你不断练习某件事时,你会越来越擅长这件事。你的感知域会不断增长对这项任务的经验,让每一次对任务的新尝试都变得更轻松。感知域并不仅仅是一个供你提取信息的银行,而是影响着你的感知与行动在每时每刻里发生的事情。Chris Crawford曾经说过人的神经通路正在发展得越来越快,从意识上的处理加工已经延伸到潜意识的自动处理加工上了。

Merleau-Ponty把这种区别定义为抽象和具象的区别。假如一项行为是不熟练且需要下意识去思考和努力的,那它就是抽象的行为。如果一项行为是熟练到无需意识思考就自动发生的,是一种从想法到行为的纯转换,那它就可以认为是一项具象的行为。在这个过程里,人们是随时间逐渐了解事物的,把曾经艰难的需要深层意识参与的事情转变成简单轻松的潜意识能完成的行为。显然,这正是游戏感所发生的事,尽管掌握一项游戏技能往往要快得多。

无论我们对其如何概念化,显然人类更擅长于自己经常练习的技能。假如我们把所有事物的感知看成是一项技能的话,那这正好解释了为什么游戏感看起来像是一项技能驱动的行为,为什么技能学习是体验游戏的门票。感知游戏世界实际上是感知现实世界的一个简化的改良版。规则虽然不同,但过程是一样的。

感知包含了思考、想象、归纳和误解

感知域这个概念的另一个有趣的分支在于它包含的不仅仅是物质现实,还包括了态度和想法。对事物的感知很大程度上是受偏见、想法、归纳和世界观影响的,所有这些都会通过人一生的经历融入到感知域里。当然,对特定事物的归纳可能无法准确地反映出该事物的客观现实。

例如在我住的地方有一个中央恒温的空调系统。有一天我觉得很冷,于是想调节一下温度。在墙上安装好的控制器所显示的当前温度是基于一个温度仪的,这个温度仪应该在我房间的某个地方——这是我希望和猜想的情况。在当前显示的温度下方有一个蓝色的控制滑块,它表示出当前你想要的温度。我认为只要我把滑块拨到与当前实际温度不同的一个温度上,那空调就会开始送风,然后就能调整房间温度了。当前的温度写着61华氏度。我把控制滑块从63度拨到75度。空调开启了,但开了很短一段时间后又关掉了。几分钟以后,空调开了更长一段时间,吹出更暖的风,然后又关掉了。最终我觉得烦了,于是把温度调到90度。然而空调再次开了几分钟,热了一阵子后又关掉了,我不得不盖多一张毯子了。1.5小时以后,我走进我的办公室,办公室的门是关着的,我突然觉得房间里特别热,这时才意识到我把温度调到90度了。我把毛毯丟开,脱剩一件了恤,再看看温度仪,温度仪现在写着77度,我把温度仪降到72度。空调又打开了几分钟,送出一点冷风,然后关掉了。天啊!饶了我吧!

这里到底发生了什么事呢?在我对加热系统的概念模型里,实际温度和希望达到的温度间是有着某个阀值的。假如超过了这个阀值——例如说我想要的温度低于或者高于当前温度3度,则系统会开启,供应出一定量的热风或者冷风,把当前温度改变到我想要的温度。

但现实是系统会开启,也会吹出热风或者冷风,但只吹了一阵子。无论是吹5分钟的热风还是冷风,这都取决于温度会以何种方式去改变。热风不会特别热,冷风不会特别冷,只会在一段足够长的时间范围内完成它的任务。除此之外,计时器控制了每个状态应该持续作用多长时间。换句话说,可能每次都必须倒计时到5分钟。假如你在5分钟中还剰30秒的时候把温度调上去了,则你会看到空调还在吹30秒的冷风,因为加热需要一段时间才能热起来,并且系统还剰下30秒的“开启”状态才能把它转到关闭状态(显然,温度仪是在我的办公室里的)。

Donald Norman如果看到这种情形,想必一定会说我的心智模型和加热系统的“系统概念”是不同步的。我在脑海里系统的运作方式有着一个看似充满逻辑的构想,但构想是错的。这个构想塑造出我和系统的交互方式,定义出我在给出特定输入后对产生结果的预期。假如我的心智模型和系统概念是不符的,则当系统真正运作起来时,问题就会发生了。Norman可能会说这是设计师的错误,他们做出来的“设计模型”(设计师所预想到的用户对系统的诠释)没有和用户的心智模型同步起来。这种现象也完全能应用到游戏感上,它能很好地帮助我们设计出玩家认为是简单易懂的操作方式。Norman建议我们去寻找和探索输入设备和系统间“天然的映射方式”。

例如下图2.14,炉子C比炉子A和B容易操作得多,这是因为在旋钮的位置和它们对应的炉子的位置上有着明确的空间联系。在游戏中寻找天然的映射方式也是类似的过程,虽然情况没有像这个例子那样明显。我比较喜欢用《几何战争》这个游戏作例子,它很容易上手,摇杆的移动明显对应着游戏里飞船的运动,这就相当于是虚拟空间中的一个天然的映射方式(如下图2.15)。

图2.14 这三套设备展示出炉子和控制旋钮的对应关系。

Norman对心智模型的概念的唯一问题在于它太死板了。假如说我已建立了《塞尔达传说:风之杖》的心智模型了,那此时可能很方便我抽取和调整某些机制,让我能去除其中模糊不清的地方,让操作变得更简单易懂,但这遗漏了我和这个世界存在关系的事实。我对它有着某种感觉,也以某种方式去思考,然后把它分解成一个枯燥的客观的图表,但看起来这遗漏了这种关系中最重要的部分,这些部分是设计师都很清楚,且一直努力去达成的。例如,当我在这个游戏里的海上航行时,我会感觉到冒险的自由,这是游戏中极为成功的—点。我可以把这个系统进行分解,列出在航行时可能操作的所有行为,但这会丧失了大部分的要点:即使我列出各个物件排布和相互间隔有多远,列出我往某个方向上航行多久会撞到东西,列出从一个物件到另一个物件要花多长时间,这些都是不重要的。它们远远没有让世界中的空间感觉开阔、自由,且充满各种可能性来得重要。我可以在特定方向上漫无目的地航行,并且我确定两件事:1)在这个方向上我可以如我所想地尽可能远地自由肮行;2)最终我会发现—些新的有趣的东西。整个系统、船只的速度、转向时的干净利落、岛屿间的距离,所有这些探索起来都是很有趣的,这也组成了玩家对这个系统的心智模型。但光是这样明显是丟失了这个游戏中一些最本质的体验上的特征的。对这个系统的一点点改动(例如把船只的速度降低20%)会让风之杖中的整片海洋明显感觉很大、很乏味且很荒凉。感知域的概念不单单整合了系统的情况,还包括玩家对系统产生的想法、观点、感觉和归纳,它们都是会不断形成且不断重整的,对于玩家理解周围的体验有着更大效果的推进。

Norman的心智模型中遗漏的另一个重要的地方是“思维迁移”。这是谜题设计大师Scott Kim经常提到的“顿然开窍”的瞬间。例如,我最近也一直在玩的另一个塞尔达系列的游戏是NDS的《塞尔达传说:幻影沙漏》。在这个游戏里,有一个特别的谜题需要玩家去拓展自己的感知域。在游戏中一个神殿(海王神殿——译者注)的其中一段里,玩家需要走到一个祭坛前对“地图”打上标记,这个标记会标示出接下来要探索的新场景的特定场所。在最开始的时候,这个谜题折腾了我很久。

要在《塞尔达传说:幻影沙漏》里探访一个新的区域,你首先需要该区域的一张“海图”。要打标记的新场所不在你当前可能去到的区域里,但明显对应着你曾经去过的地图以及游戏里用过的地图的,当时我有条理地试遍游戏里曾经用过的每一种操作和行动,然后还试了我在其他游戏里用的一些方法。我按着按键,同时拿着触摸笔上下左右地用每种可以想到的方式去乱画。我甚至还画出X和O来尝试标记,也一遍一遍地顺着三角形的纹路来描画。但在我的感知域里没有任何一种方式能帮助我解决这个谜题。显然,我对这个系统在目前所具备的了解是不足够且存在一定缺陷了。我必须退后一步,重新仔细回想我的感知域。于是我开始重新去诠释“打标记”这个行为,试着用其他可能的方法去为这愚蠢的地图打上标记,例如把DS放到地板上,用我的脚趾来为它打标记。最后我终于发现解决方案了:合上DS后快速地打开。这是类似打标记敲章的动作,正如下图2.16所示那样。

这里的问题在于我的感知域:在我对仍DS一直以来的理解里(包括DS上的功能以及游戏中可以用上的所有行动),完全没有可参照的案例让我了解到把DS的开合用作游戏里的一种行动。我也玩了很多DS上的游戏了,在我所有这些经历的游戏里,从来没见过一个游戏是用DS盖子的开合功能来作为按键的。在《新超级马里奥兄弟》里,如果你在游戏还开着的时候关上DS的盖子,游戏会用马里奧的声音说“Goodbye!”,但这是我唯一的参考点了,是我在整个感知域里唯一的线索了。我通过思维迁移解决了谜题,以一种全新的方式去重新看待游戏系统。当我把游戏塑造的世界观里的这项新信息整合到我的感知域时,我感觉充满了快乐和喜悦。通过这一次,我不仅仅弥补和改变了我对这个游戏的心智模型,而且还包括我将来会在DS上玩到的所有游戏。这并不能算作是我与这个系统交互上的某种问题或者缺陷,而是谜题和整个游戏的点睛之处。

这到底是为什么呢?我因为感知域得到拓展而得到快乐了,在Norman的心智模型中可能会把这种情况说成是有问题的,抱怨设计师在游戏里误导了玩家。然而这种情况的确是玩这个游戏能得到的最基础的快乐,所以明显在这个模型里漏掉某些东西了。感知域给我们一种全新的方式去理解游戏感,让我们能了解玩家是如何感受特定空同以及与空间的关系的,同时还传达出心智模型所传达的那些枯燥客观的细节(他们在游戏世界中用于处理和理解各种事件的脑海里对空间的记忆细节)。这些枯燥的细节是很重要的——它们重现出玩家对游戏世界的物质现实和规则的挑战,也是寻找引起玩家混乱的不和谐因素的一种很好的方法——但它们并不代表一切。

感知是一种全身体验

眼睛、耳朵、触感、本体感受——当一个人在感知事物时,这些感觉都融合在一起不会区分开。

比方说一个叉子。叉子是打磨得闪闪发光的,有着尖尖的末端。它冰冷、坚硬,但很容易拿起来。我可以用它来吃东西。它会沉在水里。这个物件到底是什么,它是如何用的、它代表什么,所有这些问题我都有着想法和感知,这些想法和感知组成了“叉子”的概念。这是我对叉子的态度,是我能在以后用到类似叉子的其他物件上的归纳。感知天生是潜意识发生的,这使得它掩盖了一系列复杂的过程,在这个过程丽包含了所有的感觉,这个过程也不断快速地把我们带入我们居住的世界里。

这里的关键在于别把每一种刺激都看成是单独的,而是把它看是感知里一个完整的部分。这是把图像、声音、本体感受(从手指在控制器上的位置或者其他地方得来的感受)以及触感(从控制器的震动或者触觉反馈得来的感觉)合并在一起成为游戏里单一一种体验的过程。游戏世界会用自己的刺激方式来替代了现实世界中由交互产生的各种刺激,但感知所得到的体验是基本一样的。这也指明了为什么我们对刺激上的不一致会如此敏感的原因。假如一个身形庞大笨重的角色把脚插进楼梯里或者手臂穿过墙了,那我们的大脑马上就会说:“哎!那完全不对!”

现实生活中的现象所产生的感知体验从来都不会在刺激上不一致,因此当这种不一致在游戏里发生时,大脑是很难无视它们的。

工具会变成我们身体的延伸

正如我们在第1章说过的,一个工具一旦捡起来以后,它会成为感觉的延伸。此时工具既用作行动,也用来感知。通过工具能表达出人的意图和行为,就像工具是身体的一部分那样,而反馈也通过工具流回玩家身上。

想象一下盲人的拐杖你就能明白这点了。当盲人最初使用拐杖时,他完全不熱悉这个工具,使用过程中需要思考。用拐杖来敲击的动作对他来说是不熟练和抽象的。当他通过这个拐杖在感知世界的过程中逐渐建立起技巧时,他能更轻松更准确地四处敲击了,以此更清楚地了解到周围的情况。如今他可以不费力地借助拐杖传达出他的意图了,在他和他的拐杖周围的所有障碍都随之消退,拐杖已经成为他感知域里的一部分了。它现在就像他的手那样,通过它来探索和触碰周围的东西,让他能与四周的环境进行交互,并把最关键的方向上的反馈返回给他。这能帮助他建立起一个大得多的个人空间(有时候这也叫做“感知本体”)。于是他的感知范围在这个过程中延伸成一个大得多的区域了。借此他让自己的手臂能够到更远的地方。从某种意义上说,他通过把拐杖这个工具融入到自己身体里,从而改变了他的世界。

盲人的拐杖使得他感知范围增加,这点跟游戏感有什么关系呢?这里有趣的在于身体空间和外部空间的区别。当我们与世界交互时,我们是以两种方式去感知身体的存在的——一是通过我们自身,一是通过特定对象在外部世界的众多对象中的关系。正如Dag Svanaes所说的:“身体空间和外部空间是不同的,它只会在个体有着不同程度的自由,并且能熟练地使用这种自由度时存在。身体空间主要由个体在行动上的特定可能性产生。对一个没有任何运动知觉的完全瘫痪的身体来说,身体空间是完全不存在的。不同的身体能产生不同的空间,诸如衣着、使用的工具,以及各种假肢这些外部的因素也能影响空间的不同。更重要的是,学习一项新的技能也会改变身体空间。”

身体空间是由一个人的身体能在世界中可能施行的行动界定的,这个观点和玩家与游戏世界的交互方式是密切关联的。玩家往往会根据自己的能力以及在游戏世界里的约束来思考。所以玩家往往会希望游戏里角色的能力是随时间改变的,角色随时间改变也能拥有不同的工具。例如我在《银河战士》里扮演Samus Aran时,我在游戏世界中的身体空间变成了Samus的身体,这个空间是由当前我能用的能力界定的。我有可能会拿到变形球,也有可能没拿到。假如我拿到了变形球,那我能变成一个可以滚动的小球去探索细小的狭道。此时由于我与世界交互的能力改变了,世界的本质在也发生改变。从客观角度来说整个世界还是跟原来一样——每一个物件还是在原来的位置上。但我的能力、我能做的行为,以及我虚拟的身体空间,这些都让世界发生改变了。

这种想法的有趣之处在于它没有把Samus Aran看成是一种工具。前面说到我们能把工具融入到自己的身体里,此时工具会变成表达和感知的器官,我们的个体身份和感知域都会包含了它,但这种说法是不能带到游戏里控制的角色上的。我不会把Samus Aran说成是一种工具。这不单单因为她是我作为个体身份延伸的暂时寄居和控制的一个自主角色,而且还因为她有着自己的身体空间。她有着自己的工具,这些工具可以变成她身体的一部分,把她自己的感知空间进一步延伸。从这个角度来说,电子游戏的世界的确是一个微缩世界,在这个微缩世界里的感知能替代了现实世界中的感知。这是一个有趣的观点——它看似解释了为什么个体身份在电子游戏中如此有延展性。你能在前一瞬间还扮演着Gordon Freeman,但后一瞬间就马上咒骂他笨得要死了。这是因为电子游戏现实中构建的子域为我们提供了两种空间——虚拟的身体空间和虚拟的外部空间。

电子游戏有着自己的现实模型,它是在游戏内部的,和玩家的外部空间、玩家的身体空间,以及角色的身体空间是相互区分的。角色的身体空间是角色在游戏世界里可能施行的行动界定的,它是我们感知游戏世界中的外部空间真实性的唯一途径。如同在现实世界那样,感知是需要行动的。区别只在于游戏世界中的行动只能通过角色的虚拟身体空间来探索。玩家把他们的感知域延伸到游戏里,融入到角色可能施行的行动里。感知和行动的反馈环在平常能让你在世界里四处导航,如今这个反馈环去除了一个步骤了:它不再通过你自己的身体和外部世界的交互来感知,而是通过角色的交互来感知游戏世界。此时整套感知的组织都延伸到游戏世界里了。

看回我们之前对个体身份和游戏感的讨论,我们就能明白为什么把角色看成是一个感知的替身,而不是一项延伸的工具了。因为一个游戏世界会呈现出相对于角色身体空间的外部空间,物质世界也呈现出相对于我们自身内部空间的外部空间,这两者是很相似的,所以它看起来更像是一个替身,而不是一种延伸。这种观点同样也能用到个体身份上。我们曾经说过我们周围的对象以及游戏世界中的对象都能变成个体身份的延伸。但与其说成是个体身份的延伸,不如说成个体身份的容器更为贴切。我们说工具变成身体的延伸后能界定出人的“本体”,这种说法是由感知决定的。感知本体取决于当时周围的环境、你当时能与环境交互的能力,以及你可能施行的行动。我们在车被撞到时会说“他撞到我了!”,而非“他撞到我的车了”或者“他的车撞到我的车了”,这正说明了我们会通过一个人造物件来感知当时周围的环境,也说明了一件毫无生命的物件也能变成我们感知个体中的一部分,变成感知域里的一部分。当你主动去控制汽车时,你的确能通过汽车来感知世界。但再次强调的是,我们感知游戏感的方式更多是一个替身而非一种延伸。我通过林克(塞尔达传说主角——译者注)那虚拟的身体空间去感知Hyrule的世界。我的个体身份和林克融合在一起,我接替了他的技能、他的能力,以及他的身体空间,把这些都变成我自己的。

总结

实时控制到底在什么场合存在呢?它又在何时发生呢?从等式在人类的一边来看,我们划分出三种不同的处理器(感知、认知和行动),这三种处理器共同构成了一个封闭的反馈环。这个反馈环最终能产生一个不断向前的修正循环。在电子游戏里,设计师会用游戏世界来替代现实世界。这一点进一步强化了我们在第1章里谈到的观点——游戏感是独特的物质现实的一种体验。

从等式在计算机的一边来看,实时控制依赖于计算机维持着三个重要的时间阀值,它们分别是:运动的印象、感知到的即时响应,以及响应的连续性。通过了解人类的修正循环时长和三种人类信息处理器之间的关系,我们能确切地分辨出特定游戏是否有着实时控制的感觉。在分辨过程中,不确定的变量是玩家的感知能力。从最终来说,游戏感是玩家头脑里的印象。我们在本章里设立了三条基准线:运动的帧率在10fps,操作的响应时间在240ms,以及响应的连续性在100ms。这三个阀值能让我们借以审视游戏中的帧率、响应时间和响应连续性。不过10帧每秒的运动感觉起来还是很生硬的,200ms的响应时间感觉上还是行动迟缓的。通过利用手势输入的方式或者播放动画能一定程度地让印象变得流畅。归根结底,玩家的感知才是最重要的。游戏感的最终目标是在玩家头脑里建立一种印象。

最后,我们还在本章里了解了人类感知所牵涉的其他因素:

1.         感知需要行动。

2.         感知是一项技能。

3.         感知包含了思考、想象、归纳和误解。

4.         感知是一种全身体验。

5.         感知的工具会变成我们身体的延伸。

这些就人类感知所作的说明能进一步解释我们在第1章里勾勒出来的理论。了解人类感知能力的运作原理能让我们认识到人类感知能力不完美的地方,而我们最终是要为这些不完美的感知能力设计游戏的。清楚这些细节能帮助我们建立起一套可用于塑造游戏感的调色板。假如我们能理解感知能力是如何运作的,我们就能创造出有着很好的感受的游戏了。

游戏感:虚拟感觉的游戏设计师指南——第二章 游戏感与人类感知能力相关推荐

  1. 游戏感虚拟感觉的游戏设计师_从零到游戏设计师:即使您没有任何经验,如何开始制作视频游戏...

    游戏感虚拟感觉的游戏设计师 by Angela He 通过何安佳 从零到游戏设计师:即使您没有任何经验,如何开始制作视频游戏 (From Zero to Game Designer: how to s ...

  2. 训练指南第二章-基础问题

    训练指南第二章-基础问题 P170 2 / 4 Problem A UVA 10943 How do you add? 1 / 2 Problem B UVA 10780 Again Prime? N ...

  3. Java7并发编程指南——第二章:线程同步基础

    Java7并发编程指南--第二章:线程同步基础 @(并发和IO流) Java7并发编程指南第二章线程同步基础 思维导图 项目代码 思维导图 项目代码 GitHub:Java7ConcurrencyCo ...

  4. Python精确指南——第二章 界面开发

    2 Python GUI 借助Python语言的优势,使用Python的界面库开发界面程序,开发周期更短.但因为Python的界面开发库底层实现一般不是Python,只是为Python封装的接口,所以 ...

  5. 游戏感:虚拟感觉的游戏设计师指南——第九章 润色的测量方法

    这是一本游戏设计方面的好书 转自天:天之虹的博客:http://blog.sina.com.cn/jackiechueng 感谢天之虹的无私奉献 Word版可到本人的资源中下载 第九章润色的测量方法 ...

  6. 游戏感:虚拟感觉的游戏设计师指南——第一章 定义游戏感

    这是一本游戏设计方面的好书 转自天:天之虹的博客:http://blog.sina.com.cn/jackiechueng 感谢天之虹的无私奉献 Word版可到本人的资源中下载 第一章定义游戏感 游戏 ...

  7. IPHONE游戏开发 第二章 游戏引擎剖析

    游戏引擎剖析 为了解决"如何在IPHONE上创建一个游戏"这个大问题,我们需要首先解决诸如"如何显示图像"与"如何播放声音"等一系列小问题. ...

  8. Unix/Linux下的Curses库开发指南——第二章 curses库I/O处理

    第2章 curses库I/O处理 2.1 curses库简介 curses库是curses开发包中最重要的一个库,其中提供了一些基本的屏幕操作函数,包括输入/输出,屏幕初始化,屏幕处理中断以及窗口的创 ...

  9. ZeroMQ 中文指南 第二章 ZeroMQ进阶【转载】

    此文章转载自GitHub : https://github.com/anjuke/zguide-cn 作者信息如下. ZMQ 指南 作者: Pieter Hintjens ph@imatix.com, ...

最新文章

  1. 如何在ASP.NET中使用Windows Live Web Bar
  2. make的常见错误信息
  3. python按键盘上哪个键运行_pythonshell哪个键执行命令
  4. linux空间管理,教你玩转Linux—磁盘管理
  5. Oracle表的并行度
  6. Ubuntu中ssh远程报错:packet_write_wait: Connection to 192.168.163.190 port 22: Broken pipe lost connection
  7. pip环境变量配置 python3.6_零基础学python之爬虫第一节环境配置第一章:Python3+Pip环境配置...
  8. CACHE的一些名词术语
  9. Electron下使用samba相关问题记录
  10. C++描述 1341. 十三号星期五
  11. Ubuntu18.04忘记超级用户root密码,重新设置密码
  12. 计算机网络原理优秀视频
  13. 树链剖分 - 月下“毛景树”(BZOJ 4151)
  14. word怎么删除参考文献的横线_word2016怎么去掉引用参考文献中的横线
  15. 零基础学C语言之初识C语言(上)
  16. 在mac电脑上,用Safari浏览器调试ios手机移动端页面
  17. 开源RISC-V处理器(蜂鸟E203)学习(三)低成本方案,成功运行hello word程序
  18. NOIP 模板整理(多图预警╮(╯▽╰)╭)
  19. 12-24K/月,京东招聘研发项目经理(地点:北京)
  20. java如何从地址串中解析提取省市区(完美匹配中国所有地址)

热门文章

  1. JavaScript实现分页显示
  2. APP-iOS和Android的尺寸规范
  3. mysql 充值表设计_如何设计充值消费的数据表
  4. SQL Server 下取中位数(中位值)的方法
  5. PCL1.10.1+VS2019+Qt5.14.2下载、安装及配置(强迫症福音~使用的软件均为最新版本)
  6. 用flatpak安装程序(比如GIMP)的方法
  7. 像素 屏幕分辨率 摄像头分辨率
  8. 安装php详细步骤,PHP开发:安装PHP详细步骤
  9. 当心收入被支出吞噬(zt)
  10. 我的世界java版怎么找史莱姆区块_我的世界史莱姆在哪里