5种使用 Emacs 作为你的 RPG 仪表盘的方式

Emacs 是一种灵活的方式来组织和管理你的桌面角色扮演游戏。
101 位读者喜欢这篇文章。
7 open source Android apps for chess players

David Lapetina。由 Opensource.com 修改。CC BY-SA 3.0。

有两种方式来玩桌面角色扮演游戏 (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 的 scratch 缓冲区中。然后,我输入每个怪物或敌人,以及每个怪物的命中点或生命值 (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 的 abbrev 模式 定义了一个自动完成触发器,该系统允许你键入你选择的特殊字符串,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 即可引用文档的简便方法。

我专门使用此模式来处理地图、表格和列表。 它对于可能涉及搜索的任何内容都没有用,因为文本数据无法访问,但对于你只需要浏览一下的文档来说,它是一个非常实用的功能。

Emacs for RPG

大多数 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 模式下的快速参考表(rap sheets)。这实际上意味着仍然存在一个真实来源,因为我的快速参考表是我寻找信息的第一站,只有在我忘记了细节时才会回溯到已发布的文本。有时我非常喜欢我的补充内容,以至于会将它们合并回我冒险故事的 Git 主分支,但通常,我信任即兴创作,让补充内容在每个玩冒险故事的团队中动态发生。

为什么 Emacs 是我最喜欢的 RPG 控制面板

我开始使用 Emacs 进行 RPG 游戏,因为它就像我梦寐以求的抬头显示器。 “正确”的答案可能是一个好的平铺窗口管理器,但在我实现它之前,我对 Emacs 感到满意。一切都绑定到为特定性和速度而设计的键盘快捷键,并且有足够的简单自定义,我可以拼凑出足够好的解决方案——有时甚至在玩家争论下一步该做什么时。

我尝试过同时处理多个桌面、多个 PDF 阅读器窗口和一个用于先攻顺序的电子表格;虽然这是一个不错的体验,但没有什么能像 Emacs 作为我的 RPG 控制面板那样流畅。


嘿!你喜欢 Emacs 吗? 写一篇文章关于你如何使用 Emacs(GNU 或其他)的文章,以便包含在我们即将推出的 Emacs 系列中!

接下来要阅读什么
Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和龙与地下城爱好者。他曾在电影和计算机行业工作,而且经常同时在两个行业工作。

13 条评论

甚至还有一个很好的 Emacs 小模式,用于玩基于 d20 的桌面游戏。它为 org 模式提供了额外的功能。你可以在 https://github.com/spwhitton/org-d20 找到它

我去年尝试过 d20-mode,但发现工作流程不方便,主要是因为它太互动了。我发现创建一个包含所有人的先攻顺序的快速列表,然后将其转换为表格更容易。但这只是我的意见,我鼓励其他人自己尝试一下!

回复 作者:dogsleg

甚至在我阅读署名之前,我就知道是谁写的这篇文章。

发送给我的 DM!

我一直在寻找学习和使用 Emacs 的理由。就是这个了!

为什么 org-mode 只适用于 GNU Emacs。我想在 Xemacs 中使用 org-made。可能吗?

太棒了。谢谢你,伙计。我今晚将在我的游戏中尝试一下。

赞!我喜欢这个想法。有什么是 Emacs 做不到的吗!?

顺便说一句,我创建先攻顺序表,记录人们的先攻掷骰结果,然后使用 C-c ^ N 按先攻顺序排序。然后,如果有平局,我可以手动清理它。

是的,这很有趣,但可能不是理想的 RPG 解决方案。我更喜欢 RPtools (MapTool),正如你在文章中所说的那样。

它并不适合所有人,而且它是一个我只在特定情况下使用的系统。它准确地反映了 Emacs 是一种具有多功能和技巧属性的工具(看,一个龙与地下城 5e 的引用!)

回复 作者:KelBeague (未验证)

这位演员,我们在《真爱如血》系列中看到过他,并在《正义联盟》中短暂出现,上周下午在匹兹堡的一家儿童医院度过,教一群年轻的患者角色扮演的基础知识。

这位演员是否使用 Emacs 来教他们? 感谢您的评论,感谢您的阅读。

回复 作者:jakkidi

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.