joywayerandClaude Opus 5 84c10725e2 docs: 订正 wand_fast 饱和点 0.05→0.0667;roadmap 关闭已决定项并澄清移速表述
【订正】wand_fast(0.25s) 的饱和点按公式 (1/60)/0.25 = 0.0667,不是 0.05。
numerical_design:21 的标注与它自己上一句的公式直接矛盾,spec/plan 另有三处同源
错误标注——均派生自一句口头转述,实测表里记的 0.0667 一直是对的。

结论也随之改对,不只是改数字:hard=0.05 使 wand_basic(饱和 0.0333) 与
circuit_fork(0.0278) 无无效区间,但 wand_fast 仍剩 [0.05, 0.0667) 这段买不到东西
(较原 hard:0.01 的 6.7 倍缩至 1.33 倍)。仍取 0.05 的理由:饱和点 = (1/60)/法杖
基准间隔,随杖而异,不存在对所有杖都最优的单一 hard——取 0.0667 让 wand_fast 干净
会使另两把杖够不到自己的饱和点,反而制造新的不可达区间。hard 数值不变。

顺带说明实测表里 wand_fast@0.0667 读到 2 帧的原因:采样点比真实边界 1/15 高 3.3e-5
(T 上高 8.3e-6 s),再叠加整帧倍数多花一帧的浮点余量效应,故实际 1 帧上界略低于
0.0667。数据没错,是标签错了。

【roadmap】E3-① 下的 cast_delay_mod 条目仍记为「待人定」并指向两个选项,而该决定
已在 ba7c885 关闭——roadmap 是查「E3 还剩什么」的索引,留着会把已关闭的决定重新打开。
改为已处理,并注明彻底消除需让 hard 逐杖化(挪进 cores.json),属独立立项。

【roadmap】「实测 200→300 px/s」读起来像发版移速由 200 改成 300,与同批改动里
numerical_design 的订正(发版是 200,300 是从未被读过的纸面值)直接冲突。改写为
「发版基准仍是 200;实测手段是临时挂 +50% 加成使生效值变 300」。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 13:36:53 +08:00
2026-07-20 10:56:52 +08:00
2026-07-20 10:56:52 +08:00
2026-07-20 10:56:52 +08:00
2026-07-20 10:56:52 +08:00
2026-07-20 10:56:52 +08:00
2026-07-20 10:56:52 +08:00
2026-07-20 10:56:52 +08:00
2026-07-23 16:03:10 +08:00

Spellforge(万法熔炉)

"Noita 遇上 Brotato" —— 快节奏割草 × 深度法术编程的 Roguelite 弹幕射击游戏

Godot 4.6 (Mono) · GDScript 热路径 + C# · SoA / ECS-Lite 架构

被困异次元的"土豆工匠",捡到的不是武器,而是逻辑碎片与弹头。你要像程序员一样**"编写"你的子弹**——用核心(法杖)、修正器、触发器和逻辑门,组装出毁天灭地的魔法武器,抵御无穷波次的怪物潮。

📛 命名说明Spellforge / 万法熔炉 为当前候选名(project.godot 中工程名仍暂为 Rogue)。定稿后同步更新此处与 application/config/name


核心玩法:法术管道 (The Spell Pipeline)

武器由一个 核心 (Core) 和若干 法术节点 (Spell Node) 组成,四类节点自由排列组合,实现近乎图灵完备的武器逻辑:

类型 作用 示例
ACTION 动作 实际产生的飞行物 魔法弹、黑洞、治疗雾、召唤炮台
MODIFIER 修正 改变下一个动作 伤害+、弹道折射、多重施法、正弦轨迹
TRIGGER 触发 逻辑传递(子母弹) 击中触发、定时触发
LOGIC 逻辑门 自动化灵魂 IF_HP_LOWIF_ENEMY_CLOSELOOP

深度构建维度:

  • 拓扑构建 —— Core 不只是列表,还有 LINEAR / MATRIX(邻接加成)/ CIRCUIT(电路分叉)三种插槽拓扑
  • 逻辑寄存器 —— 史诗核心提供跨帧持久寄存器,可搭出"蓄力计数器""击杀连击"
  • 炼金共鸣 —— 特定元素法术相邻时自动质变合成(如 水属性波 + 闪电链等离子风暴

性能怪兽:得益于 SoA + Spatial Grid,支持同屏 1000+ 敌人2000+ 独立弹幕,实测 500 敌人 + 1500 子弹下模拟+渲染仅 ~0.6ms16.67ms 预算的 3.6%)。


🚀 快速上手

前置Godot 4.6 .NET/Mono 版(工程使用 C#,需 .NET SDK)。

# 1. 用 Godot 4.6 Mono 打开工程
#    直接打开项目根目录的 project.godot

# 2. 首次打开会自动构建 C# 程序集(Rogue.sln

# 3. 运行工程(F5
#    主场景:res://scenes/ui/splash.tscn
#    流程:Splash → 主菜单 → 战斗 → 商店 → 结算 → 排行榜

详细步骤见 docs/handbook/01_quickstart.md


🧰 技术栈与架构

  • 引擎Godot 4.6 (Mono),渲染 D3D12,物理 Jolt
  • 架构ECS-Lite —— ~35 个 Autoload 单例分层协作,EventBus + 整数 EventID 常量解耦
  • 数据布局SoAStructure of Arrays),BulletManager STRIDE=12、EnemyManager STRIDE=8,配合对象池零 GC
  • 渲染MultiMeshInstance2D 单批次绘制全部子弹/敌人,程序化着色器发光(shaders/
  • 法术虚拟机:两阶段架构 —— compile_wand()(装备/换牌时编译为 CompiledDeck+ execute_compiled()(每次施法执行线性化节点)
  • 热路径:当前跑 GDScriptcsharp/ 下 C# 管理器(BulletManagerCs / EnemyManagerCs / SpatialGridCs)为骨架,供后续迁移

📂 项目结构

daihaoRogue/
├── project.godot              工程配置(Autoload 注册、编辑器插件)
├── scenes/
│   ├── ui/                    splash / main_menu(启动与菜单)
│   └── main/                  combat_s2(主战斗场景,唯一可玩入口)
├── scripts/
│   ├── autoloads/            全局单例(EventID/EnemyManager/WaveManager…)
│   ├── core/                 基础数据结构
│   └── domain/
│       ├── spell_system/      法术虚拟机(spell_evaluator.gd 等)
│       └── combat/            游戏循环状态机
├── csharp/                   C# 热路径管理器(骨架,含 .cs)
├── data/                     ⭐ 纯数据驱动内容(JSON
│   ├── spells.json  cores.json  enemies.json  waves.json
│   └── balance.json  resonance.json  status_effects.json
├── shaders/                  子弹/敌人/地面网格程序化着色器
├── translations/            zh_CN / zh_TW / en / ja.po
├── assets/                   精灵 / UI 主题(目前几何占位)
├── addons/                   编辑器插件(见下)
├── docs/                     产品文档:设计 / 技术 / 机制 / 手册
└── docs_dev/                 开发过程 / 归档文档:开发计划 · 认证清单 · 早期草案

🎮 编辑器工具(零代码配置内容)

工程为策划/美术提供了 @tool 编辑器插件,所有游戏内容纯数据驱动(data/*.json),改内容无需碰代码:

插件 位置 功能
🎮 游戏设计器 addons/game_designer/ · 底部面板 一站式:法术 / 敌人 / 波次 / Core / 平衡 / 共鸣 / 状态 共 7 个表单页(法术为字段化表单)
Godot MCP addons/godot_mcp/ AI 辅助开发(截图 / 输入 / 场景检查服务)

修改后需 F5 重启生效(内容在 _ready() 时加载)。用法见 docs/handbook/07_game_designer.md


📖 文档导航

完整文档索引见 docs/README.md;开发/策划手册见 docs/handbook/

分类 关键文档
游戏设计 game_design.md · numerical_design.md · core_wand_design.md
技术架构 architecture_design.md · implementation_plan.md
机制细节 docs/mechanics/ —— 溯源 / 连锁 / 状态 / 召唤 / 环境场
开发计划 development_plan.mdS0S6 垂直切片) · certification_checklist.md —— 位于 docs_dev/(开发过程/归档文档)

docs/README.md 末尾附有 关键规范速查表(P6-N / ADR-**,是跨切片实现约束的权威来源。


🏗️ 开发状态

采用"骨架垂直切片" S0–S6 推进。当前主体流程已可完整游玩:

  • 完整游戏外壳:Splash → 菜单 → 战斗 → 商店 → 结算 → Endless 排行榜,含存档(A/B 局内槽)、暂停、首启难度选择(FTUE)
  • 核心战斗:法术虚拟机(LINEAR/MATRIX/CIRCUIT 三拓扑 + LOGIC + 共鸣 + 召唤/地面场)、20 波内容 + W8/W20 多阶段 Boss、精英寻路
  • 系统:难度/音量/语言设置、4 语言本地化、程序化音效、MultiMesh 渲染 + 发光着色器、纯数据驱动 + 可视化编辑器
  • 🚧 待完善:C# 热路径迁移(当前 GDScript)、正式美术/音频资源(现为几何占位 + 蜂鸣)、法术/Core/状态名的多语言化、Steam/Switch 平台认证项

详细进度与计划/代码差异见 docs_dev/development_plan.md


📄 许可

尚未指定许可证(暂为私有工程)。如需开源发布,请在根目录添加 LICENSE 并在此说明。

S
Description
No description provided
Readme
2.1 MiB
Languages
GDScript 63.3%
TypeScript 15.7%
C++ 11.6%
JavaScript 8.8%
C# 0.5%
Other 0.1%