即时类战棋游戏作为一种实验性机制

关注作者
有朋友提到将战棋类SRPG改成即时制的可能性。我想,作为一个在这个机制上艰涩地探索过一段时间的开发者,应该还是小有一些经验可以谈的。不过本人对于SRPG和RTS的实际实现机制掌握都非常有限,所以还是当抛砖引玉吧。 粗浅地看,改成即时制的SLG实质上就是即时策略游戏RTS。那么,想要调和回合制SLG和RTS,我们可以从两个思路入手。第一,回合制SLG改成即时的;第二,将RTS改成走格子的回合制。下面我们可以结合一些例子,分别考察一下这两个思路。 1. 即时制SRPG——调和即时制VS回合制 首先,我们粗浅地辨析一下回合制和即时制之间的差别。一般意义上理解,即时制的游戏流程中,通常的玩家指令输入是和游戏演算同时进行的,而回合制游戏中,游戏流程中会主动留出一段时间专门给玩家用于下达指令。更直接一点说,即时制指的是,游戏在时间轴上呈现绵延的连续性而没有被划分为显著的单位,因此在不同的现实时间输入游戏指令,在结果上会有显著的差异。而回合制的情况是,游戏的时间轴会被划分为显著的单位,在同一个单位内,玩家在现实时间的不同时刻输入指令,不会对游戏结果造成显著的差异。也就是说,把自己的游戏设计成即时制还是回合制,关键在于设计者在大多的程度上期待玩家的即时反应,玩家在1秒钟之内,10秒钟之内或者2分钟之内对游戏的演算结果作出反应,会造成多大的不同? 设计者期待游戏在多大程度上是即时制或回合制是由游戏的设计目的决定的,而此处我们仅仅讨论一种实验性的调和SRPG和即时制的机制,所以我们并不关心游戏的实际效果,只是关心机制上允许的一些可能性。那么,我们也许应该开始去试着分解一个战棋类SRPG(仙剑1之类固定站位不关心移动只关心出手顺序的游戏不在考虑范围内),看一下有哪些内容是可以被融入即时制元素的。但是这里依然需要强调,由于即时制和回合制在本质上是相互排斥的,所以任何即时元素的添加都会对原来回合制下的体验造成破坏。另外那么我们开始正片。 1.1. 经典回合制战棋游戏 这里所谓的经典回合制战棋游戏是可以被划分为如下的简单结构的游戏——回合轮换机制为,按照固定顺序在阵营之间依次轮换(例如我方回合>友军会合>敌方回合>我方回合),单位的基本行动包括移动和行动指令(包括常见的攻击、防御、技能、道具、待命等,以及所有关系到其他非位置属性的行动)。回合制的基本框架就是,在属于某单位/阵营的回合之内,其他的单位都不能行动。这一类包括了大量的经典回合制游戏,譬如火焰纹章系列和机器人大战系列。粗浅地看,此处允许的即时制元素大概有以下两种。 1.1.1. 出手时间 对于所有回合制游戏而言,结构上最通用的即时机制就是出手时间。实际设计中,出手时间主要用在网络游戏里,让一个玩家的等待行为不至于太多地影响其他玩家的体验。出手时间绝对符合即时制的定义,如果玩家不在规定时间内下达指令,那么游戏会认为玩家没有下达指令(一些游戏此时会由系统代为下达指令),可以产生此时操作与彼时操作造成显著差异的情况。不过这种行为并不适合单机游戏,而对需要深思熟虑并且调动较大量的部队的战棋类游戏来说,也是非常不合适的设计。当然,如果开发者愿意的话,可以将出手时间的限制加在单个单位上,不过这种设计依然不适合敌我回合轮换经典战棋游戏,而更适合一般意义上的半回合制游戏。 1.1.2. 时机把控 回合轮换的前提下,只有行动方可以采取主动行为,非行动方只能被动反馈行动方的行为,那么能够融入的即时制元素几乎就只有这种时机把控了,我们粗暴地称其为QTE吧。简单如在力量槽浮动到最大时下达指令造成更高伤害,在短时间内连续输入更多次以造成更高伤害(轩辕剑系列的鼠槌);复杂如在准星摇晃时决定射击的时间以精准爆头(Steamworld Heist),下达攻击指令后可以通过即时反应追加指令打出Combo(阿加雷斯战记?),释放技能后如果在规定时间内完成输入下前下前A就可以技能释放大成功造成更大的范围伤害(我没见过这么奇怪的游戏)。QTE应用于行动方比应用于非行动方在机制上会更加方便,因为游戏内本身包括了“选择”机制,一个在行动的单位是被“选择”了的,这样使用QTE可以针对被选择了的单位和他的相应行动,而在受击的时候使用QTE就会出现多目标同时受击而不知道究竟在针对哪个目标使用的QTE的情况。如果一定要作为非行动方使用QTE,就要求游戏严格限制伤害目标数量或者伤害结算顺序(好比《三国杀》中一个玩家出了万箭齐发而其他的玩家轮流出闪),不是不能做,就是会有些麻烦。 以上这两条是在几乎不破坏回合制框架的情况下生套上去的即时制元素。由于这些仅仅是非常外围的元素,即便添加了也并不怎么让人觉得我们的SRPG变成了即时制游戏。不过这些元素非常外围并且通用性比较高,强X到任何机制里都是可行的。这里说的仅仅是理论上机制可行,具体体验不作保证。 1.2. 半回合制战棋游戏 首先需要对这里讨论的半回合制进行简单的澄清。由于个人以为自己好像没有很准确地把握ATB和CTB的概念,这里不做误导性的阐述,只用个人觉得行之有效的定义。一般而言的半回合制,比如《英雄传说6》,实际上并没有真正意义上地融入即时制元素,只是将传统战棋游戏中的“我方回合”与“敌方回合”拆成了属于每个单位自己的回合,并且添加了行动点的机制,行动会消耗行动点,行动点会随时间缓慢恢复。这样,我们就可以将半回合制抽象理解为经典回合制+特殊的回合轮换机制。因此,适用于经典回合制的即时制元素,QTE和出手时间在此也适用,此处就不再讨论。更值得在意的是,如何在半回合制拓宽了的维度中增加即时制的元素,即即时操作如何影响回合轮换机制。如果说,当属于某单位的回合到来时,系统自动开启该单位的回合(轨迹系列),回合轮换机制就等于说是静态运算的,其中没有任何玩家操作的空间。所以在保留回合制结构的情况下,想要加入即时制元素也无非是出手时间和QTE。 1.2.1. 用出手时间影响静态回合轮换 试想一种把出手时间纳入到回合轮换机制中的设计,我可以设计这样一个机制,如果玩家在一个单位的回合停留越久,该单位的下一个回合就会越迟到来,所以玩家决定话多长时间来思考与操作这个单位就会成为游戏的玩点。当然,如果游戏不能很好地控制玩家的行动时间与获得收益比的话,游戏平衡就很容易受到破坏。比如,轮到约修亚的回合,同样是令约修亚砍一刀,思考2秒和思考30秒造成的结果就有巨大差别;或者轮到林克的回合,林克可以自由地在地图上奔跑15秒,或者林克可以花15秒单键连打砍了Boss105刀。即时制下,不同的玩家行为能够对游戏结果造成巨大的差别,如何平衡在出手时间内玩家的行动,这要求非常合理且精细的系统与数值规划,而且需要尽量契合SLG的精神(我们确实是从SLG说开去的对吧?我们确实还是在说SLG的对吧?)。 1.2.2. 用QTE影响静态回合轮换 试想一种用QTE影响回合轮换的机制。假如一个敌人的回合到来的0.5秒之内你按下F5就可以直接跳过该敌人的回合,越强的敌人留给玩家的跳过回合的判定时间越短。这个设定太逗逼了。我们试着再多带着一些SLG的精神去看,当你有一个单位在眩晕的敌人旁边时,该单位的回合开始时会给玩家一个QTE机会,令敌人的眩晕时间延长,从而影响到回合轮换顺序。嗯,舒服多了,但是我并没有尝试过把这种东西嫁接到传统SRPG上,也没见到有人做过,欢迎大家给一些例子或者积极做一些尝试(笑)。 1.2.3. 主动干涉回合轮换 前面的讨论涉及到的都是静态回合结算的情况,即系统不会耽误任何一个单位的“时间”。下面我们可以考虑一种也许更加可行的情况,即玩家可以更自由地决定单位行动的时间(类似幽城幻剑录的战斗系统)。假设玩家单位的回合在行动槽恢复之后不会立即到来,而需要玩家主动触发。我们就可以考虑这样的情况: 原本的出手顺序是“李逍遥>孙悟空>赵灵儿”,按照系统的静态顺序,玩家用李逍遥攻击孙悟空,之后孙悟空会因为生命值低变成超级赛亚人,游戏变得艰难。 这里所谓的主动干涉静态回合,即允许玩家不主动激活李逍遥的回合,而等孙悟空正常行动之后,再连续激活李逍遥和赵灵儿的回合,在孙悟空来不及变身的情况下击杀孙悟空,玩家的即时操作(或者选择不操作)导致回合轮换顺序由原来的“李逍遥>孙悟空>赵灵儿”变成了“孙悟空>李逍遥>赵灵儿”。 或者有这样的情况,玩家一心关注于李逍遥和赵灵儿对抗孙悟空的战况,没有关注在战场另一边对抗贝吉塔的林月如,由于没有及时激活林月如的回合下达恢复指令导致林月如被贝吉塔击杀。 这套机制允许玩家通过对时机的决断影响战局,也能够制造顾此失彼或者错失良机的情况,可以说比较符合RTS的精神。应该算是目前为止找到的可行性比较高的一种方案。当然它也有相应的缺点,玩家为了不浪费角色的行动恢复时间可能会试着不停地点击角色以激活即将到来的回合,另外还需要考虑经典回合制下的视野变动,通常行动的单位需要位于视野的中心,而不断的切屏是否会造成玩家不便于实时掌握战场的情况。 其实,为了让玩家像传统SRPG一样有足够时间去理解整个战场,加入一个暂停功能不就好了吗?没错,而且暂停作为一个跟什么系统都不打架的功能,对于继续探索这个机制的帮助简直不是一点两点,这一点我们可以稍后再谈。 上篇 此处是上篇,方便大家整(kan)理(wo)思(fei)路(hua)。 继承上一篇,我们接下来需要讨论的是,试图通过打破回合制的框架来调和即时制和回合制SRPG。 1.3. 部分脱离回合制的实验性机制 上篇文章中的讨论,我们的设计改动完全没有触及到的回合制的核心,而只是在外围加一些皮毛而已(虽然其中一些已经显示出一定的趣味性)。接下来我们试着把玩家从“回合制”的概念中解放出来,也就是说,我们要探索一些更加类似即时制的模式,使得玩家并非只能在自己的回合下达行动指令,在别人的回合也可以。这样,我们可以在更大程度上摆脱回合制的限制。 既然这里我们打算接过即时制的担子,那么也在这里对即时制做一些简单的讨论。上一篇文章提到即时制的核心特征是,玩家下达的指令发生在不同的现实时间内会造成游戏内的显著差异。这里我们需要谈及另外一个特征,即所谓的“连续性”。这要求即时制游戏比回合制更多地,或者说更详尽地定义一些东西,例如即时制下,我从位置A移动到位置B,对于每一个时刻我所处的位置都需要定义,这样才能够知道在t时刻打在X位置的伤害要不要算到我头上;对于每一个时刻我所处的状态也都需要定义,这样才知道我的技能是在施法动作中被打断还是完整地释放出来了。当然,计算机实际上并不一定需要精确到我们直觉理解的每一时刻,只要精确到足够细小的时间单位(比如帧)就可以给玩家足够连续的体验,不过关于这个问题我们也可以放到后面再讨论。 在理解了即时制的连续性之后,我们便对将回合制改成即时制会遇到的麻烦有了初步的理解。那么,根据前面对经典回合制战棋游戏的定义,战棋游戏中的单位在游戏中做的基本行为就只有两种,移动和其他行动,当然也有结合了两种的指令,比如三国志11中的战法。为了简化讨论我们还是从简单的二分法开始,我们试着分别将移动和其他行动从回合中拆出来。 1.3.1. 即时移动与回合制战斗 把这两个概念放在一起是不是很容易让人想到百战天虫?嗯,不过百战天虫并不算即时移动,因为在每一个玩家的回合只有一只虫子可以走,所以只能说是不按格子走的回合制游戏,准确地说,格子更加细小的回合制游戏。 但是,如果百战天虫都不算的话,这个机制下的游戏就显得非常诡异了,给人的感觉就像是在。。。用苍蝇拍打苍蝇?即时制的时候,玩家和苍蝇都可以自由移动,等到苍蝇在玩家的攻击范围内停留时,系统判定进入玩家的回合,玩家可以选择攻击或者放弃。当玩家使用苍蝇拍攻击,则判定有没有打中,打中了则苍蝇被击杀,没有打中则苍蝇逃跑,玩家回合结束,游戏重新进入玩家和苍蝇可以自由移动的即时制阶段。。。好像并不是那么无趣嘛。。。 如果找到适宜的回合轮换机制与相应的包装,这一机制未尝不可一用。例如我们在这个模型下设计一个高科技的战车对战的游戏。每一个单位都是一辆坦克,这样可以被抽象成两部分,一部分是遵从即时制自由移动的车身,另一部分是遵从回合制出手顺序的炮塔。基于即时制的移动规则,在非战斗回合的任何时刻,都可以看到坦克们在战场中自由移动。但是战斗是回合制的,所以每一辆坦克的炮塔都只能在属于自己的回合射击,而且为了严格贯彻回合制,在一辆坦克正在瞄准与射击时,其他的坦克是不能动的。我们假设游戏的回合轮换机制是在前文1.2.3.中提到的主动触发的半回合制,那么这个游戏就有一定的可玩性了(说到底还是那个回合轮换的机制好),而且这个游戏除了节奏慢一些,事实上也跟即时战略没有很大的区别了。(其实这样的游戏很早以前就有了,比如放浪冒险谭,FAMI还给了40分满分) 前面我们说过,即时制与回合制的区别在于下达指令的时间差会不会造成游戏结果上的差异。如果我们的游戏里采用回合制的战斗,意味着并不存在攻击动作,没有给玩家即时反应的机会令玩家防御/闪避/打断等等,那么即时制的引入就没有意义。在一个战车对抗的游戏模型中,如果所有的攻击动作几乎都是瞬时完成的,所有的弹道都是瞬时命中的,完全没有防御/闪避/打断的空间,那么这里到底是做成即时制还是回合制已经不会影响游戏结果,只是在视听表现上有所不同。回合制的战斗会主动地进入每一个单位的回合,给他们机会做动作播特效并让玩家慢慢地看明白究竟每一次伤害都是如何造成的。如果觉得仅仅这些不够“回合制”,我们也可以深化回合的概念,假如每一辆战车的回合包括填弹,瞄准,射击与辅助(允许潜行/架起/修理等)这样的回合阶段,也许可以大幅地将游戏往回合制这一头拽一拽。总得来说,玩家的精力是有限的,游戏的流程是固定的,即时与回合是打架的,此消彼长是不能避免的。 当然,上述的机制其实也可以包装成奇幻RPG的背景,冷兵器和魔法对抗。这样游戏的实际效果大概可以想象成,龙腾世纪为每一个单位的每一次攻击动作专门下达一次指令,并且有相应的特写画面。想要保证游戏的趣味性依然依赖于对于数值和战斗节奏的精细把控。 (注:这一段讨论中没有顾及到将战棋类SLG的移动改成即时制之后,单位之间在棋盘的大格子上即时移动造成的问题,这个问题留到第2部分关于走格子的RTS时会集中讨论) 1.3.2. 即时战斗与回合制移动 如果我没有理解错的话,Wartile已经在这个方向上进行了一些探索了。如果单位短兵相接,那么交战是即时的,然后每一个单位只有在行动冷却结束之后才能移动,在开始移动到移动指令完成之前,游戏是暂停的。这种机制下,Moba中各种躲技能的高端操作就变成了容易实现并且可以规划的。即时的战斗要求游戏明确地定义攻击/技能动作的前摇(出招硬直)、打击帧与后摇(收招硬直),以及弹道的飞行机制、命中机制,伤害判定的时间与范围。但是回合制的移动规则可以要求,在该单位的移动回合之内,所有与战斗相关的即时结算都会暂停,该单位不会受到任何伤害,直到移动到一个新的位置回合结束。重新回到即时制的时候,再继续处理这些之前举起刀还没有砍下去目标就离开了的问题,射在半空中的箭是要追向目标的新位置还是打在目标的旧位置之类的问题,移动之后要不要重置普通攻击时间之类的问题。 如果我们不考虑打断游戏的回合制操作,而仅仅看游戏在即时制的连续时间内发生了什么(所有回合制下的操作在连续的时间内都被视为瞬时完成的),那么这个游戏就像是,一个是所有的单位都没有行走但是多了一个闪现技能的Moba游戏,个中趣味大家可以自行体会。。。初步感觉跟前面的机制具有一些相似的特点,第一是,想要做得好玩,操作性与策略性并重,就非常依赖于对战斗节奏的精细把控,第二是,射程会在游戏中成为非常有意义的属性。 1.4. 同步回合制 前面的谈论回合制都是在1.1.经典SLG的回合制基础上衍生出来的。基于前不久我才接触到的概念,属于异步回合制(附链接)。反正是思想实验,无妨也去顺便考虑一下同步回合制的即时化方案。 我们还是先明确定义(当然此处定义还是出于个人理解,如果与业界统一的术语规范不符欢迎大家指正(而且似乎写到一半就已经有人来指正了,我思考了一下还是硬着头皮凭自己的理解写下去(哭)))。 异步回合制指的是,单位之间存在不共享的回合,例如前面提及的“玩家回合>友军回合>敌方回合”这样的顺序。 而同步回合制指的是,游戏内的单位没有不共享的回合,这里最典型的例子其实是网络游戏,例如《魔力宝贝》的PVP,所有的玩家单位共享回合的指令阶段与行动/结算阶段,只是结算阶段的流程会有速度优先和乱敏这样的机制。再做进一步的澄清,前面的对回合的定义是,玩家操作指令的现实时间不影响操作的有效性,因此李逍遥砍了孙悟空一刀并不被视为一个“李逍遥的回合”,因为并没有给玩家流出操作时间。另外,我们可以想象所有的战斗结算都在一瞬间完成而且不播放动画,没有大家轮流你打我一下我打你一下的视觉表现,“李逍遥的回合”就显得更加难以站得住脚,可以和其他的战斗结算一起被统归到共享回合的结算阶段之中。 当然异步回合制中也可以有公认的同步回合,比如一个大的游戏回合可以包括一个玩家回合与一个敌方回合。另外,在单位数量较少的人机对战中,回合究竟是异步还是同步几乎没有办法判断,所以两边关于即时化的方案应该是通用的。 如果能够接受以上的概念,大家应该都能够感受到同步回合制本身跟战棋类SLG的相性很差,所以我不负责任地不展开了。。。我这里想说的是,其实它和即时制的相性很好(这不是在变相地说明战棋类SLG和即时制相应差吗,你为什么还要继续写下去啊)。不管,我们从同步回合制的两个基本阶段,指令阶段和结算阶段入手尝试即时化。 1.4.1. 即时的指令输入与回合制的结算 恕我无能,根本无法想象这样的东西存在!Pass。 理性地思考一下是因为定义不符,我们对回合制的定义是,在一个时间范围内,指令输入的实际时间不影响游戏结算结果。说明我们对即时制和回合制定义基于输入而不是结算,指令输入是即时的,就已经完全不是回合制游戏了,无所谓回合制与即时制的结合。 1.4.2. 回合制的指令输入与即时的战斗 那么回合制的指令输入与即时制的战斗呢?这个可能性其实一开始大家就都在考虑了。我们对传统的同步回合制进行几步改造: 1)将战斗结算变成即时的,这样更合适的叫法是战斗演算; 2)将指令阶段与演算阶段的切换变得更自由,比如玩家可以主动开启指令阶段,再主动进入演算阶段(这里,我们终于把1.2.3.留下的坑填上了,如果玩家会顾此失彼不能把握战局,就让游戏可以随时暂停嘛); 3)取消演算阶段不能下达指令的限制。 这样,指令阶段可以像回合制一样花费无限的时间去思考,而在演算阶段完全地变成了即时策略类游戏,所以擅长操作的玩家可以很流畅地一口气玩下来,而擅长帷幄的玩家又可以在每一个时刻精心地规划自己的策略,简直是兼具回合制与即时制游戏长处的理想机制!甚至动作游戏都可以这么做(想想那些超越人类极限的TAS,雾)!讨论了这么多终于赢来了一个光明的未来了! 当然,我们可以倒回去一步一步分析刚刚的三个改动分别给同步回合制带来了怎样的影响,或者觉得回合制的味道不够,可以限制两次暂停的间隔、可以暂停的总次数、能够叫暂停的时机等(你看,足球比赛的教练玩的不就是这种规则的游戏吗,比赛结果即时演算,他们看机会叫暂停)。 不过似乎不那么在意去分析了,因为我们已经很清楚完整的这三步改造给我们带来了怎样的游戏——博德之门系列?全面战争系列?等等,好像有点名作辈出啊,再仔细想一想看,其实并不是什么新鲜的东西啊!大家或多或少都玩过,大厂小厂或多或少也都试过水,而且说实话这个机制的游戏我个人几乎没怎么玩过,也没有非常喜欢的作品。。。 规则上回合与即时之间切换需要面临的主要问题都已经在1.3.中提到了,所以只要稍加注意,在没有特别不符合直觉的规则的情况下,这是一种经过长期与大量验证的保险可行的模式。当然,总会有不那么令人满意的地方,因为我们想要的是战棋类SLG的即时化,没有划成格子的棋盘怎么行呢?如前面所说,走格子的即时移动的问题,我们在第二部分,走格子的RTS里面讨论。 1.5. 一些其他例子 1.5.1. 伪装成同步回合制的节奏游戏 嗯没错我说的是节奏地牢。 而且节奏地牢虽然有明确的指令阶段与结算阶段的划分,本质上是一个异步回合制游戏,因为敌人的行为是根据玩家行为决定的,实际上游戏可以明显地划我方回合和敌方回合。用音乐的节奏作为出手时间的限制,较快的节奏以及对于单个角色的高频操作让人并不觉得自己在玩一个回合制游戏。如果使用Bard模式,玩家会发现我不动敌也不动,游戏的回合制框架就非常明显地体现出来。 当然这个游戏只是一个精彩的例子,虽然它继承了走格子,回合制的核心机制与即时制的体验,但是对于我们如何即时化一款战棋SLG没有什么参考价值。重申一遍,我们在考虑的是一款策略游戏。不要想把一首4拍的舞曲拆成4个回合,前3拍玩家依次操作3个角色,第4拍敌人行动什么的。。。 还有一个场外信息,节奏地牢实际上并不是非常严格地按照音乐节拍限制玩家的出手时间的。设计者发现很多玩家虽然能够找到节奏但是不能保证输入的指令准确地在节奏上(比如每次操作都稳定地慢半拍),于是加入了一个漏拍机制,只要玩家两次输入的时间间隔与节奏相一致,就算玩家输入有效。 1.5.2. 场外技能 市面上大量的仙侠类回合制手游很常用的技巧(为了轻操作或者爽快?)。玩家或者角色拥有无视行动顺序点一下就能放出来的技能,但是本质上也是在回合制框架之内的。套用到战棋SLG里,好比在敌方回合激活可以强制插入一个我方回合(也许只有特定单位可以移动),说白了也就是不成体系的半即时制。 所以到目前为止我们讨论了一下如何把为战棋回合制SLG添加即时制元素。另外还有一个反向思路,就是把RTS改成好比在棋盘上走格子一样。 2. 走格子的RTS——连续VS离散 此部分是预备讨论,本质上是主体无关的胡扯,为了节省时间可以直接跳转至2.1。 我们前面对于即时制的定义是,我在此时下达指令与在彼时下达指令会造成游戏结算结果的不同,那么如何定义此时与彼时呢?多数人会存在一种时间是连续的直觉,即任意两个时间刻之间都有一个新的时刻(此处的解释混淆了“连续”与“稠密”的概念,不过这种混用对于我们理解知觉范围内的物理时空不造成影响,所以不做进一步区分)。如果一段时间可以无限地细分为不同的时刻,就意味着计算机要记录无限多个时刻,这显然是不可能的。 出于实用的考虑,我们需要把时间划分为一些不连续的时间段,来制造“连续”的体验。而划分时间有一个非常方便的依据,就是帧率。计算机每秒钟需要多次刷新显示器上的像素点,绘制不同的帧,以给人连贯的动作感,绘制帧的频率就被称为帧率,帧率越高看起来就越连贯(话说写到这里的时候我在面前比划了自己的双手试图感受一下现实世界的帧率和动态模糊的成像技术,真是感人)。所以,不管计算机自己使用怎样的时钟机制,反正最后都是要一帧一帧地绘制到屏幕上,所以拿帧率作为切分时间的依据就是一个非常方便的选项。想像一下,稳定在30的帧率就意味着能够达到1/30秒的操作精度,对于许多游戏来说这已经十分足够了。 以上讨论旨在说明我们在游戏世界内的时间并不是直觉意义上“连续”的(伯格森VS普朗克?),而是有限个离散的时间断点组成的。回到即时制,我们所说的此时和彼时区别,就在于两个时刻分属于计算机能够识别的两个不同的时间断点,在两个时间断点间的操作就会被视为同样的操作。咦,操作的实际时间不影响游戏运算结果,这听起来不就是回合制么?所以说,对于计算机而言,回合制和即时制的区别只是在于“回合”与“回合”之间留给玩家多长的反应时间,长如传统战棋SLG可以等到海枯石烂,短如一些MUG会精确到1/240秒,还有一些介于之间的比如MC里面1秒5Tick的红石能源,或者节奏地牢基于BPM的操作间隔。(你看,对于悍马2K来说,SC2不过是一个回合制游戏而已。。。) 不仅是对于声音,对于图像也是一样的,计算机内计算3维空间有其相应的精度,显示器显示出来也有其相应的精度(像素),所以我们需要先承认,所有的RTS里面,单位移动其实都是走格子,只是格子的大小不同而已。 2.1. 网格坐标与世界坐标 虽然都是走格子,但是走大个子和走小格子的差别还是存在的。我们有理由假设一个游戏希望给玩家制造一种一贯的体验,实验性地强行结合两种体验的结果往往并不非常友好(所以我一开始也承认了我的这篇实验性机制探索并没有什么意义,只是个人的思维游戏而已)。基于“一贯体验”这个假设我们能够有意义地区分回合制与即时制,也就可以有意义地区分一个走格子的游戏和一个不走格子的游戏(这里说有意义的区分,指的是不至于陷入光头悖论这样的slippery slope之中)。 所以一个希望玩家走格子的游戏,会把格子做得非常明显,拿来给玩家走;而一个不希望玩家走格子的游戏,则会尽量地把自己的世界中的格子做得细碎,视觉上也更隐晦,让玩家拥有在一个连续的世界中自由运动的感觉。基于这种区别,我们就可以区分出两种定义位置的方式,我把基于明显的格子来定义位置的方式称为网格坐标,不基于明显的格子来定义位置的方式称为世界坐标。我们后面对游戏的分类也是在基于这两种表示位置的方法之上的。 一些游戏为了方便玩家会将世界坐标转化成网格坐标呈现给玩家,比如魔兽世界中玩家实际上是自由移动的,但是官方的地图依然会给玩家一个2位数的网格坐标表示玩家处在当前地图的X轴和Z轴上的位置。综合来看,采用世界坐标的游戏都可以创建一套或者多套网格坐标规则,将世界坐标以网络坐标表示出来,就好比总能在一个实数系中找到一个向整数系的映射方法。 世界坐标和网格坐标也可以混合使用。一个游戏可以基于世界坐标搭建一个复杂的场景但是让单位在画好的网格上面动(三国志11,Xcom),可以用网格模块化场景但是单位的移动和碰撞依赖的还是世界坐标(MC,塞尔达)。我们接下来讨论的是游戏在定义单位的位置时使用的哪种方式。 2.2. 使用世界坐标的RTS游戏 绝大多数3D游戏都需要基于世界坐标来定义单位的位置的,其实主要是因为当今3D的图像引擎是这么做的(静态体素除外)。毕竟做3D的目的就在于拟真(对于有些项目来讲还有省钱),用算法保证形体和透视的准确,还有复杂的动作,这些都依赖于精细的世界坐标。即便游戏规则也许会嫁接一套网格坐标进来,也不能避免3D成像需要依赖世界坐标的事实。 成像绕不开世界坐标,所以游戏规则也可以基于世界坐标来体现。碰撞体积,移动速度,攻击范围,全都可以通过世界坐标来体现。举个例子,魔兽争霸3的地图编辑器里对单位的定义其实非常细致,但是在常规地图里面我们玩到的是设计师基于对即时战略类游戏的理解设计的单位——他们更希望玩家模块化地理解战斗单位。除了投石车是典型的慢速单位外,农民比一般战斗单位慢以外,其他多数单位的移动速度都是相近的,虽然机制允许千差万别的移动速度,但是游戏中体现出的关于速度的设计非常有限,都是希望玩家少追多打。但是随着RPG地图的兴起,玩家日渐熟悉这些开始没有被用在游戏中的参数,例如初始速度295还是330,射程是128还是625,施法距离是600还是2000,都成为了影响游戏平衡性以及玩家选择的重要参数,刀塔2为了照顾玩家习惯,在地图坐标的规划中也继承了同样的世界坐标体系。 能够通过世界坐标体现出来的另一个典型因素是碰撞体积,这个因素在魔兽争霸3的许多自定义地图中被有意识地抛弃了,Dota2为了寻路顺畅而且比较有意地削弱这种RTS技巧,似乎更加缩小了英雄的碰撞体积。而在官方的战略地图中意味就很明显,单位被有意识地划分为大型,中型和小型, 单位的碰撞体积对于建筑摆放,阵型控制和围杀策略等等都有参考意义。 当然,如前所说,使用世界坐标来定义单位的位置,并不妨碍游戏使用网格坐标来搭建场景。如果进入魔兽争霸的地图编辑器就会明显地发现,游戏的场景是由网格坐标搭建的。玩家在建造阶段是把建筑造在地面上,建筑对地板的吸附,以及目标位置是否是有效的建造位置,这些都是依赖地面的网络来判定的。然而网格坐标仅仅类建造的时候会以UI的形式呈现,等建筑被造出来时就会生成相应的碰撞体积,所以最终决定紧挨着基地背侧造一个人口就会过不去中型单位的依然是基于世界坐标的碰撞体积。
(魔兽3的网格坐标系)
2.3. 使用网格坐标的RTS游戏 嗯,上面的例子不错(废话,War3唉!),不过以上并不是我们希望看到的效果。不要忘记我们还在讨论把制作一个即时制SLG的问题,我们期望看到的是走格子的RTS!所以其实去2D游戏中寻找说不定会更有帮助。 2.3.1. 所有单位都使用网格坐标 如果把眼光放得远一点,就会遇到很多想要实现连续流畅的寻路,但是由于技术限制最终不得不把所有的单位用网格坐标标记起来的游戏。此时的经典范例依然是魔兽争霸,不过是2代。此时游戏中的所有单位的位置都是用网格坐标定义的了。所有可移动的单位体积为1×1,人口为2×2,金矿和功能建筑为3×3,基地4×4。你看,法师对亡灵巫师,圣骑对食人魔法师,近战远程单位都有,技能也有组合也有,都齐了,只要再去掉复选,这已经可以是即时制战棋游戏的一个很好的例子了。
(魔兽争霸2中整整齐齐的网格坐标)
2D RTS最辉煌的作品应该也许非星际争霸莫属了吧(什么牛关居然没有SC1的词条,吓得我赶紧去新建了一个),但是星际争霸中最广为玩家诟病的就是它的卡寻路的问题——在极端情况下还可能出现两只龙骑相向而行,撞在一起,结果由于每一次修正路径的方向都刚好相冲,然后同步地一起摇摆而没有办法绕开对方。曾经听一个星际玩家这样说过,星际2的Hit&Run是为了走位和操作,而星际1的Hit&Run很大程度上是在避免单位因为卡寻路而发呆。所以,这里只能不无尴尬地说,星际1正好是想要在2d中实现流畅的世界坐标,但是不巧没有做好的那种,在对单位和碰撞的规划上,甚至还没有魔兽2来得干净(其实走格子会利落很多)。当然,必须承认星际争霸面临着需要同时处理单位视觉、点击相应范围和碰撞判定范围的技术困难,想要在2D环境中让这三者完美协同是非常困难的。至少在我的游戏经历中,比较少能够很好地协同这三者的2D游戏。其实另外一个优秀的例子是红警95,它很好地协同了视觉单位和碰撞,一个大格子包含5个小格子,人占小格子,战车和建筑占大格子,单位就可以规整地堆叠在一起。但是此时选择单位的操作就不那么舒服,因为单选的判定框也都叠起来了。。。
(红警95中标准的5小兵抵1坦克,6坦克抵1房子的网格坐标体系)
实际上目前看来在2D下把世界坐标做得最稠密的2D RTS游戏是部落冲突和皇室战争,至少由于缩小了单位的物理阻挡而且控制了同屏单位的数量,互相妨碍的情况非常少出现。当然他们其实也可能使用了3D的引擎,细节我并不清楚。另外一个由于动作流畅以及限制了同屏的单位数量而几乎完全感受不出的走格子游戏是暗黑破坏神(咦初代的词条牛关居然也没有),而且这也是一个不用选择单位的游戏。
(强迫症福音,星际1里龙骑还是能够整齐地站成一个方阵的,只是需要很多努力+_+)
(基地产农民的尝试,可以看出一开始的一圈农民可以非常整齐地拥护在基地周围,之后的农民就开始歪楼,而扰乱队形的就是那红圈圈起来的那两只。目测农民出产的机制是默认距离基地最近的位置,而农民构成的阻挡又刚好不能把基地围成一个规则的形状,所以最近的位置只能在角落上。在War3里暴雪就学得很聪明,小、中、大型单位的体积分别是16,32,48,建筑的碰撞尺寸也都是16的倍数,大家就可以快乐地整齐地排成一队了) 走格子的RTS本质上需要面临的最大问题就是移动的连续和格子的离散之间的矛盾,即当我走在两个格子之间时,我站在哪一格。一般而言即时战略游戏不允许有2个单位站在一个格子上。这样就没有办法有效地选中其中某一个单位。处于2个单位不能站在同一个格子上的基本原则,需要有机制限制已经站人的格子不可以再站人。魔兽2在一个单位行走到2个格子之间时,会允许出现1个单位同时占有2个格子的情况,此时这2个格子对于其他的单位都是不可用的。所以魔兽争霸2里面常常出现的情况是,2个单位排成队向一个方向走的时候,就会因为发现前面的格子被占了所以绕行的情况,实际操作中很恼人。这种问题想要回避也不难,取消游戏中的单位复选就可以了。一次只能控制一个单位,单位特性再突出一些,做成RPG的感觉不就很好嘛。 (其实刚在他俩是排成一行向左起步走的,但是后面的嫌前面的挡路就要向下绕一下,一会再走回去)
玩Dota的朋友都应该知道S卡兵或者卡敌人身位这样的事情,这种简单有效的移动规则本质上来源于战棋游戏——当一个位置被别人占了时,在移动的单位就要试图绕开这个位置。《魔兽2》,包括《星际1》的情况都是介于完全走格子和完全自由碰撞的之间的过渡时期产物,在能够实现自由碰撞之后他们就立即被抛弃了,想想《魔兽争霸3》和《星际争霸2》对于各自的前作的优化便知,而且绕过障碍物的逻辑也依然被延续下来了。(《皇室战争》是我知道仅有的没有采用这种设计,因为这对于直接攻击建筑的单位非常不利,所以CR里一定程度上允许移动单位“挤开”站立单位,但是这个“挤开”的关系非常微妙,以我弃坑之前的观察并没有把握到) 2.3.2. 部分单位使用网格坐标 还有另外一些更特殊的即时战略游戏,他们只有部分单位使用了网格坐标,而另一部分单位使用的是自由移动的世界坐标。这个听起来很无厘头的机制其实是构成了一个非常流行的游戏类型,对的其实就是塔防嘛。 看到这里的大家一定大呼上当,塔防跟我们说的即时策略改走格子没关系啊,因为没有单位在走啊!那所以,就把塔改成能走的就行了,简单。不过这里可以试着用另一种显得更“即时”的方式走。 前面RA95和魔兽2都对于连续移动的单位都有允许同时占两个格子的情况,而且很多时候需要预占前一格——当两个人几乎同时走向同一个目的地的时候,我们看到的最终结果是,一个单位在到达目的地前主动停下,让另一个单位得以走到该位置,就像让路一样。 这里说的另一种走格子的方式就是“挤”出一条路的方式,可以加入一个位置修正的机制,这样单位不需要每走到一个格子的时候看前面的格子需不需要我“让路”,而是无论如何自顾自地走,如果发现走进了不该走的格子就马上回来。这样就可以避免一个单位有时要同时占两个格子的情况,就可以避免让路。不过缺点是修正位置的动作会造成一定延迟,而且需要一些还不错的包装。毕竟玩家不想看到自己的单位没事要先往障碍上挤一下再退回来的情况。 (其实这里也完全可以打破我们之前的棋盘游戏的直觉,不再限制一个格子上同时只能占1个单位,火焰纹章IF允许两个单位挤在一个格子里就很有启发作用。许多战略游戏仅仅对空中单位做这样的处理,地面单位还是按照棋盘规则行动。而且同时站在一个格子上的可以不仅仅是友方单位,还可以是敌方单位。这样每一个格子可以被理解为一块小的战场,对于人怎么进出这些战场,以及在这种情况下阻挡要怎么判定,也都需要配套的机制,这里我就不展开说了。) 另外,虽然游戏里确实有即时的移动,可是移动还是有一些意义不明的感觉,为什么不像棋子一样抓起来再放下去啊。嗯,好吧既然有了即时移动,那我们也可以再加一点料,给即时移动再增加一些操作感。比如说向特定方向前进2步的时候有冲锋效果,以特定方向迂回的时候有防御效果之类的。这样算没有太辜负我们的即时移动吧! 嗯,市面上有这样的游戏吗?应该还是没有的,我参与开发了一款,好奇的朋友可以点这里,不过还没上市,而且能不能上也还未知。所以我绕了这么大的弯子终于可以给自己的游戏安利一发了,坚持看到这里的朋友们你们都是好样的。 结语 到底为止,我们分别从即时化战棋类SLG,以及网格坐标化传统RTS这两个思路出发,把围绕“即时战棋”这一个实验性概念的可能机制都大抵磕磕绊绊摸了一遍。 如果有能称得上结论的东西,那就是,其实最理想的结合即时与战棋的模式我们大家都见过了,而且其实也已经相当成熟。剩下的虽然机制新奇,但是也可能多是鸡肋,也许已经有许多不为人知的先烈们勇敢地探索了这些领域,只是最后留下的不是丰碑而是无人知晓的荒冢。真正用于商业用途的话,这类机制的性价比会比较低,一方面需要能够完美解释该种机制的世界观,另一方面需要对于关卡与数值的精细把控,而这两者在我这种弱鸡策划面前都近乎玄学。性价比低的另一个意思是,同样的精力投放到成熟的机制里面能够制造的体验会有保证得多。 所以我说了这么多,到底有什么用呢。呃,除了能拐着玩安利自己的游戏之外,剩下主要是自娱吧,权当从一些简单概念出发来推演游戏机制的思想训练什么的。如果能够顺便娱乐大家的话,当然是最好咯。不过,很多技术上的东西都是基于粗浅的理解泛泛谈的,如果哪里不对欢迎指正,也鼓励评论区交流:)

查看作者更多文章

目录