mcpField
T
tower-defense

tower-defense

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

关于 tower-defense

面向塔防游戏设计者的组合式技能,组织敌人寻路、波次生成、炮塔索敌与经济循环。重点在于平衡伤害、敌人生命值和收入,并控制波次节奏。

主要功能

  1. 01设计敌人路径与波次生成
  2. 02设定炮塔射程、伤害和攻击速度
  3. 03配置索敌优先级
  4. 04规划击杀奖励与升级经济
  5. 05平衡生命值、伤害和收入
  6. 06安排波次预告与节奏

适用场景

  1. 01设计沿路径推进的敌人波次
  2. 02调整炮塔索敌与布置策略
  3. 03平衡敌人强度和玩家收入
  4. 04规划下一波预告及难度起伏

安装

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

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

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

附带文件references/balancing.md

详细介绍

塔防

塔防游戏指南——敌人寻路、波次生成、炮塔索敌,以及将它们串联起来的经济系统。这是一项组合式技能:将寻路、AI 和 UI 组合成塔防循环。它不会重新讲解寻路,而是定义各个系统和决定塔防游戏紧张还是轻松的平衡杠杆(DPS、HP 与收入)。

适用场景

  • 构建这样的游戏时使用:玩家放置炮塔,炮塔会自动攻击沿路径前进的敌人波次;玩家花费赚取的货币来扩建或升级;如果太多敌人漏过防线,玩家就会失败。
  • 设计波次组成与节奏、炮塔索敌优先级或金币经济时使用。

不适用场景: 玩家直接操控射击角色 → fps-shooter。带有需求系统的自由建造基地 → survival-crafting。若要实现寻路算法本身,请使用 game-ai。

核心循环

准备(用当前金币放置或升级炮塔)→ 开始波次 → 敌人朝目标寻路,炮塔自动开火 → 击杀敌人赚取金币 → 撑过波次 → 重复并迎战更难的波次。 紧张感来自规划谜题:我当前的 DPS 足以应对接下来的一波吗?我负担得起应对方案吗?

必备系统

  1. 敌人路径 — 路径点路线,或用于迷宫式塔防的网格 + 寻路(参考资料)。
  2. 波次生成器 — 按时间触发、由数据驱动的敌人类型序列,并按波次逐步增强。
  3. 炮塔 — 射程、射速、伤害、投射物/即时命中、范围伤害;放置有效性检查。
  4. 索敌 — 每座炮塔的优先级(最先/最后/最近/最强/最弱)(参考资料)。
  5. 经济系统 — 击杀奖励 + 波次奖励金币;炮塔/升级成本;出售返还。
  6. 生命值 / 漏怪 — 敌人到达目标会扣除生命值;生命值降至 0 = 游戏结束。
  7. 波次/准备阶段 UI — 生命值、金币、下一波预览、开始下一波的控制项。

设计参数

参数效果备注
敌人 HP 随波次增长推动升级几何增长约为 1.1–1.2×(参考资料)。
收入与 HP 曲线难度玩家应该_几乎_负担得起应对每一波。
炮塔 DPS / 射程 / 成本炮塔特色便宜+射程广 vs. 昂贵+射程远。
索敌优先级最优放置相较于原始属性,对玩法的影响更大。
敌人种类克制单一流派的胜利快速 / 装甲 / 飞行 / 群集 / Boss。
漏怪惩罚利害关系扣除生命值_并且_失去悬赏奖励。
升级与建造经济策略深度升级收益递减。
波次节奏紧张曲线高峰 → 缓和 → 高峰,而非单调递增。

模式

1. 波次生成器(定时、数据驱动)
# Pseudocode. A wave is data: a list of (enemy_type, count, spacing). Spawn over time.
wave = [ ("grunt", 10, 0.5), ("runner", 5, 0.3), ("tank", 2, 1.0) ]

def run_wave(wave):
    for enemy_type, count, spacing in wave:
        for _ in range(count):
            spawn_enemy(enemy_type, at=path[0])   # enter at the path start
            wait(spacing)                          # seconds between spawns (use a timer/coroutine)
    # wave clears when all spawned enemies are dead or have leaked
2. 炮塔索敌(筛选射程内目标,再按优先级选择)
# Pseudocode. "First" (furthest along path) is the standard default for stopping leaks.
def acquire_target(tower, enemies, mode="first"):
    in_range = [e for e in enemies if distance(tower.pos, e.pos) <= tower.range]
    if not in_range: return None
    if mode == "first":    return max(in_range, key=lambda e: e.progress)   # furthest along path (stop leaks)
    if mode == "last":     return min(in_range, key=lambda e: e.progress)   # least progress (guard the entrance)
    if mode == "closest":  return min(in_range, key=lambda e: distance(tower.pos, e.pos))
    if mode == "strongest":return max(in_range, key=lambda e: e.hp)         # burn down tanks first
    if mode == "weakest":  return min(in_range, key=lambda e: e.hp)         # secure kills / last-hit bounty
    return in_range[0]
3. “这条路线守得住吗?”合理性检查(DPS 对比 HP)
# Pseudocode. One tower's damage to one enemy crossing its range.
tower_dps     = tower.damage * tower.fire_rate
time_in_range = tower.range_coverage_length / enemy.speed
damage_dealt  = tower_dps * time_in_range
# Lane holds if summed damage_dealt from covering towers >= enemy.hp (per enemy). See refs.

常见问题 / 失败模式

  • 敌人 HP 增长慢于玩家收入/DPS → 几波之后游戏就会变得毫无挑战。根据收入曲线调整 HP 曲线(参考资料)。
  • 存在一种占优炮塔/策略 → 玩家没有选择。加入能够完全克制特定流派的敌人类型(装甲克制速射,飞行克制仅攻击地面的炮塔),并让升级收益递减。
  • 迷宫式塔防可以完全堵住目标 → 敌人会卡住/导致软锁。禁止阻断路径的放置;炮塔变化时重新计算路径(参考资料)。
  • 没有下一波预告 → 特殊敌人会显得随机且不公平。预览即将到来的敌人组成。
  • 未按 dt 缩放逐帧移动 → 速度会随帧率变化。按 dt 缩放转向。
  • 漏怪只扣生命值,不扣金币 → 有时漏怪反而是最优选择。让漏怪也会损失悬赏奖励。
  • 难度单调递增 → 令人疲惫。安排难度高峰与缓和阶段。

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

  • **寻路:**使用 game-ai 实现 A*、流场或转向;固定路线则使用简单的航点跟随。
  • **敌人移动:**使用 godot-2d-movement(或引擎中的同类功能)沿路径移动;使用 unity-navmesh 实现基于导航的寻路。
  • **地图:**使用 godot-tilemap / unity-tilemap-2d 构建网格或路线;使用 level-design 设计地图布局。
  • **数据:**使用 godot-resources / unity-scriptableobjects 将炮塔、敌人和波次定义为资源。
  • **UI:**使用 game-ui-ux 设计 HUD 布局、缩放和建造菜单;使用 godot-ui-control 实现具体控件(生命值、金币、波次预览)。
  • **润色:**使用 audio-design 设计开火、命中和漏怪的音效提示。

参考资料

  • 有关路径表示方式(航点 / A* / 流场)、目标模式、DPS 和经济系统的计算、敌人强度缩放以及波次节奏,请阅读 references/balancing.md。

评论

支持 Markdown