emacs 剪切板

玩桌上型角色扮演游戏(RPG)有两种方法:您可以玩由游戏的发行者或独立作者撰写的冒险游戏,也可以玩自己制作的冒险游戏。 无论选择哪种方式,都可能需要做准备工作。 一个玩家(通常称为游戏管理员 )必须收集怪物或敌人的统计数据,战利品表和规则参考,而其他玩家则必须构建角色和分配(假装)装备。 没有什么可以消除复杂RPG中的准备工作,但是,如果您是Emacs用户,则可能会发现Emacs是一个很好的仪表板,可以使所有内容保持完整。

整理规则

不幸的是,许多RPG的数字版本都以PDF形式分发,因为这是RPG发行者发送给打印机的物理版本。 PDF擅长保留布局,但与理想的电子书格式相去甚远。 如果您播放以开放许可证发布的RPG,则通常可以获取其他格式的规则(例如HTML),从而获得更多控制和灵活性。 即使是世界上第一个也是最著名的RPG,Dungeons&Dragons也以数字格式免费下载提供其规则(许多网站已将其翻译为HTML和Markdown)。

我在Emacs中以Markdown的形式打开规则,以便可以随时使用可搜索的参考。 在PDF阅读器中以PDF格式打开规则时,您可以搜索嵌入的文本,而使用文本文件可带来许多好处。 首先,文本文件比PDF小得多,因此加载和搜索速度更快。 其次,文本文件易于编辑,因此,如果您找到一条规则来澄清您的问题,则可以将学习到的内容(或所组成的内容)直接添加到主文档中。 您还可以添加内部规则和其他资源。 我的目标是拥有一个包含我在运行的游戏中使用的所有规则和资源的文件,并且所有内容都可以快速按Ctrl + s (Emacs表示法中的Cs )。

管理计划

大多数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功能在其周围创建组织模式表。 使用Alt + Down箭头 (Emacs表示法中的M-down ),将每个PC或怪物移动到正确的主动顺序。

| emily       |    |   |   |
| flesh-golem | 93 | 0 | 0 |
| zombie      | 22 | 0 | 0 |
| brad        |    |   |   |
| zombie      | 22 | 0 | 0 |

在战斗中,我只需要记录怪物的伤害,因为玩家可以管理自己的生命值。 对于我在战斗中控制的敌人,第二列是它的HP(起始编号来自RPG系统的规则),第三列是当前回合中造成的伤害。

在组织模式下的表公式在表末尾的特殊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中的Cu Cc )或Ctrl + c Ctrl + c (即Cc Cc ):

| brad        |    |    |
| emily       |    |    |
| zombie      | 12 | 10 |
| zombie      | 15 |  7 |
| flesh-golem | 91 |  2 |
#+TBLFM: $2=vsum($2 - $3)

这个系统并不完美。 字符名称不能包含任何空格,因为组织表会按空格将单元格拆分。 忘记处理一条线并在回合结束时意外地重新处理它是相对容易的。 要将HP加回到某个生物的总数中,必须使用负数。 (我认为这是负面损害,表明健康。)然后,许多计算机主动追踪器也会遇到相同的问题,因此这并不是一个特别糟糕的解决方案。 对我来说,这是我发现的更快的方法之一(我很高兴承认MapTool是最好的方法,但是当我不使用数字共享地图时,我会使用Emacs工作流程)。

在DocView中查看PDF

DocView软件包可以提供帮助。 DocView是一种加载PDF数据并生成供您查看的PNG文件的模式(Emacs也可以查看JPEG文件)。 我发现大型PDF既麻烦又缓慢,但是,如果它是只有一两页的低分辨率PDF,则DocView是引用文档而无需离开Emacs的简便方法。

我仅将此模式用于地图,表格和列表。 对于无法进行搜索的任何内容,它都没有用,因为文本数据不可访问,但是对于只需要浏览一下的文档来说,这是一个非常有用的功能。

大多数Linux发行版附带的Ghostscript套件(或者肯定在您的存储库中提供)允许您处理PDF,通过将图像的分辨率从打印质量降低到屏幕质量来大大简化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查看器,但是对于某些资源而言,它是一种将所有信息保持在一个屏幕上的便捷方法。

创建冒险说唱表

出版的冒险作品通常散文丰富。 从理论上讲,您已经为准备好的冒险活动支付了很多钱,因此您显然希望购买的价值。 我确实很重视作者在冒险中所投入的知识和世界建设,但是在游戏过程中,我希望快速参考一下游戏机制正常工作所需的信息。 换句话说,我不需要讲述为什么当流氓触发陷阱时将陷阱放置在地牢中的故事。 我只需要知道陷阱的存在以及流氓为了生存而需要滚动的范围。

我还没有找到任何一种现代冒险格式可以为我提供这些信息,因此我最终创建了自己的“说唱表”:冒险的最小轮廓,仅包含每个位置所需的游戏机制信息。 再一次,组织模式是使我方便获取此信息的最佳方法。

在组织模式下,您可以使用星号作为项目符号点来创建列表。 对于子项目,请添加星号。 更好的是,按Cc t (按Ctrl + c ,然后按t键),将该项目标记为TODO项目。 当您的玩家清除游戏中的某个区域时,再次按Cc t标记位置“ 完成”

* 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,那么我可以在组织模式下将自己的补充内容写到我的说唱表中。 从功能上来说,这仍然是一个真实的来源,因为我的说唱表是我寻求信息的第一位,而在出版的文字上,我只保留了我忘记的细节。 有时候,我喜欢自己的添加物,足以将它们重新合并到我的Git大师中进行冒险,但是通常,我相信即兴创作,并让参与冒险的每个组动态地进行添加。

为什么Emacs是我最喜欢的RPG仪表板

我喜欢将Emacs用于RPG,因为它可以平视我的梦想。 “正确”的答案可能是一个不错的平铺窗口管理器 ,但是在实现之前,我对Emacs感到满意。 一切都与专为特定性和速度而设计的键盘快捷键有关,并且有足够的简单自定义功能,使我可以找到足够好的解决方案-有时甚至当玩家彼此争论下一步该怎么做时。

我已经尝试过处理多个桌面,几个PDF阅读器窗口和一个用于计划的电子表格。 虽然这是一种很好的体验,但没有什么比我的RPG仪表板更适合Emacs的流畅性了。


嘿! 你爱埃马克斯吗? 写一篇有关如何使用Emacs(GNU或其他方式)以包含在我们即将推出的Emacs系列中的文章!

翻译自: https://opensource.com/article/20/1/emacs-rpgs

emacs 剪切板

emacs 剪切板_将Emacs用作RPG仪表板的5种方法相关推荐

  1. tmux系统剪切板_实践中的tmux:与系统剪贴板集成

    tmux系统剪切板 by Alexey Samoshkin 通过阿列克谢·萨莫什金(Alexey Samoshkin) 在实践中使用tmux:与系统剪贴板集成 (tmux in practice: i ...

  2. golang 从windows 剪切板 (剪贴板)中读取bmp图片数据的方法

    golang访问剪切板的通常做法是使用"github.com/atotto/clipboard"库,但是这个库只支持读取文本信息,不支持读取图片信息. 这里实现了这个功能,代码地址 ...

  3. JavaScript 技术篇-chrome浏览器读取剪切板命令document.execCommand(‘paste‘)返回false原因及解决方法

    新版本 chrome 执行 document.execCommand('paste') 返回 false 因为读取剪切板涉及用户隐私安全,必须的用户允许的情况下可以进行访问,但是复制和剪切功能可以使用 ...

  4. python 分类变量编码_深度学习编码分类变量的3种方法——AIU人工智能学院

    :数据科学.人工智能从业者的在线大学. 数据科学(Python/R/Julia) 作者 | CDA数据分析师 像Keras中的机器学习和深度学习模型一样,要求所有输入和输出变量均为数字. 这意味着,如 ...

  5. keras添加正则化全连接_收藏!改善TensorFlow模型的4种方法你需要了解的关键正则化技术(2)...

    上一篇文章和同学们分享了两种方法,今天我们继续分享另外两种方法. Batch Normalization 批处理规范化背后的主要思想是,在我们的案例中,我们通过使用几种技术(sklearn.prepr ...

  6. 美团脱颖而出的经验_使数据科学项目脱颖而出的6种方法

    美团脱颖而出的经验 The global COVID-19 pandemic has left many with a lot of time on their hands to work on th ...

  7. hibernate性能_改善Hibernate应用程序性能的7种方法

    hibernate性能 Hibernate是将Java Web应用程序与SQL数据库集成的好工具,但是当应用程序的响应时间开始显着增加时,我们应该怎么做? 当我们怀疑应用程序是否会随着客户群的增长而扩 ...

  8. IOS 剪切板中的提示为英文改为中文 解决方法

    plist有个参数localization native development region改成china

  9. 用户体验改善案例_优化用户体验案例研究的五种方法

    用户体验改善案例 重点 (Top highlight) I've had the opportunity to give several portfolio reviews, and I want t ...

最新文章

  1. Spring 容器的启动过程
  2. appcon 图标打包
  3. 在Python Shell中输入print 'hello'总是报语法错误
  4. Doing Homework HDU - 1074
  5. Java 8:CompletableFuture的权威指南
  6. c语言 函数的参数传递示例_llround()函数以及C ++中的示例
  7. VMware虚拟化云平台-最新版本vSphere 6.7
  8. 离线安装 Android 4.0 SDK
  9. TCP/IP网络编程(3)
  10. 新疆卫生系统计算机考试题库,2014新疆维吾尔自治区计算机等级考试试题 二级C试题最新考试试题库...
  11. redis value多大会影响性能_Redis 最常见面试问题
  12. Git生成并添加SSH key[并添加到Github]
  13. 搞深度学习框架的那帮人,不是疯子,就是骗子
  14. php大马程序_php大马是什么
  15. 多个Excel文件合并到一个Excel文件的多个工作表(Sheet)里
  16. “潜力工作者”会不会成为明年24届秋招统计参数中的受害者?
  17. 股票中,什么是市盈率,有什么作用?
  18. JVM运行原理及优化
  19. linux蓝牙遥控,蓝牙遥控器连接流程分析
  20. java设计模式4,不要和陌生人说话

热门文章

  1. linux下使用dd命令制作ubuntu的u盘启动,Ubuntu使用dd命令制作U盘系统启动盘
  2. SpringBoot热部署环境搭建和原理分析
  3. 关于Zuul的几个问题
  4. Mybatis中的动态SQL记录
  5. (新聞) 友達光電 A+種子暑期實習計畫 埋下希望的光電種子 (日記)
  6. 关于RabbitMQ以及RabbitMQ和Spring的整合
  7. 需求迭代:迭代需求矩阵
  8. Mysql外键约束foreign key
  9. C语言实现控制台中光标随意移动
  10. spring-boot使用教程之三:如何使用sts中的热部署来降低代码开发量