mcpField
R
roguelike

roguelike

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

关于 roguelike

面向回合制、网格地图 Roguelike 与 Roguelite 的组合式设计技能,供构建地牢游戏的开发者规划单局循环及程序化地牢、视野、永久死亡和战利品等系统。

主要功能

  1. 01回合制单局循环设计
  2. 02程序化地牢生成要点
  3. 03视野与已探索区域记忆
  4. 04永久死亡与局外成长
  5. 05战斗、战利品与资源系统

适用场景

  1. 01规划回合制地牢游戏
  2. 02设计视野与战争迷雾
  3. 03平衡永久死亡与解锁内容

安装

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

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

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

附带文件references/generation-fov-loot.md

详细介绍

Roguelike

Roguelike 的设计指南——涵盖回合引擎、程序化地牢、视野、永久死亡和单局经济。这是一项组合式技能:它将程序化生成、瓦片地图、存档处理和 AI 整合为一款以单局为核心的游戏。它不会重新讲解噪声/随机数生成器或瓦片地图 API,而是定义让一场单局引人入胜的循环和系统。

适用场景

  • 构建一款回合制、网格制地牢探索游戏,其中每次死亡都会结束本局并重新生成世界——也就是 roguelike 或带有元进度的 “roguelite”。
  • 设计程序化地牢、视野/战争迷雾、永久死亡带来的风险或战利品表时使用。

**不适用场景:**带有 roguelike 外观的实时动作游戏 → 构建动作类型游戏(platformer/fps-shooter),再叠加 procedural-gen。没有永久死亡机制的深度属性/任务/对话 → rpg。需要开放世界生存要素/制作系统 → survival-crafting。

Roguelike 的设计支柱

社区参考标准是柏林诠释(RogueBasin,IRDC 2008):一系列衡量 “roguelike 特质” 的因素,而非核对清单。价值最高的因素是设计目标:随机环境生成、永久死亡、回合制、网格制、非模态(所有行动都处于同一模式)、复杂性(物品与怪物之间有多种互动)、资源管理、砍杀以及探索与发现。着重运用这些特征,才能营造 roguelike 的感觉;也可以有意识地选择保留哪些特征。“Roguelite” 通常会通过元进度来弱化永久死亡机制。

核心循环

**采取一个回合(移动/战斗/使用)→ 世界结算其回合 → 查看新状态 → 下潜/搜刮/生存 → 死亡并在全新的地牢中重新开始。**可重玩性来自每局都在变化的世界,而不是玩家记住固定的地图布局。

必备系统

  1. 回合调度器 — 采用能量/先攻系统,让速度快的行动者能更频繁地行动(模式 2)。
  2. 网格地图与移动 — 瓦片坐标;碰撞攻击;查询阻挡/可行走状态。
  3. 程序化地牢生成器 — 房间与走廊,或 BSP/细胞自动机;确保连通性。
  4. 视野与已探索区域记忆 — 区分当前可见区域与之前见过的区域(模式 3/参考资料)。
  5. 战斗与实体 — 生命值、攻击/防御、状态;怪物遵循与玩家相同的规则。
  6. 战利品与掉落表 — 按权重和地牢深度调整物品/怪物生成(参考资料)。
  7. 永久死亡与(可选的)元进度 — 清空本局进度;只保留解锁内容/分数。
  8. 消息日志与清晰的 UI — 玩家根据文本/状态作出判断;明确显示数值和事件。

设计参数

参数效果备注
地牢大小/房间数量单局时长、密度随深度调整。
连通性保证避免房间无法到达生成后务必验证可达性。
怪物密度/深度曲线难度提升根据深度加权表生成。
战利品稀有度权重强度差异越稀有,效果差异越大;鉴定可增加探索乐趣。
视野半径/光照紧张感、信息量半径越小,越令人不安,探索也越慢。
资源稀缺程度(食物/生命值/弹药)推动玩家下潜经典 Roguelike 的核心紧张感来源。
永久死亡与元进度单局风险与玩家留存Roguelite 会弱化这种阻碍。
鉴定/未知物品探索价值未鉴定物品能鼓励玩家尝试。
可设定种子的随机数生成器每日挑战、调试始终允许使用固定种子(参见 procedural-gen)。

模式

1. 确定性、可设定种子的单局随机数生成器
# Pseudocode. One seeded RNG per run makes dungeons reproducible (daily runs, bug repro).
run_seed = chosen_seed or random_seed()
rng = Rng(run_seed)                 # use your engine's seedable RNG, not global random
dungeon = generate_dungeon(rng, depth)   # same seed + depth => same dungeon
# Persist run_seed in the save so a crash can resume the same world (see save-systems).
2. 基于能量的回合调度器(速度各不相同)
# Pseudocode. Each actor gains energy each tick and acts when it has enough.
# Faster actors gain more per tick, so they act more often — no fixed "player then enemies".
TURN_COST = 100
def next_actor(actors):
    while True:
        for a in actors:                 # stable order avoids ties favoring one side
            a.energy += a.speed          # e.g. speed 100 = normal, 150 = hasted
            if a.energy >= TURN_COST:
                a.energy -= TURN_COST
                return a                 # this actor takes exactly one action now
3. 视野与已探索区域记忆
# Pseudocode. Recompute visibility from the player each time they move.
visible = compute_fov(map, player.pos, radius=8)   # symmetric shadowcasting (see refs)
for cell in visible:
    explored.add(cell)                  # remember it forever (dim "fog of war")
# Render: visible -> lit; explored-but-not-visible -> dim; never-seen -> hidden.

使用经过验证的视野算法(递归阴影投射或对称阴影投射)。不要对每个格子都使用简单的射线投射——这会导致视野不对称、时隐时现。参见参考资料。

常见问题/失败模式

  • 地下城不连通 → 玩家无法到达某些房间。始终执行连通性/洪泛填充检查,并开凿走廊,直到所有可行走单元都可到达。
  • 朴素视野 → 视野闪烁或不对称(你能看到对方,对方却看不到你)。使用阴影投射法;测试对称性。
  • 假装采用回合制的实时循环 → 输入竞争和重复移动。一次只处理一个离散回合;将输入排队。
  • 难度一成不变 → 缺乏深入探索的压力。根据深度调整怪物和战利品,并让资源保持稀缺。
  • 永久死亡时连元进度解锁也一并清除 → 令人沮丧。保存时将本次冒险状态(清除)与玩家档案状态(解锁内容、分数)分开(参见 save-systems)。
  • 在“永久死亡”游戏中反复读档 → 如果想实现真正的永久死亡,请在加载时删除或作废本次冒险的存档;只保留玩家档案。
  • 状态难以辨认 → 玩家无法制定计划。显示 HP、回合结果和消息日志。

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

  • 生成: procedural-gen(噪声、带种子的 RNG、地下城/房间算法)——可重玩性的引擎。
  • 地图渲染: 使用 godot-tilemap/unity-tilemap-2d 绘制网格;使用 level-design 设计固定场景房间/藏宝室。
  • 敌人: 使用 game-ai 处理怪物的决策(在网格上通常很简单:追击/逃跑/巡逻)。
  • 持久化: 使用 save-systems 实现本次冒险的存续与续玩、玩家档案/元进度,以及真正的永久死亡清除。
  • 脚本/数据: 使用 godot-resources/unity-scriptableobjects,以数据形式定义物品、怪物和掉落表。
  • UI: 使用 godot-ui-control 实现消息日志、物品栏和 HUD。
  • 手感: 使用 game-feel 增强击中/死亡反馈——通过屏幕震动和命中停顿,让回合制网格上的冲击感更真实。

参考资料

  • 关于地下城生成算法(房间与走廊、BSP、细胞自动机、连通性)、视野(阴影投射法)和加权战利品/生成表,请阅读 references/generation-fov-loot.md。

评论

支持 Markdown