mcpField
R
rpg

rpg

github.com/gamedev-skills开发5.4k7.1k 次安装今天更新
代码仓库

关于 rpg

面向 RPG、JRPG 和动作 RPG 开发者的系统设计手册,将属性成长、物品、任务、对话与存档组织成相互关联的成长与选择循环,并指向实现各系统的相关技能。

主要功能

  1. 01设计属性、等级与经验曲线
  2. 02规划背包、装备与属性修正
  3. 03组织战斗、任务和对话系统
  4. 04整合存档、经济与成长门槛
  5. 05组合相关技能实现各项系统

适用场景

  1. 01设计升级曲线与伤害公式
  2. 02规划装备模型和背包系统
  3. 03构建任务状态机与奖励流程
  4. 04让对话选择影响后续任务或世界状态

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/gamedev-skills/awesome-gamedev-agent-skills --skill rpg

安装后在 Claude Code 中输入/rpg确认已加载。

附带文件references/stats-combat-quests.md

详细介绍

RPG

一份角色扮演游戏指南,涵盖属性与成长、物品栏/装备、任务、对话和战斗。这是一项组合式技能:它将数据驱动的内容、对话与存档结合起来。它不会重新讲解这些基础功能,而是定义让成长与选择变得有意义的系统,并指出实现各系统的技能。

适用场景

  • 构建 RPG/JRPG/动作 RPG:玩家拥有会成长的属性、物品栏、任务、对话和持久化进度时使用。
  • 设计升级曲线、伤害公式、物品栏/装备模型或任务状态机时使用。

**不适用场景:**没有持久化角色的永久死亡地下城挑战 → roguelike。纯对话/分支剧情 → visual-novel。开放世界需求/制作/基地建设 → survival-crafting。对话引擎本身请使用 dialogue-systems。

核心循环

探索 → 遭遇(战斗 / 交谈 / 解谜)→ 获得奖励(经验值、战利品、剧情)→ 成长(升级、强化装备、解锁内容)→ 挑战更难的内容。 核心幻想是变得更强,并塑造角色的个性;每个系统都应推动这个成长与选择的循环。

必备系统

  1. 属性 + 升级 — 基础属性、衍生战斗属性、经验值曲线、升级收益。
  2. 物品栏 + 装备 — 由数据定义的物品、堆叠、装备栏位、属性修正。
  3. 战斗 — 回合制或动作战斗;伤害公式、状态效果、胜负判定。
  4. 任务 — 目标、状态机(可接取→进行中→已完成→已交付)、奖励。
  5. 对话 — 分支台词、基于游戏状态的条件、会产生影响的选择。
  6. 存档/读档 — 持久化角色、物品栏、任务进度、世界标记,并支持版本管理。
  7. 经济 + 进度门槛 — 金币/商店;通过等级/任务/区域限制战力。
  8. UI — HUD、物品栏、任务日志、对话框、角色属性面板。

设计参数

参数影响备注
经验值曲线形状战力成长节奏前期快、后期慢(见参考资料)。
属性→衍生属性的缩放构筑多样性不应让单一属性占据主导。
伤害公式战术体验减法减伤与比例减伤(见参考资料)。
随机浮动 / 暴击结果波动±10% 浮动和约 1.5× 暴击是稳妥的默认值。
掉落率 / 经济奖励节奏避免战利品让商店变得毫无意义。
战力门槛难度限制等级/区域/任务锁。
可逆修正增益/装备的正确性叠加修正层;绝不修改基础属性。
选择的后果角色扮演分量任务/对话标记应能分支改变结果。

模式

1. 从基础属性计算衍生属性(重新计算,绝不将其作为事实存储)
# 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,
    }
# Equipping pushes a modifier; unequipping pops it. HP/attack recompute automatically.
2. 经验值曲线 + 升级
# 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
3. 由游戏事件驱动的任务目标更新
# 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

常见陷阱 / 失败模式

  • 为增益/装备修改基础属性 → 数值会漂移,并在存档/读档时损坏。保留修正层;通过添加/移除修正来调整(模式 1)。
  • 将衍生属性作为事实存储 → 属性变化后会不同步。应从基础属性重新计算。
  • 经验值/伤害数值失控 → 使用没有上限的指数曲线,或在数值极大时使用减法公式。应有意选择曲线和公式类型(见参考资料)。
  • 将内容写成代码 → 每件物品/每个任务都硬编码。应将物品、敌人和任务定义为数据(godot-resources / unity-scriptableobjects)。
  • 存档格式没有版本字段 → 更新后旧存档会失效。从第一天起就添加 version 和迁移路径(参见 save-systems)。
  • 选择没有后果 → 立即重新汇合的对话分支会显得空洞。设置标记,实际改变后续任务/世界状态。
  • 任务进度没有持久化 → 读档后会丢失任务中途的状态。保存任务状态,而不只是完成状态。

组合(使用这些技能构建)

  • 对话: 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/stats-combat-quests.md。

评论

支持 Markdown