rpg
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseRPG
RPG
A playbook for role-playing games — stats and progression, inventory/equipment, quests,
dialogue, and combat. This is a compositional skill: it ties data-driven content,
dialogue, and saving together. It does not re-teach those primitives; it defines the systems
that make growth and choice feel meaningful, and points to the skills that implement each.
这是一份角色扮演游戏的开发指南——涵盖属性与成长、背包/装备、任务、对话及战斗系统。这是一项组合式技能:它将数据驱动的内容、对话与存档系统整合在一起。它不会重复讲解这些基础模块,而是定义让成长与选择更具意义的系统,并指明实现各模块所需的技能。
When to use
使用场景
- Use when building an RPG/JRPG/action-RPG: the player has stats that grow, an inventory, quests, dialogue, and persistent progress.
- Use when designing a leveling curve, a damage formula, an inventory/equipment model, or a quest state machine.
When not to use: permadeath dungeon runs with no persistent character → .
Pure conversation/branching story → . Open-world needs/crafting/base-building →
. For the dialogue engine itself, use .
roguelikevisual-novelsurvival-craftingdialogue-systems- 适用于开发RPG/JRPG/动作角色扮演游戏:玩家拥有可成长的属性、背包、任务、对话以及持久化进度。
- 适用于设计等级曲线、伤害计算公式、背包/装备模型或任务状态机。
不适用于以下场景: 无角色持久化的永久死亡地牢跑团 → 参考。纯对话/分支故事 → 参考。开放世界需求/制作/基地建造 → 参考。若仅需对话引擎,使用。
roguelikevisual-novelsurvival-craftingdialogue-systemsCore loop
核心循环
Explore → encounter (fight / talk / solve) → earn rewards (XP, loot, story) → grow
(level up, gear up, unlock) → take on harder content. The fantasy is getting stronger and
shaping who your character is; every system should feed that growth-and-choice loop.
探索 → 遭遇(战斗/对话/解谜) → 获取奖励(经验值、战利品、剧情) → 成长(升级、换装、解锁内容) → 挑战更难的内容。 核心乐趣在于变得更强并塑造角色的独特性;每个系统都应服务于这个成长与选择的循环。
Must-have systems
必备系统
- Stats + leveling — base attributes, derived combat stats, XP curve, level-up gains.
- Inventory + equipment — data-defined items, stacking, slots, stat modifiers.
- Combat — turn-based or action; damage formula, status effects, win/loss.
- Quests — objectives, state machine (available→active→complete→turned-in), rewards.
- Dialogue — branching lines, conditions on game state, choices that matter.
- Save/load — persist character, inventory, quest progress, world flags, with versioning.
- Economy + progression gating — gold/shops; gate power behind level/quest/region.
- UI — HUD, inventory, quest log, dialogue box, character sheet.
- 属性 + 等级 — 基础属性、衍生战斗属性、经验值曲线、升级收益。
- 背包 + 装备 — 数据定义的物品、堆叠机制、装备栏位、属性加成。
- 战斗 — 回合制或动作制;伤害计算公式、状态效果、胜负判定。
- 任务 — 目标、状态机(可接取→进行中→完成→已交付)、奖励。
- 对话 — 分支台词、基于游戏状态的条件、有实际影响的选择。
- 存档/读档 — 持久化角色、背包、任务进度、世界标记,并支持版本控制。
- 经济系统 + 成长限制 — 金币/商店;通过等级/任务/区域限制角色强度。
- UI界面 — Heads-Up Display(HUD)、背包界面、任务日志、对话框、角色面板。
Design knobs
设计调节项
| Knob | Effect | Notes |
|---|---|---|
| XP curve shape | pacing of power | Fast early, slow late (see refs). |
| Stat→derived scaling | build diversity | One attribute shouldn't dominate. |
| Damage formula | tactical feel | Subtractive vs. ratio mitigation (refs). |
| Random variance / crit | swinginess | ±10% and ~1.5× crit are safe defaults. |
| Drop rates / economy | reward cadence | Avoid trivializing shops with loot. |
| Power gating | difficulty gating | Level/region/quest locks. |
| Reversible modifiers | buff/gear correctness | Layer mods; never edit base stats. |
| Choice consequence | role-play weight | Quest/dialogue flags should branch outcomes. |
| 调节项 | 效果 | 说明 |
|---|---|---|
| 经验值曲线形态 | 强度提升节奏 | 前期快速升级,后期缓慢升级(参考参考文献)。 |
| 基础属性→衍生属性的缩放比例 | Build多样性 | 避免单一属性过于强势。 |
| 伤害计算公式 | 战术体验 | 减法减免 vs 比例减免(参考参考文献)。 |
| 随机波动 / 暴击 | 战斗随机性 | ±10%波动和~1.5倍暴击是安全的默认值。 |
| 掉落率 / 经济系统 | 奖励频率 | 避免战利品让商店失去价值。 |
| 强度限制 | 难度控制 | 等级/区域/任务锁。 |
| 可逆转的属性加成 | 增益/装备正确性 | 采用分层加成;绝不修改基础属性。 |
| 选择的后果 | 角色扮演权重 | 任务/对话标记应能改变后续剧情/世界状态。 |
Patterns
设计模式
1. Derived stats from base attributes (recompute, never store as truth)
1. 基于基础属性计算衍生属性(实时计算,绝不存储为固定值)
python
undefinedpython
undefinedPseudocode. Base attributes are the only "truth"; combat stats are derived each time.
伪代码。基础属性是唯一的“真实值”;战斗属性每次都实时计算。
def derive(base, mods):
s = apply_modifiers(base, mods) # base + flat adds + percent, then clamp
return {
"max_hp": 20 + s["VIT"] * 8,
"attack": s["STR"] * 2,
"defense": s["VIT"] + s["AGI"] * 0.5,
}
def derive(base, mods):
s = apply_modifiers(base, mods) # 基础值 + 固定加成 + 百分比加成,然后限制范围
return {
"max_hp": 20 + s["VIT"] * 8,
"attack": s["STR"] * 2,
"defense": s["VIT"] + s["AGI"] * 0.5,
}
Equipping pushes a modifier; unequipping pops it. HP/attack recompute automatically.
装备时添加加成;卸下时移除加成。生命值/攻击力会自动重新计算。
undefinedundefined2. XP curve + level-up
2. 经验值曲线 + 升级逻辑
python
undefinedpython
undefinedPseudocode. Quadratic curve: fast early levels, long late ones.
伪代码。二次曲线:前期升级快,后期升级慢。
def xp_to_next(level, base=100): return base * level * level
def gain_xp(actor, amount):
actor.xp += amount
while actor.xp >= xp_to_next(actor.level):
actor.xp -= xp_to_next(actor.level)
actor.level += 1
actor.base["STR"] += 2; actor.base["VIT"] += 2 # grant gains / skill points
on_level_up(actor) # heal, unlock, notify
undefineddef xp_to_next(level, base=100): return base * level * level
def gain_xp(actor, amount):
actor.xp += amount
while actor.xp >= xp_to_next(actor.level):
actor.xp -= xp_to_next(actor.level)
actor.level += 1
actor.base["STR"] += 2; actor.base["VIT"] += 2 # 分配属性点/技能点
on_level_up(actor) # 回血、解锁内容、通知玩家
undefined3. Quest objective update driven by game events
3. 由游戏事件驱动的任务目标更新
python
undefinedpython
undefinedPseudocode. Game events advance matching objectives; completion grants rewards.
伪代码。游戏事件推进匹配的任务目标;完成后给予奖励。
def on_event(kind, data):
for q in active_quests:
for obj in q.objectives:
if obj.event == kind and matches(obj, data) and not obj.done:
obj.count += 1
if obj.count >= obj.needed: obj.done = True
if all(o.done for o in q.objectives):
q.state = "complete" # turn-in grants xp/gold/items
undefineddef on_event(kind, data):
for q in active_quests:
for obj in q.objectives:
if obj.event == kind and matches(obj, data) and not obj.done:
obj.count += 1
if obj.count >= obj.needed: obj.done = True
if all(o.done for o in q.objectives):
q.state = "complete" # 交付任务时给予经验/金币/物品
undefinedPitfalls / failure modes
常见陷阱 / 失败模式
- Editing base stats for buffs/gear → values drift and corrupt on save/reload. Keep a modifier layer; push/pop it (Pattern 1).
- Storing derived stats as truth → desync after a stat change. Recompute from base.
- Runaway XP/damage numbers → either an exponential curve with no cap or a subtractive formula at huge values. Pick a curve and a formula family deliberately (refs).
- Content as code → every item/quest hardcoded. Define items, enemies, and quests as
data (/
godot-resources).unity-scriptableobjects - Save format with no version field → old saves break on update. Add a and a migration path from day one (see
version).save-systems - Choices without consequences → dialogue branches that reconverge immediately feel hollow. Set flags that actually change later quests/world state.
- Quest progress not persisted → reloading loses mid-quest state. Save quest state, not just completion.
- 直接修改基础属性来实现增益/装备效果 → 存档/读档时数值会偏移或损坏。应使用加成分层机制;添加/移除加成(参考模式1)。
- 存储衍生属性为固定值 → 属性变更后会出现数据不一致。应从基础属性实时计算。
- 经验值/伤害数值失控 → 要么是无上限的指数曲线,要么是数值过大时的减法计算公式。需谨慎选择曲线类型和公式体系(参考参考文献)。
- 内容硬编码 → 每个物品/任务都写死在代码里。应将物品、敌人、任务定义为数据(/
godot-resources)。unity-scriptableobjects - 存档格式无版本号 → 旧存档在游戏更新后会失效。从第一天起就添加字段和迁移路径(参考
version)。save-systems - 选择无实际后果 → 对话分支立即合并会让玩家感到空洞。应设置能真正改变后续任务/世界状态的标记。
- 任务进度未持久化 → 读档后丢失任务中途状态。需保存任务状态,而不仅仅是完成状态。
Composition (build it from these skills)
组合方式(通过以下技能构建)
- Dialogue: (Yarn Spinner / Ink) — branching lines, conditions, variables.
dialogue-systems - Persistence: — character, inventory, quest flags, world state, versioning.
save-systems - Content data: /
godot-resources— items, enemies, quests, skills as assets.unity-scriptableobjects - Combat AI: for enemy behavior; for turn order reuse the scheduler idea in
game-ai.roguelike - UI: for HUD/menu layout, resolution scaling, and controller/keyboard nav;
game-ui-uxfor the concrete inventory, quest log, character sheet, and dialogue box.godot-ui-control - World: plus your engine's tilemap/3D skill (
level-design,godot-tilemap).godot-3d-essentials
- 对话系统: (Yarn Spinner / Ink)—— 分支台词、条件判断、变量。
dialogue-systems - 持久化: — 角色、背包、任务标记、世界状态、版本控制。
save-systems - 内容数据: /
godot-resources— 将物品、敌人、任务、技能定义为资源。unity-scriptableobjects - 战斗AI: 用于敌人行为;回合制顺序可复用
game-ai中的调度器思路。roguelike - UI界面: 用于HUD/菜单布局、分辨率缩放、控制器/键盘导航;
game-ui-ux用于实现具体的背包、任务日志、角色面板和对话框。godot-ui-control - 世界设计: 结合引擎的 tilemap/3D 技能(
level-design,godot-tilemap)。godot-3d-essentials
References
参考文献
- For stat/damage formulas, leveling curves, turn-vs-action combat timelines, inventory/equipment
data shapes, and the quest state model, read .
references/stats-combat-quests.md
- 如需了解属性/伤害计算公式、等级曲线、回合制vs动作制战斗时间线、背包/装备数据结构以及任务状态模型,请阅读。
references/stats-combat-quests.md