refactor: adventure format
This commit is contained in:
parent
02aad0415c
commit
292099819c
126
content/QWEN.md
126
content/QWEN.md
|
|
@ -1,97 +1,43 @@
|
||||||
# 要求
|
# 要求
|
||||||
|
|
||||||
编写ttrpg冒险。冒险将要使用./system.md描述的规则运行。
|
编写ttrpg冒险。冒险将要使用./docs/system.md描述的规则运行。
|
||||||
若为yarn spinner编写,参考./yarn-spinner.md的内容。
|
若为yarn spinner编写,参考./docs/yarn-spinner.md的内容。
|
||||||
|
|
||||||
每个冒险应该包含以下要素:
|
每个冒险应该详细设定以下要素:
|
||||||
|
|
||||||
- 简报:地理、环境、当前态势。
|
- 背景:地点、环境、势力设定。(./docs/setting.md)
|
||||||
- 后果:如果玩家什么都不做,将会默认发生的后果。
|
- 主题:玩家的身份以及任务目标。(./docs/theme.md)
|
||||||
- 压力:一些随机遭遇,将在冒险中随机发生。
|
- 秘密:任务中可能揭露的秘密。(./docs/mystery.md)
|
||||||
- 主线:一些逻辑上连续的遭遇。
|
- 地点:玩家可以访问的地点。(./docs/location.md)
|
||||||
- 支线:一些独立的支线遭遇,完成可以获得资源帮助。
|
- 路径:在地点间移动期间可能遇到的事件。(./docs/route.md)
|
||||||
|
|
||||||
## 简报
|
|
||||||
|
|
||||||
应当确立以下内容:
|
|
||||||
|
|
||||||
- 环境:地理特征,社会风貌,政治态势。
|
|
||||||
- 当前态势:冒险要解决的事件当前的状态。
|
|
||||||
- 势力:1-2种与事件相关的势力。
|
|
||||||
- 玩家角色:玩家的身份,以及初始任务目标。
|
|
||||||
|
|
||||||
设计势力时,应当确立以下内容:
|
|
||||||
|
|
||||||
- 1-2 名代表性NPC。
|
|
||||||
- 势力当前的计划以及障碍。
|
|
||||||
- 势力掌握的资源。
|
|
||||||
|
|
||||||
## 后果
|
|
||||||
|
|
||||||
随着时间的推移,如果玩家未能解决事件,则不好的事情会逐渐发生。
|
|
||||||
|
|
||||||
后果分三个阶段,每个阶段会引入新的规则,为玩家行动制造额外障碍。
|
|
||||||
|
|
||||||
在第三个阶段发生后,玩家行动将会遭受极大挑战,很可能很快失败。
|
|
||||||
|
|
||||||
## 压力
|
|
||||||
|
|
||||||
设计10条随机遭遇,用于玩家冒险中遇到的意外。
|
|
||||||
|
|
||||||
大部分应该为玩家制造危险。随着后果的发生,随机遭遇的危险程度也会随之提升。
|
|
||||||
|
|
||||||
## 主线
|
|
||||||
|
|
||||||
设计6条逻辑连续的遭遇,完成一条遭遇后会揭露下一条遭遇。
|
|
||||||
|
|
||||||
在完成最后一条遭遇后,玩家可以解决事件。
|
|
||||||
|
|
||||||
## 支线
|
|
||||||
|
|
||||||
设计6条逻辑独立的遭遇,每个遭遇会给玩家提供一些可能的资源。
|
|
||||||
|
|
||||||
每个遭遇位于一个独立地点,需要玩家投入时间探索或完成挑战。
|
|
||||||
|
|
||||||
## 地图设计
|
|
||||||
|
|
||||||
描述冒险发生的地理布局及各遭遇点之间的逻辑连接。
|
|
||||||
|
|
||||||
- 区域布局:描述主要地标及其空间关系。
|
|
||||||
- 路径与环境:描述连接地点的路径特征及旅行中的风险。
|
|
||||||
- 地点标注:明确主线遭遇(M1-M6)和支线遭遇(S1-S6)所在的地理位置。
|
|
||||||
|
|
||||||
设计多种路径连接地点,以允许玩家在探索中有选择的空间。
|
|
||||||
|
|
||||||
为路径设计多种特性,如隐藏、上锁、单向、经过之后坍塌等,以允许探索时有多样的体验。
|
|
||||||
|
|
||||||
使用`mermaid`语法绘制地图,并插入冒险文件中。
|
|
||||||
|
|
||||||
## 遭遇的设计
|
|
||||||
|
|
||||||
设计一项遭遇时,如果有NPC出现,则为出现的NPC设计动机、当前计划、当前遇到的障碍,以便玩家交互。
|
|
||||||
|
|
||||||
如果没有NPC,则设计2-4种可以交互的环境元素,尽量覆盖不同的玩家属性以及不同的交互性质。
|
|
||||||
|
|
||||||
每条遭遇都需要明确描述发生的场景地点。尽量设计不同风格的地点。
|
|
||||||
|
|
||||||
## 文本格式
|
|
||||||
|
|
||||||
输出时,使用markdown格式。
|
|
||||||
|
|
||||||
对于遭遇表而言,放在`csv`文件里:
|
|
||||||
|
|
||||||
```csv
|
|
||||||
label,body
|
|
||||||
1,遭遇内容的markdown文本
|
|
||||||
2,遭遇内容的markdown文本
|
|
||||||
...
|
|
||||||
```
|
|
||||||
|
|
||||||
在冒险本体的markdown里,使用以下语法引用遭遇表:
|
|
||||||
`:md-table[./encounters.csv]`
|
|
||||||
|
|
||||||
主线、支线、压力等每个类型,需要有独特的csv文件。
|
|
||||||
|
|
||||||
## 文件结构
|
## 文件结构
|
||||||
|
|
||||||
为每个冒险创建一个新文件夹。冒险本体以`adventure.md`保存。
|
为每个`冒险`创建一个文件夹,包含以下内容:
|
||||||
|
- `adventure.md`:冒险本体,引用其他文件。
|
||||||
|
- `locations.csv`:描述每个地点。
|
||||||
|
- `cast.csv`:描述冒险中出现的npc,势力,怪物。
|
||||||
|
- `curio.csv`:描述冒险中可能遇到的特殊物品或资源。
|
||||||
|
- `route.csv`:描述冒险中在特定路径上可能遭遇的事件。
|
||||||
|
|
||||||
|
csv文件使用以下格式:
|
||||||
|
|
||||||
|
```csv
|
||||||
|
label,body
|
||||||
|
1,markdown文本
|
||||||
|
2,markdown文本
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
npc名称等标题内容,也以markdown语法写在body里,而不是label里。
|
||||||
|
|
||||||
|
## 冒险本体
|
||||||
|
|
||||||
|
编写简报段落,确立以下内容:
|
||||||
|
|
||||||
|
- 环境:地理特征,社会风貌,政治态势。
|
||||||
|
- 当前态势:冒险要解决的事件当前的状态。
|
||||||
|
- 玩家角色:玩家的身份,以及初始任务目标。
|
||||||
|
|
||||||
|
使用以下语法引用csv:
|
||||||
|
`:md-table[./locations.csv]{roll}`
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
# 地点设计
|
||||||
|
|
||||||
|
1. 为主题中的每个遭遇设计一个地点。此外,再添加约3-5个地点,用于放置秘密线索。
|
||||||
|
|
||||||
|
2. 将地点连接起来,形成地图。确保每个地点都处于某种环状路径中,允许玩家总是前进不用回头。确保地点中有一些岔路,允许玩家在选择前进方向时有所选择。
|
||||||
|
|
||||||
|
3. 为地点添加一些危险元素,如陷阱、怪物袭击、悬崖等等。如果地点有岔路,为不同的岔路设计差异化的挑战元素。
|
||||||
|
|
||||||
|
4. 设计两处上锁的路径。将锁对应的钥匙安排到其他地点,以允许玩家获得钥匙并解锁路径。
|
||||||
|
|
||||||
|
5. 设计一处隐藏路径。玩家必须通过探索才能发现此路径。隐藏路径应该能允许玩家绕开危险,或者获得一些帮助物资。
|
||||||
|
|
||||||
|
6. 为地点添加一些辅助物资。辅助物资应当能帮助玩家恢复损伤,或者更好执行某些检定。
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
# 秘密
|
||||||
|
|
||||||
|
玩家在冒险中,应当面对一些神秘现象或阴谋。
|
||||||
|
|
||||||
|
玩家可以通过调查来得知秘密的真相,但是真相与完成游戏目标没有直接关系。
|
||||||
|
|
||||||
|
得知真相会花费玩家额外的精力,但能够帮助玩家在最终决战前做好准备。
|
||||||
|
|
||||||
|
## 线索
|
||||||
|
|
||||||
|
将秘密拆分为5-6条线索。玩家可以在冒险中获得其中一些线索,并最终拼凑出秘密的真相。
|
||||||
|
|
||||||
|
只靠单独的线索无法获得秘密的完整真相。必须依赖至少3-4条线索的组合才行。
|
||||||
|
|
||||||
|
设计地点时,将秘密的线索分散安排到多个地点中。
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
# 路径设计
|
||||||
|
|
||||||
|
根据冒险的背景设定,将一部分较为危险的路径划分为危险路径,并设计共6条随机遭遇。
|
||||||
|
|
||||||
|
随机遭遇不与特定的地点或路径绑定,而在路边随机发生。
|
||||||
|
|
||||||
|
随机遭遇通常为玩家带来风险,若不能完成豁免则会造成属性损伤。
|
||||||
|
|
||||||
|
设计风险时,尽可能覆盖多样的属性类型。
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
# 背景
|
||||||
|
|
||||||
|
为冒险设定背景。应包含以下内容:
|
||||||
|
|
||||||
|
- 环境风貌:当地社会文化形态,以及环境生态。
|
||||||
|
- 风格特色:冒险发生的地点(通常是一座大型建筑),该地点当前的状态与特点。
|
||||||
|
- 上下文:在冒险发生前,这里发生过什么事情。
|
||||||
|
|
||||||
|
## 环境风貌
|
||||||
|
- 人类活动:人迹罕至/偏僻的村落/城市郊区/城堡/富饶的农村/大型城市街区等等。
|
||||||
|
- 环境生态:寒冷/炎热/河边/海边/山顶/林间/草原,甚至水下。
|
||||||
|
|
||||||
|
## 风格特色
|
||||||
|
- 地点:家族庄园/大图书馆/集市/工坊/研究所/学院/军营/流民营地/藏宝库/工厂/墓穴/动物巢穴等等。
|
||||||
|
- 构造:木制/石制/砂石/活生生的植物/冰封/玻璃/血肉/泥土/金属/大理石/菌菇/丝网等等。
|
||||||
|
|
||||||
|
## 上下文
|
||||||
|
- 灾难背景:古战场/研究事故/诅咒/瘟疫/遭到袭击/闹鬼/石化/被怪物占据/被封印/遭天谴等等
|
||||||
|
|
||||||
|
## 世界观
|
||||||
|
|
||||||
|
冒险应当讲诉`中世纪剑与魔法`风格的故事。角色们通常具有一些超出常人的能力,较少受社会制度所约束,但也无法左右社会现状。
|
||||||
|
|
||||||
|
社会由`骑士`、`贵族`、`平民`、`先知`四种人群构成。
|
||||||
|
- `骑士`精通武艺,受`先知`授予各种特殊能力,四处游历,保卫王国。
|
||||||
|
- `贵族`掌握权力,确保王国的外交与内政秩序。
|
||||||
|
- `平民`从事生产,为王国贡献粮食、手工制品与人力。
|
||||||
|
- `先知`裁定纠纷,为王国的命运提供预言与计划。
|
||||||
|
|
||||||
|
此外,社会中还有各式各样的私人势力,在明里暗处中活跃,无法划分到上述角色中。
|
||||||
|
|
||||||
|
除了人类以外,王国中可能出现各种各样的奇异生物与超自然现象。它们会影响角色们的冒险,但是很难影响朝政与社会。
|
||||||
|
|
||||||
|
从欧洲民间传说以及童话故事中获取灵感。
|
||||||
|
|
||||||
|
## 势力设计
|
||||||
|
|
||||||
|
在冒险中,可将部分NPC设计为势力领袖,手下带领一群相互类似的NPC。
|
||||||
|
|
||||||
|
势力是势力领袖的衍生。通过为势力创建势力计划、掌握的资源、势力成员的典型特点,来塑造势力的特色。
|
||||||
|
|
||||||
|
- 势力目标:敛财/复仇/征服/保护/研究/创造/自保/探索/寻宝
|
||||||
|
|
@ -29,39 +29,17 @@
|
||||||
|
|
||||||
耐受度随玩家角色成长而提升,初始范围为1-6。
|
耐受度随玩家角色成长而提升,初始范围为1-6。
|
||||||
|
|
||||||
在玩家l做好准备时,可消耗耐受用于抵抗属性损伤,每点耐受抵抗1点损伤。
|
在玩家做好准备时,可消耗耐受用于抵抗属性损伤,每点耐受抵抗1点损伤。
|
||||||
|
|
||||||
### 时间
|
### 疲劳与恢复
|
||||||
|
|
||||||
每天有24小时,玩家的每次基本行动花费1小时。
|
结算疲劳时,掷一个`D6`属性骰,每一面代表一种属性。掷出的属性受到1点损伤。
|
||||||
|
|
||||||
白天6点到晚上0点属于行动时间:
|
结算恢复时类似,掷出的属性恢复1点损伤。如果掷出的属性没有损伤或受到严重创伤,则恢复无效。
|
||||||
|
|
||||||
- 在条件允许的情况下可以进行休息,每小时随机恢复1点属性损伤。
|
### 检定与进度
|
||||||
|
|
||||||
晚上0点到凌晨6点属于睡眠时间:
|
玩家可以通过检定来尝试交互。每条交互需要三种属性:
|
||||||
|
|
||||||
- 若睡觉休息,每小时随机恢复1点属性损伤。
|
|
||||||
- 若条件不允许,则即使休息也不能回复损伤。
|
|
||||||
- 若不休息,则每小时随机遭受1点属性损伤。
|
|
||||||
|
|
||||||
### 属性骰
|
|
||||||
|
|
||||||
随机回复/扣减属性时,使用D6属性骰来决定随机回复/扣减的属性。
|
|
||||||
|
|
||||||
若掷恢复时,掷出的属性已满,则本次随机恢复没有效果。
|
|
||||||
|
|
||||||
### 基本行动
|
|
||||||
|
|
||||||
除休息外,玩家可进行以下行动,每次花费1小时:
|
|
||||||
|
|
||||||
- 旅行:移动到另一地点。若旅途超过1小时,可能在半路遭遇随机遭遇。
|
|
||||||
- 调查:检查当前地点,揭露更多线索或交互对象。
|
|
||||||
- 交互:根据交互性质而定,可能有不同的检定、难度、机会。
|
|
||||||
|
|
||||||
### 交互行动
|
|
||||||
|
|
||||||
每条交互需要三种属性:
|
|
||||||
|
|
||||||
- 主属性:玩家需要使用什么属性来进行此交互。
|
- 主属性:玩家需要使用什么属性来进行此交互。
|
||||||
- 难度:玩家需要积累多少成功进度来成功完成此交互。
|
- 难度:玩家需要积累多少成功进度来成功完成此交互。
|
||||||
|
|
@ -69,7 +47,7 @@
|
||||||
|
|
||||||
如:`力量3/1`(力量,难度3,机会1)表示玩家使用力量属性检定,3成功进度后交互成功完成,1失败进度后交互失败且不可再尝试。
|
如:`力量3/1`(力量,难度3,机会1)表示玩家使用力量属性检定,3成功进度后交互成功完成,1失败进度后交互失败且不可再尝试。
|
||||||
|
|
||||||
每次进行交互时,掷D20检定骰,以及D4进度骰。
|
每次进行检定时,掷D20检定骰,以及D4进度骰。
|
||||||
若检定骰小于等于玩家当前主属性,则获得进度骰数量成功进度,否则获得对应数量失败进度。
|
若检定骰小于等于玩家当前主属性,则获得进度骰数量成功进度,否则获得对应数量失败进度。
|
||||||
|
|
||||||
根据交互的挑战性质设计效果:
|
根据交互的挑战性质设计效果:
|
||||||
|
|
@ -81,7 +59,7 @@
|
||||||
|
|
||||||
检定的难度/机会不会告知玩家。若没有触发成功也没有触发失败,则检定后仅告知当前成功/失败进度。
|
检定的难度/机会不会告知玩家。若没有触发成功也没有触发失败,则检定后仅告知当前成功/失败进度。
|
||||||
|
|
||||||
### 状态
|
### 后果
|
||||||
|
|
||||||
玩家状态
|
玩家状态
|
||||||
|
|
||||||
|
|
@ -89,8 +67,8 @@
|
||||||
- 严重创伤:属性类型
|
- 严重创伤:属性类型
|
||||||
- 标签:类型+持续事件,用于疾病、祝福、中毒等
|
- 标签:类型+持续事件,用于疾病、祝福、中毒等
|
||||||
- 资源:类型+数量,用于物品、金钱等
|
- 资源:类型+数量,用于物品、金钱等
|
||||||
- 成就:类型+等级,用于声望、技能等
|
|
||||||
|
|
||||||
世界状态
|
世界状态
|
||||||
|
|
||||||
- 进度:类型+id+成功进度+失败进度,用于势力计划、事件进展等。
|
- 势力计划进度:id+成功进度
|
||||||
|
- 事件发展进度:id+阶段
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
# 主题
|
||||||
|
|
||||||
|
为冒险设计主题。主题描述了冒险故事的主要目标与困难。
|
||||||
|
|
||||||
|
- 保护商队/调查神秘事件/杀死怪物/寻找宝藏/窃取重要物品/抵达地点/逃离地点
|
||||||
|
|
||||||
|
从主题出发,为冒险设计以下遭遇:
|
||||||
|
|
||||||
|
- 1条最终决战
|
||||||
|
- 1-2条预兆
|
||||||
|
- 1-2条铺垫
|
||||||
|
- 1-2条转折
|
||||||
|
|
||||||
|
每个遭遇都应该发生在一个独立的地点。
|
||||||
|
|
||||||
|
## 最终决战
|
||||||
|
|
||||||
|
在最终决战中,玩家必须面对主要困难,若是成功则可以完成主要目标。
|
||||||
|
|
||||||
|
## 预兆
|
||||||
|
|
||||||
|
在预兆遭遇中,玩家会遭遇一些看似与主要目标无关的场景或事件。
|
||||||
|
|
||||||
|
进行调查会揭露关于冒险秘密的信息,但玩家的行为不会直接影响主要目标。
|
||||||
|
|
||||||
|
## 铺垫
|
||||||
|
|
||||||
|
在铺垫遭遇中,将冒险的主要困难,以及相关的NPC、物品、现象介绍给玩家。
|
||||||
|
|
||||||
|
可能会立即向玩家施加挑战。赢得铺垫遭遇将提升玩家完成主要目标的机会。
|
||||||
|
|
||||||
|
## 转折
|
||||||
|
|
||||||
|
在转折遭遇中,玩家与重要NPC、物品、现象的关系将发生改变。
|
||||||
|
|
||||||
|
NPC立场可能发生逆转、NPC能力发生变化,或者冒险秘密开始揭露。
|
||||||
|
|
@ -6,7 +6,7 @@ Yarn Spinner是一种文字冒险文本格式,可用于描述ttrpg冒险。
|
||||||
|
|
||||||
## 基本结构
|
## 基本结构
|
||||||
|
|
||||||
每个`主线`和`支线`遭遇使用一个`节点`来描述。然后,为每个遭遇里的每个交互创建一个`节点`。
|
每个`地点`遭遇使用一个`节点`来描述。然后,为每个遭遇里的每个`交互`创建一个`节点`。
|
||||||
|
|
||||||
```yarn-spinner
|
```yarn-spinner
|
||||||
title: 节点名称
|
title: 节点名称
|
||||||
|
|
@ -40,7 +40,7 @@ when: $villager_encountered == false
|
||||||
`<<detour 节点名称>>`:跳转节点,并在节点执行结束后返回
|
`<<detour 节点名称>>`:跳转节点,并在节点执行结束后返回
|
||||||
`<<return>>`:返回`detour`跳转来源节点
|
`<<return>>`:返回`detour`跳转来源节点
|
||||||
|
|
||||||
玩家在主线/支线地点之间移动时,根据路径内容,插入`<<detour 随机遭遇>>`来触发随机遭遇。
|
玩家在地点之间移动时,根据路径内容,插入`<<detour 随机遭遇>>`来触发随机遭遇。
|
||||||
|
|
||||||
随机遭遇可以使用`<<return>>`来返回主线。
|
随机遭遇可以使用`<<return>>`来返回主线。
|
||||||
|
|
||||||
|
|
@ -60,7 +60,7 @@ when: $villager_encountered == false
|
||||||
- ```<<if $result >= 3>>```:处理检定成功进度。
|
- ```<<if $result >= 3>>```:处理检定成功进度。
|
||||||
- ```<<if $result <= -2>>```:处理检定失败进度。
|
- ```<<if $result <= -2>>```:处理检定失败进度。
|
||||||
- ```<<if $result > 0>>```:如果既没有达成成功进度也没有达成失败进度,暗示玩家应该继续尝试。
|
- ```<<if $result > 0>>```:如果既没有达成成功进度也没有达成失败进度,暗示玩家应该继续尝试。
|
||||||
- 检定后总是在文本中描述玩家当前的进度(但不要描述难度和机会)
|
- 检定后总是在文本中描述玩家当前的进度(但不要描述难度和机会)。使用`{$result}`来显示进度。
|
||||||
|
|
||||||
直接使用变量来记录玩家物品。没有背包限制。
|
直接使用变量来记录玩家物品。没有背包限制。
|
||||||
- ```<<set $item_light_armor to $item_light_armor + 1>>```:添加物品。
|
- ```<<set $item_light_armor to $item_light_armor + 1>>```:添加物品。
|
||||||
|
|
@ -70,10 +70,6 @@ when: $villager_encountered == false
|
||||||
|
|
||||||
## 文件分割
|
## 文件分割
|
||||||
|
|
||||||
可以把遭遇拆分为多个文件。每个文件不要超过300行。
|
按照遭遇拆分文件,每个遭遇都是一个文件。
|
||||||
|
|
||||||
只要使用匹配的遭遇title就可以跳转到其他文件内的遭遇。
|
只要使用匹配的遭遇title就可以跳转到其他文件内的遭遇。
|
||||||
|
|
||||||
每个交互机会应当有自己的节点。若检定既没有成功也没有失败,则应当允许玩家再次尝试或者返回遭遇。
|
|
||||||
|
|
||||||
使用变量来存储其他世界状态。
|
|
||||||
Loading…
Reference in New Issue