rpg

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

RPG

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 →
roguelike
. Pure conversation/branching story →
visual-novel
. Open-world needs/crafting/base-building →
survival-crafting
. For the dialogue engine itself, use
dialogue-systems
.
  • 适用于开发RPG/JRPG/动作角色扮演游戏:玩家拥有可成长的属性背包任务对话以及持久化进度。
  • 适用于设计等级曲线、伤害计算公式、背包/装备模型或任务状态机。
不适用于以下场景: 无角色持久化的永久死亡地牢跑团 → 参考
roguelike
。纯对话/分支故事 → 参考
visual-novel
。开放世界需求/制作/基地建造 → 参考
survival-crafting
。若仅需对话引擎,使用
dialogue-systems

Core 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

必备系统

  1. Stats + leveling — base attributes, derived combat stats, XP curve, level-up gains.
  2. Inventory + equipment — data-defined items, stacking, slots, stat modifiers.
  3. Combat — turn-based or action; damage formula, status effects, win/loss.
  4. Quests — objectives, state machine (available→active→complete→turned-in), rewards.
  5. Dialogue — branching lines, conditions on game state, choices that matter.
  6. Save/load — persist character, inventory, quest progress, world flags, with versioning.
  7. Economy + progression gating — gold/shops; gate power behind level/quest/region.
  8. UI — HUD, inventory, quest log, dialogue box, character sheet.
  1. 属性 + 等级 — 基础属性、衍生战斗属性、经验值曲线、升级收益。
  2. 背包 + 装备 — 数据定义的物品、堆叠机制、装备栏位、属性加成。
  3. 战斗 — 回合制或动作制;伤害计算公式、状态效果、胜负判定。
  4. 任务 — 目标、状态机(可接取→进行中→完成→已交付)、奖励。
  5. 对话 — 分支台词、基于游戏状态的条件、有实际影响的选择。
  6. 存档/读档 — 持久化角色、背包、任务进度、世界标记,并支持版本控制。
  7. 经济系统 + 成长限制 — 金币/商店;通过等级/任务/区域限制角色强度。
  8. UI界面 — Heads-Up Display(HUD)、背包界面、任务日志、对话框、角色面板。

Design knobs

设计调节项

KnobEffectNotes
XP curve shapepacing of powerFast early, slow late (see refs).
Stat→derived scalingbuild diversityOne attribute shouldn't dominate.
Damage formulatactical feelSubtractive vs. ratio mitigation (refs).
Random variance / critswinginess±10% and ~1.5× crit are safe defaults.
Drop rates / economyreward cadenceAvoid trivializing shops with loot.
Power gatingdifficulty gatingLevel/region/quest locks.
Reversible modifiersbuff/gear correctnessLayer mods; never edit base stats.
Choice consequencerole-play weightQuest/dialogue flags should branch outcomes.
调节项效果说明
经验值曲线形态强度提升节奏前期快速升级,后期缓慢升级(参考参考文献)。
基础属性→衍生属性的缩放比例Build多样性避免单一属性过于强势。
伤害计算公式战术体验减法减免 vs 比例减免(参考参考文献)。
随机波动 / 暴击战斗随机性±10%波动和~1.5倍暴击是安全的默认值。
掉落率 / 经济系统奖励频率避免战利品让商店失去价值。
强度限制难度控制等级/区域/任务锁。
可逆转的属性加成增益/装备正确性采用分层加成;绝不修改基础属性。
选择的后果角色扮演权重任务/对话标记应能改变后续剧情/世界状态。

Patterns

设计模式

1. Derived stats from base attributes (recompute, never store as truth)

1. 基于基础属性计算衍生属性(实时计算,绝不存储为固定值)

python
undefined
python
undefined

Pseudocode. 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.

装备时添加加成;卸下时移除加成。生命值/攻击力会自动重新计算。

undefined
undefined

2. XP curve + level-up

2. 经验值曲线 + 升级逻辑

python
undefined
python
undefined

Pseudocode. 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
undefined
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 # 分配属性点/技能点 on_level_up(actor) # 回血、解锁内容、通知玩家
undefined

3. Quest objective update driven by game events

3. 由游戏事件驱动的任务目标更新

python
undefined
python
undefined

Pseudocode. 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
undefined
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" # 交付任务时给予经验/金币/物品
undefined

Pitfalls / 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
    version
    and a migration path from day one (see
    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:
    dialogue-systems
    (Yarn Spinner / Ink) — branching lines, conditions, variables.
  • Persistence:
    save-systems
    — character, inventory, quest flags, world state, versioning.
  • Content data:
    godot-resources
    /
    unity-scriptableobjects
    — items, enemies, quests, skills as assets.
  • Combat AI:
    game-ai
    for enemy behavior; for turn order reuse the scheduler idea in
    roguelike
    .
  • UI:
    game-ui-ux
    for HUD/menu layout, resolution scaling, and controller/keyboard nav;
    godot-ui-control
    for the concrete inventory, quest log, character sheet, and dialogue box.
  • World:
    level-design
    plus your engine's tilemap/3D skill (
    godot-tilemap
    ,
    godot-3d-essentials
    ).
  • 对话系统:
    dialogue-systems
    (Yarn Spinner / Ink)—— 分支台词、条件判断、变量。
  • 持久化:
    save-systems
    — 角色、背包、任务标记、世界状态、版本控制。
  • 内容数据:
    godot-resources
    /
    unity-scriptableobjects
    — 将物品、敌人、任务、技能定义为资源。
  • 战斗AI:
    game-ai
    用于敌人行为;回合制顺序可复用
    roguelike
    中的调度器思路。
  • UI界面:
    game-ui-ux
    用于HUD/菜单布局、分辨率缩放、控制器/键盘导航;
    godot-ui-control
    用于实现具体的背包、任务日志、角色面板和对话框。
  • 世界设计:
    level-design
    结合引擎的 tilemap/3D 技能(
    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