玩桌面角色扮演游戏 (RPG) 有两种方式:您可以玩游戏发行商或独立作者编写的冒险,也可以玩即兴创作的冒险。无论您选择哪种方式,都可能需要做准备工作。一位玩家(通常称为游戏主持人)必须收集怪物或敌人属性、战利品表和规则参考,而其他玩家必须构建角色并分配(假装的)装备。没有什么能消除复杂 RPG 的准备工作,但如果您是 Emacs 用户,您可能会发现 Emacs 是一个很棒的仪表盘,可以让一切井井有条。
组织规则
不幸的是,许多 RPG 的数字版本以 PDF 格式分发,因为这是 RPG 出版商发送给打印机用于实体版的格式。PDF 在保留布局方面做得很好,但远非理想的电子书格式。如果您玩在开放许可下发布的 RPG,您通常可以获得其他格式(例如 HTML)的规则,这使您可以更好地控制和灵活性。即使是世界上第一个也是最著名的 RPG《龙与地下城》也以数字格式免费下载其规则(许多网站已将其翻译成 HTML 和 Markdown)。
我在 Emacs 中以 Markdown 格式打开规则,以便随时进行可搜索的参考。虽然在 PDF 阅读器中以 PDF 格式打开规则可以让您搜索嵌入的文本,但使用文本文件反而有几个好处。首先,文本文件比 PDF 小得多,因此加载和搜索速度更快。其次,文本文件易于编辑,因此如果您发现一条规则让您寻求澄清,您可以将您学到的知识(或您编造的任何内容)直接添加到您的主文档中。您还可以添加家规和其他资源。我的目标是拥有一个包含我在游戏中使用的所有规则和资源的单个文件,所有内容都可以通过快速的 Ctrl+s(Emacs 表示法中的 C-s)访问。
管理先攻权
大多数 RPG 系统都有一种方法来确定战斗期间的行动顺序。这通常称为先攻权,它经常出现,因为游戏中冲突的来源通常涉及战斗或某种对抗性的竞争行动。用纸和笔记录战斗并不难,但在我无论如何都在使用数字资产的游戏中,我发现一切都保持数字化更容易。幸运的是,久负盛名的 Org 模式 提供了一个出色的解决方案。
当玩家掷骰子决定先攻权时,我将他们的名字输入到 Emacs 的暂存缓冲区中。然后我输入每个怪物或敌人,以及每个怪物或敌人的命中或生命值 (HP),后跟两列 0
brad
emily
zombie 22 0 0
zombie 22 0 0
flesh-golem 93 0 0
然后我选择玩家角色 (PC) 和怪物的块,并使用 org-table-create-or-convert-from-region 函数围绕它创建一个 Org 模式表。使用 Alt+向下箭头(Emacs 表示法中的 M-down),我将每个 PC 或怪物移动到正确的先攻顺序。
| emily | | | |
| flesh-golem | 93 | 0 | 0 |
| zombie | 22 | 0 | 0 |
| brad | | | |
| zombie | 22 | 0 | 0 |
在战斗中,我只需要记录怪物造成的伤害,因为玩家管理自己的 HP。对于我在战斗中控制的敌人,第二列是其 HP(其起始数字取自 RPG 系统的规则),第三列是当前回合造成的伤害。
Org 模式中的表格公式在表格末尾的特殊 TBLFM 行上定义。如果您使用过任何计算机化电子表格,Org 表格 将相当直观。对于战斗跟踪,我希望从第二列中减去第三列。列从左到右索引($1 表示第一列,$2 表示第二列,$3 表示第三列),因此要用第 2 列和第 3 列的总和替换第 2 列的内容,我将此行添加到表格底部
#+TBLFM: $2=vsum($2 - $3)
我实际上并没有在每次游戏进入战斗模式时都将其输入到 Emacs 中。相反,我使用 Emacs 的 缩写模式 定义了一个自动完成触发器,该系统允许您输入您选择的特殊字符串,Emacs 会将其扩展为更复杂的内容。我在名为 ~/.emacs.d/abbrev_defs 的文件中定义我的缩写,使用 rpgi 后跟一个 空格 作为 Emacs 将该行更改为我的先攻表格公式的触发器
(define-abbrev-table 'global-abbrev-table
'(
("rpgi" "#+TBLFM: $2=vsum($2 - $3)" nil 0)
))
每次玩家对怪物造成伤害时,我都会在伤害列中输入伤害量。要触发表格重新计算,我按下 Ctrl+u Ctrl+c(即 Emacs 中的 C-u C-c)或 Ctrl+c Ctrl+c(即 C-c C-c),如果我碰巧在公式行上:
| brad | | |
| emily | | |
| zombie | 12 | 10 |
| zombie | 15 | 7 |
| flesh-golem | 91 | 2 |
#+TBLFM: $2=vsum($2 - $3)
这个系统并不完美。角色名称不能包含任何空格,因为 Org 表格按空格拆分单元格。很容易忘记您处理了一行并在回合结束时意外地重新处理它。要将 HP 加回生物的总数,您必须使用负数。(我认为这是负伤害,暗示健康。)再说一次,许多计算机化的先攻跟踪器也存在同样的问题,所以这不是一个特别糟糕的解决方案。对我来说,这是我发现的最快方法之一(我很高兴承认 MapTool 是最好的,但是当我不使用数字共享地图时,我使用我的 Emacs 工作流程)。
在 DocView 中查看 PDF
有时 PDF 是不可避免的。无论是 d100 酒馆名称列表还是地牢地图,一些资源仅以 PDF 形式存在,没有可提取的文本数据。在这些情况下,Emacs 的 DocView 包可以提供帮助。DocView 是一种加载 PDF 数据并生成 PNG 文件供您查看的模式(Emacs 也可以查看 JPEG 文件)。我发现大型 PDF 会有问题且速度很慢,但如果它是只有一两页的低分辨率 PDF,DocView 是一种无需离开 Emacs 即可轻松参考文档的方式。
我专门将此模式用于地图、表格和列表。它对于任何可能涉及搜索的内容都没有用,因为文本数据不可访问,但对于您只需要瞥一眼的文档来说,它是一个非常有用的功能。

大多数 Linux 发行版附带的 Ghostscript 套件(或肯定在您的存储库中可用)允许您处理 PDF,通过将图像分辨率从打印质量降低到屏幕质量来大幅简化它们。该命令主要包含 PostScript 命令和属性,但您不需要成为 PostScript 专家即可执行快速降低分辨率的操作
$ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 \
-dPDFSETTINGS=/ebook -dNOPAUSE -dBATCH \
-sOutputFile=adventure.pdf \
-dDownsampleColorImages=true \
-dColorImageResolution=72 big-adventure-module.pdf
在 Emacs 中打开 PDF 并不像听起来那么令人兴奋。它绝不是一流的 PDF 查看器,但对于选定的资源,它可以成为将所有信息集中在一个屏幕上的便捷方式。
创建冒险概要
已发布的冒险通常以散文为主。理论是您为准备好的冒险支付了很多钱,因此您显然希望物有所值。我确实重视作者投入到他们的冒险中的传说和世界构建,但在游戏中,我喜欢快速参考我需要的信息,以便游戏机制按预期工作。换句话说,当盗贼触发陷阱时,我不需要知道陷阱放置在地牢中的原因;我只需要知道陷阱存在以及盗贼需要掷骰子才能生存。
我没有找到任何现代冒险格式可以为我提供这些信息,所以我最终创建了自己的“概要”:冒险的最小轮廓,仅包含我需要的每个地点的游戏机制信息。再一次,Org 模式是让我方便地保存此信息的最佳方式。
在 Org 模式下,您可以使用星号为项目符号创建列表。对于子项目,添加一个星号。更好的是,按 C-c t (即 Ctrl+c,然后按 t 键)将项目标记为 TODO 项目。当您的玩家清除游戏中的某个区域时,再次按 C-c t 将该位置标记为 DONE。
* DONE 1 Entrance
** Zombie
AC 9 | HP 22
* TODO 2 Necromancer's chambers
** Flesh golem
AC 16 | HP 93
** Treasure
- Gold ring (200 gp)
- Rusty nail (1 cp)
Cursed (roll on curse table)
** Secret door (DC 20)
- to area 11
每个星号都是可折叠的,因此您可以通过将列表折叠到仅顶层来获得全局区域的摘要
* DONE 1 Entrance
* TODO 2 Necromancer's chambers
* TODO 3 Wyrmling nursery
* TODO 4 Caretaker's chambers
* TODO 5 Caretaker's laboratory
额外的好处:我发现制作自己的概要有助于我内化我正在准备的冒险的机制和传说,因此这种方法的好处是多方面的。由于我使用 Git 在 Emacs 中管理我运行的任何冒险,一旦我完成了冒险的准备工作,我就拥有所有资产的新副本,以防我与另一组人或一组新的角色一起运行冒险。
制作您自己的冒险日志
通常,我让我的玩家记录他们自己的冒险笔记,因为我想鼓励玩家自己解释冒险中发生的事件。但是,游戏主持人需要私人笔记来记录所有即兴数据。例如,如果已发布的冒险中没有铁匠铺,但玩家决定拜访铁匠,那么就需要即时发明一个铁匠。如果玩家在六周后再次拜访铁匠,那么他们期望它是同一个铁匠,并且游戏主持人有责任跟踪对此已发布设置的此类添加。我以两种不同的方式管理我关于冒险的个人笔记,具体取决于我可以使用的内容。
如果我有冒险的文本采用可编辑格式(例如 HTML 或 Markdown),我会将我的添加内容输入到冒险中,就好像出版商从一开始就已包含它们一样。这意味着设置和重大事件始终有一个真实来源。
如果我无法获得冒险的可编辑副本,因为它是一个硬拷贝或不易修改的 PDF,那么我将我的添加内容写入 Org 模式下的概要中。从功能上讲,这意味着仍然有一个真实来源,因为我的概要是我查找信息的首选位置,仅在忘记细节时才求助于已发布的文本。有时我非常喜欢我的添加内容,以至于将它们合并回我的冒险 Git 主分支,但通常,我信任即兴创作,让添加内容为每个玩冒险的小组动态发生。
为什么 Emacs 是我最喜欢的 RPG 仪表盘
我开始使用 Emacs 进行 RPG 是因为它充当了我梦想中的抬头显示器。“正确”的答案可能是一个好的 平铺窗口管理器,但在我实现它之前,我对 Emacs 感到满意。一切都绑定到专为特定性和速度设计的键盘快捷键,并且有足够的简单自定义,我可以拼凑出足够好的解决方案——有时甚至在玩家相互争论下一步该做什么时。
我尝试过同时处理多个桌面、多个 PDF 阅读器窗口和一个用于先攻权的电子表格;虽然这是一种不错的体验,但没有什么能比得上 Emacs 作为我的 RPG 仪表盘的流畅性。
嘿!你喜欢 Emacs 吗?撰写一篇关于您如何使用 Emacs(GNU 或其他)的文章,以包含在我们即将推出的 Emacs 系列中!
13 条评论