浅谈Roguelike

从柏林诠释说起

在2008年召开的国际Roguelike开发会议上,众多的Roguelike开发者与爱好者共同制定了《柏林诠释》,规定了Roguelike游戏需要具备如下的重要元素:

  • 游戏使用过程生成地图来增加可重玩性。
  • 游戏的角色会永久死亡,存档无法用来从永久死亡状态恢复角色。
  • 游戏采用回合制、网格化地图,玩家可以有足够的时间思考每一步的决策。
  • 游戏非模式化,玩家可以采取的行动不根据游戏的状态而变化。
  • 游戏路线非线性,玩家可以用不同的手段来达成相同的游戏目标。
  • 游戏具备资源管理玩法,玩家必须合理配置其资源的消耗来最大化生存的可能。
  • 游戏专注于怪物战斗,玩家没有和平选项来跳过战斗。
  • 游戏鼓励玩家探索地图来获取随机分布在地图上的各类道具。

除此之外,Roguelike游戏还往往包括如下的次要元素:

  • 玩家采用单一角色通关游戏。
  • 怪物具备一些和玩家相同的能力,如与场景道具互动,施放法术等。
  • 游戏具备战术上的挑战,迫使玩家需要尝试很多次才能学会最适合的生存战术。
  • 游戏采用ASCII字符表示的地块组成的地图。
  • 游戏包含地下城探索,地下城由房间和连接房间的走廊组成。
  • 游戏会将玩家角色的统计显示出来。

然而,给游戏制定一个“标准”往往就是一个立flag的事情。当下所流行的,为我们所熟知的roguelike游戏中,有许多游戏不完全具备上述特点。我这里将一些steam上标有rogue-like标签的热门游戏列出来,与上述的柏林诠释进行比对:

《杀戮尖塔》(Slay the Spire):不完全具备网格化地图。

《死亡细胞》(Dead Cells):非回合制,不具备网格化地图。

《暗黑地牢》(Darkest Dungeon):不完全具备网格化地图。

《饥荒》(Don't Starve):非回合制,不专注于怪物战斗。

《以撒的结合》(The Binding of Isaac):非回合制。

《挺进地牢》(Enter the Gungeon):非回合制。

可以看出,回合制、网格化地图、ASCII字符地图等游戏元素带有深刻的时代烙印。随着机器性能的发展和开发工具的多样化,回合制和网格化地图不再是roguelike的必选项了,并且它们对roguelike的本质,对这一品类的核心乐趣,不具备足够的贡献度。真正能被继承下来的,是随机生成游戏内容(Procedural Generation)+永久死亡(Permadeath)+资源管理(Resource Management)这三大核心要素。

可这三大核心要素,在太多的玩法迥异的游戏中都出现了。带有永久死亡元素的有P社游戏铁人模式,骑砍直面人生,Diablo专家模式等,在此基础上带有随机生成内容和资源管理的也有Minecraft,无人深空等等游戏的部分模式,而我们不可能把它们都称作Roguelike。这说明三大核心要素自己并不能构成核心玩法,这些游戏的核心玩法还是动作与战斗,是采集与建造,是策略,是解谜等。Roguelike元素能做的,是围绕这个核心玩法,给它添油加醋,创造出与常规玩法不同的体验。

那Roguelike游戏为何要把这三个要素放在一起呢?这些要素显然存在紧密的联系,我想先从永久死亡说起。

核心要素:永久死亡

永久死亡的机制,是和存档系统密不可分的。存档系统主要分为检查点存档和即时存档。存档系统的初衷,是为了便于玩家恢复游戏状态,避免因非游戏因素(现实中出门办事/晚上睡觉)等被迫终止而带来损失,也是PVE游戏的一大优势。存档系统避免的损失,是玩家的游戏时间,是玩家必须重来的游戏部分。游戏设计中,让玩家重新去玩一部分一模一样的游戏内容只有一种原因:玩家没有消费完这部分内容,也就是没能成功掌握这部分内容。而存档系统在这里便可以限制最大失败惩罚,在玩家失败时让游戏恰好回溯到玩家未能掌握的内容之前,而不是让他从头玩一遍。

不过存档系统的存在,也限制了游戏设计中的风险设计。在现实中,任何可能引起的损失都会是风险的一部分;而在游戏里,由于存档这种回溯时间线的方法存在,只要损失达到玩家不可接受的程度,玩家都可以通过重来来回复。所以“永久死亡”机制,解决的就是风险设计的问题,把删档作为损失的一部分来增加坏决策的风险。与之相对的是,能让你继续玩下去的,就是好决策。坏决策和好决策共同组成了一个“决策池”(Decision Pool),让玩家从中去做有意义的选择。可如果游戏是单线式,何时何地出现什么怪物都是固定的,那永久死亡的作用,就变成了让玩家重新去玩一部分一模一样的游戏内容,这是非常伤害游戏体验的一件事情,这样的决策池,不也毫无惊喜了吗。

核心要素:随机内容

为了避免上述问题,Roguelike需要引入随机地图以及其他过程生成内容,制造不确定性(Uncertainty),让每次开始游戏的所可能面对的体验都不尽相同。从叙事角度看,在每次游玩中玩家操纵的角色所经历过的一切“历史事件”都具备唯一性与不可回溯性;玩家在失去这个角色时,不仅失去了那段游戏时间的努力,也会永久失去那个角色所伴你度过的记忆。可以说过程生成系统及其带来的非线性体验,是永久死亡机制下,避免内容高度重复的一个手段。

上面说到的“决策池”,是玩家当下能进行的、对游戏会产生深远影响的行为总和,此前说到的Roguelike“非模式化”的特点,就是指游戏不会因当前状态与模式上的不同而使决策池发生根本变化。而决策池中,包含了好的决策与坏的决策,但不应该包含“明显好”的决策和“明显坏”的决策。根据Meaningful Choice的观点,所有的决策收益都必须和当下的游戏状态紧密相连。而引入随机元素制造非线性体验的结果,便是玩家的可以得到的选择极难达成全局最优。永久死亡+随机因素在决策层面产生的影响,就是强迫玩家就必须接受“非最优”的选择无处不在这个事实,接受当下的局部最优解,减少玩家追求全局最优解的动力,把精力转向“继续游戏”这件事情上。

然而对于缺乏经验的玩家来说,如果在游戏中缺少前后的连接(Context)和显性的提示时,他是很难时刻分辨游戏的决策优劣的。因此,在roguelike游戏的高惩罚到来之时 ,他会倾向归因为“是这游戏没教会我,我才失败的”,而不是“我之前有几个决策做的不对,我才失败的”。这样的决策系统,即使玩家失败了,想要从头再来,学习如何掌握这样的游戏,也会因为缺少相关的线索而无从下手。

核心要素:资源管理

资源管理系统,在这里就是决策对应的线索。游戏用资源对玩家的选项浅度量化,把决策的一部分引导到资源管理上,便于玩家从中学习和重来。一般意义上,虽然有随机因素的干扰,玩家消耗资源越多的地方,在这上面得到的帮助也越大;在玩家失败并接受删档惩罚的时候,可以从资源的角度分析失败的原因,从而在下次重来时重新配置资源分配。资源管理玩法,最怕出现的情况之一,是由于系统的简单化,让全局最优解可以很容易通过数值意义上迭代来逼近;而在Roguelike这里,随机生成的游戏内容恰好一定程度隐藏了全局最优解,帮助达到了延长游戏可重玩性的目的。

总的来说,符合Roguelike定义的游戏往往同时使用永久死亡、随机生成和资源管理玩法等要素,在一个外来的核心玩法的推动下,围绕决策的风险和收益,大大延长了游戏的可玩时间,并创造了独特的游戏体验。然而,上面提到的逻辑,也就是roguelike们想做到的事情,一直都能这么顺利的实现吗?

Roguelike并非完美

在Roguelike游戏中,存在着诸多的技术和设计隐患,限制了往这一方向靠近的部分游戏作品的表现。最常见的之一便是存档系统的问题了。永久死亡机制高度依赖于存档,而大多数游戏的存档是存放于本地的,这意味着玩家只要乐意,是具备完全的解读和修改的能力的,隐藏存档位置和加密移位也只是延后了修改器的研发而已。只有逻辑和存档放在服务器端上的游戏,其永久死亡模式才可以说是完备的,但带来的成本也是不容忽视的。存档破解的选项存在意味着最大死亡惩罚在永久死亡模式下只是从重新读档变成了上网查看如何破解存档,哪怕干掉存档系统,内存修改器的存在也使其意义降低,而存档系统的缺失却会完全限制游戏的总通关时长。

存档问题,限制的其实是游戏拔高难度降低容错的能力。Roguelike还往往具备高度随机的关卡、怪物和奖励;在随机因素的作用下,非即时制的Roguelike游戏除了考验玩家的运气和对游戏的了解以外,很难有其他拔高难度的做法;而后者是会很快被玩家摸清的,导致高难度的回合制roguelike在压榨数值时,往往变成一个纯看脸的游戏。看脸的游戏结合高死亡惩罚会带来无效的重复劳动和糟糕的体验,这点爬过塔的同学应该深有体会。因此,基于存档系统的死亡惩罚高度依赖玩家的自觉前提下,从随机因素上制造难度只会挑战玩家的这种自觉,而对通关后的胜利体验帮助不大。

除此之外,大多数Roguelike的非线性游戏特点,也使其很难具备单线性和多线性游戏那样容易的叙事和机制-叙事自洽(Ludonarrative Consistence)能力。以《永恒之柱》为代表的TRPG同样具备永久死亡模式作为可选项和丰富的资源管理玩法,但是为了突出剧情和与逻辑自洽的世界观设定,很难引入过程生成的游戏环境来制造可重玩性。在这一点上,《环世界》作为非线性“过程生成叙事”的代表,通过复杂而自洽的系统演示了高度过程生成的游戏如何创造与玩家存在紧密情感连接的有特点的角色;但它的殖民地管理的核心玩法使其无法完全归入Roguelike标签下,只能说是值得参考的另一种游戏设计的方向吧。总之,大多数Roguelike的关注方向,也并不在此。

其实一个游戏的机制-叙事自洽能力,从商业角度上能很大程度决定这个游戏与竞品相比的体验差异,给玩家一个选你而不是选别人的理由。Roguelike游戏们对这方面的关注度往往低于它们对核心玩法本身的打磨,但一旦打磨不成功便很难在同类中制造区分度,这也是许多打着Roguelike旗号本质换汤不换药的原因。《暗黑地牢》所引入的痛苦系统可以说是这个方向上比较成功的一次尝试,也算是替Roguelike游戏在摆脱柏林诠释的刻板印象,寻找新的突破口指明了方向吧。

[转] [知乎] 浅谈Roguelike的更多相关文章

  1. 浅谈Android编码规范及命名规范

    前言: 目前工作负责两个医疗APP项目的开发,同时使用LeanCloud进行云端配合开发,完全单挑. 现大框架已经完成,正在进行细节模块上的开发 抽空总结一下Android项目的开发规范:1.编码规范 ...

  2. 浅谈 Linux 内核无线子系统

    浅谈 Linux 内核无线子系统 本文目录 1. 全局概览 2. 模块间接口 3. 数据路径与管理路径 4. 数据包是如何被发送? 5. 谈谈管理路径 6. 数据包又是如何被接收? 7. 总结一下 L ...

  3. 浅谈配置chrome浏览器允许跨域操作的方法

    浅谈配置chrome浏览器允许跨域操作的方法 一:(Lying人生感悟.可忽略) 最近有一天,对着镜子,发现满脸疲惫.脸色蜡黄.头发蓬松.眼神空洞,于是痛诉着说生活的不如意,工作没激情,工资不高,一个 ...

  4. 浅谈Java的集合框架

    浅谈Java的集合框架 一.    初识集合 重所周知,Java有四大集合框架群,Set.List.Queue和Map.四种集合的关注点不同,Set 关注事物的唯一性,List 关注事物的索引列表,Q ...

  5. js—浅谈方法和思路的重要性(首篇求大佬支持)

    js-浅谈方法和思路的重要性 学了这么久的js,我从老师的,同学的代码中发现,老师写的代码比我们的要清楚的很多,基本上没有太多累赘啊,能少的没有少啊等等..... 废话不多说,下面我们来看看这个我的一 ...

  6. 【javascript】浅谈javaScript的深拷贝

        前言: 最开始意识到深拷贝的重要性是在我使用redux的时候(react + redux), redux的机制要求在reducer中必须返回一个新的对象,而不能对原来的对象做改动,事实上,当时 ...

  7. 浅谈CDN、SEO、XSS、CSRF

    CDN 什么是CDN 初学Web开发的时候,多多少少都会听过这个名词->CDN. CDN在我没接触之前,它给我的印象是用来优化网络请求的,我第一次用到CDN的时候是在找JS文件时.当时找不到相对 ...

  8. Linux的文本处理工具浅谈-awk sed grep

    Linux的文本处理工具浅谈 awk   老大 [功能说明] 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS ...

  9. 浅谈.Net异步编程的前世今生----APM篇

    前言 在.Net程序开发过程中,我们经常会遇到如下场景: 编写WinForm程序客户端,需要查询数据库获取数据,于是我们根据需求写好了代码后,点击查询,发现界面卡死,无法响应.经过调试,发现查询数据库 ...

随机推荐

  1. 微信小程序开发中的http请求总结

    在微信小程序进行网络通信,只能和指定的域名进行通信,微信小程序包括四种类型的网络请求. 普通HTTPS请求(wx.request) 上传文件(wx.uploadFile) 下载文件(wx.downlo ...

  2. springboot集成axis1.4

    1.首先通过axis工具根据wsdl文件生成java代码和wsdd文件 set Axis_Lib=/Users/apple/configuration/axis-1_4/lib //lib文件目录se ...

  3. pytorch tensor的索引与切片

    切片方式与numpy是类似. * a[:2, :1, :, :], * 可以用-1索引. * ::2,表示所有数据,间隔为2,即 start:end:step. *  a.index_select(1 ...

  4. 欢乐水杯(happy glass)中流体的一种实现!图文视频讲解 ! Cocos Creator!

    使用cocos creator v2.2.2 实现流体效果 ! 图文+视频讲解! 效果预览 实现原理 整体思路是参考论坛中的一个帖子 这款游戏中水的粘连效果在Construct3中利用图层很容易实现, ...

  5. 题解 P2755 【洗牌问题】

    这是本人的第一篇题解 请多多宽恕 这一道题其实不要用数组 我们来观察一下n=3时的情况: 原: 1 2 3 4 5 6 4 1 5 2 6 3 2 4 6 1 3 5 1 2 3 4 5 6 我们去观 ...

  6. Contest 153

    2019-09-14 23:16:25 总体感受:节奏尚可,难度尚可.然而还是卡在了最后一题,完全没有想到使用dp. 注意点: 1)Contest的最后一题往往是DP,Graph,这个敏感度需要提高: ...

  7. 2020面试整理【java】

    spring面试题 1.你对spring的理解 Spring 是个Java企业级应用的开源开发框架. Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用. Sprin ...

  8. NOI ONLINE 提高组 序列 根据性质建图

    题目链接 https://www.luogu.com.cn/problem/P6185 题意 应该不难懂,跳过 分析 说实话第一眼看到这题的时候我有点懵,真不知道怎么做,不过一看数据,还好还好,暴力能 ...

  9. python接口调用把执行结果追加到测试用例中

    python操作excel的三个工具包如下,注意,只能操作.xls,不能操作.xlsx. xlrd: 对excel进行读相关操作 xlwt: 对excel进行写相关操作 xlutils: 对excel ...

  10. sql mysql数据库导库 panda pymysql

    mysql数据库 导入数据 1. panda 效率超高 对内存要求高 网络稳定性 # 读取文件 ratings_names = ['user_id', 'movie_id', 'ratings', ' ...