Files
spellforge/docs/handbook/05_release_guide.md
T
joywayerandClaude Opus 4.8 ad2f4c0bc6 docs: 整理文档目录并对齐代码现状
- 将开发过程/归档文档迁至 docs_dev/(development_plan、certification_checklist、
  已废弃的 Cocos 架构草案 archived_cocos_architecture_draft),并修正全部跨引用
- 新增根 README.md(项目介绍,暂定名 Spellforge)与 docs_dev/README.md 索引
- 新增 docs_dev/doc_code_audit_2026-07-20.md:文档 vs 代码交叉审计报告(经 6
  路对抗性复核,零证伪),含「代码更优 / 文档更优 / 中性」判定汇总
- 在 docs/ 各设计·技术·机制文档就地加「实现现状 (2026-07-20)」callout:
  追认代码更优实现(纯 JSON 数据驱动、SpatialGrid-only 碰撞、MultiMesh 单档、
  存档选最新槽等),订正陈旧/矛盾内容(.tres→JSON、Boss HP/阈值/波次、EventID、
  StatusManager.apply 签名等),标记未实现功能(C# 热路径、Mana、元进展、
  Boss 阶段/抗性、Tutorial、轨迹/连锁/催化等)与 latent bug(CoreFeatureTag 位运算、
  pierce 空操作、MAX_OPS 不读 cpu_limit)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-20 14:35:55 +08:00

6.1 KiB
Raw Blame History

05 发布标准清单 (Release Guide)

正式发布前所有 P0 必须项 须全部打勾。参考:docs_dev/certification_checklist.md(权威完整版)。


一、P0 技术验收(S6 P0,均已通过)

编号 项目 状态 说明
P-S6-01 Wave 1~20 无崩溃通关;W8/W20 Boss 正常 系统已实现并实测
P-S6-02 500 敌人 + 1500 子弹稳定 60fps 实测 180fps / 0.6ms
P-S6-03 Endless 排行榜 + HMAC 签名 user://endless_records.json
P-S6-04 死亡时截图保存非黑屏 user://runs/run_*.png
P-S6-05 所有 P6-N 规范条目无违反 1 修复 / 11 PASS
P-S6-06 四语本地化(zh_CN/zh_TW/en/ja 🟡 骨架完成;法术/Core 名待键化
P-S6-07 内存峰值 RSS < 512MB 实测 ~176MB

二、内容完成清单(发布前必做)

2.1 法术内容(当前:14 张,目标:20+ 张)

类型 已有 缺失(示例)
ACTION spark_bolt, energy_orb, fire_bolt, poison_dart, laser_beam, water_wave, chain_bolt, plasma_storm (产物), poison_pool, summon_turret ice_nova, nuke, homing, chain_bolt(独立弹道版)
MODIFIER damage_plus, spread_mod, double_cast heavy_cost, speed_mult_mod
TRIGGER trigger_on_hit trigger_on_killTimer 触发型)
LOGIC every_n_shots, if_hp_below, if_enemy_nearby, loop

添加法术流程 → 见 02 内容创作指南 §A

2.2 Core 种类(当前:5 种,目标:7 种)

Core 状态
wand_basic
wand_fast
wand_memory (PERSISTENT_MEMORY)
matrix_board (MATRIX 2×4)
circuit_fork (CIRCUIT)
staff_long (10 槽) 待加
wand_eternal (INFINITE_SPELLS) 待加

2.3 美术资源(当前:全程序化占位)

资源 规格 优先级
玩家精灵 64×64 PNG4 方向或单帧 P0
敌人 Atlas6 原型) 512×512,每格 64×64 P0
子弹 Atlas(按 damage_type 256×64,每格 32×32 P0
VFX 粒子场景(8 种特效) GPUParticles2Done_shot=true P0
UI Theme / 背景 商店/结算/设置背景图 P1
App 图标 512×512 PNG P0 发布前

替换方法 → 见 03 资源替换指南

2.4 音效资源(当前:程序化蜂鸣)

文件 内容
audio/sfx/hit.ogg 子弹命中
audio/sfx/kill.ogg 敌人死亡
audio/sfx/hurt.ogg 玩家受击
audio/sfx/wave_complete.ogg 波次结算
audio/sfx/boss.ogg Boss 入场
audio/sfx/shop.ogg 商店开启
audio/sfx/buy.ogg 购买法术
audio/sfx/level_up.ogg 升级
audio/bgm/battle_*.ogg 战斗 BGM(循环)

替换方法 → 见 03 资源替换指南 §A

2.5 本地化补全

  • 所有法术 display_name / description 改为 tr()
  • 所有 Core display_name 改为 tr()
  • 所有状态效果名改为 tr()
  • Boss 名称键化
  • 商店页文案(Steam 商店描述,日/英/繁中)

三、Steam PC 发布前必须项

3.1 Steamworks 配置(代码端)

  1. 安装 GodotSteam 插件godotsteam.com
  2. 初始化:在 CrashReporter._ready() 前调用 Steam.init()
  3. 成就钩子ST-11):AchievementManager 订阅 EventID.ACHIEVEMENT_UNLOCKEDID=18):
    func _on_achievement_unlocked(p: Dictionary) -> void:
        Steam.set_achievement(p.get("achievement_id",""))
        Steam.store_stats()
    
  4. 云存档ST-50):ProfileManager.save_run() 包裹 Steam.beginFileWriteBatch/endFileWriteBatch
  5. 排行榜提交ST-42):EndlessRecords.add_record() 后尝试 Steam.uploadLeaderboardScore(),网络失败静默缓存

3.2 认证检查项速查

编号 项目 实现位置
ST-01 不收集 PII 无账号系统
ST-03 清除所有本地数据 SettingsManager.clear_all_local_data()
ST-10 Steam.init() 成功 待实现
ST-20 手柄基本可用 待实现(InputMap 映射)
ST-30 Steam Deck 1280×800 待测试
ST-40/41 HMAC 签名排行榜 endless_records.gd
ST-50 Steam Cloud 存档 待实现(profile_manager.gd 已有位置)

完整清单见 docs_dev/certification_checklist.md


四、构建与发布流程

4.1 导出配置(Godot Editor

Project → Export
平台 模板 注意
Windows x64 Export with Mono runtime 勾选"Embed PCK"打包为单文件
Steam Deck (Linux) Linux x86_64 Mono 须在 SteamOS/Proton 下测试(ST-33

4.2 版本号管理

project.godot 设置:

[application]
config/version="1.0.0"

发布时打 git tag

git tag v1.0.0
git push origin v1.0.0

并在 CHANGELOG.md 记录构建哈希(PRE-02 要求)。

4.3 发布前最终清单

[ ] 所有 P0 认证项 ✅(见 certification_checklist.md
[ ] Steam 商店页:截图×5、宣传片、描述文字审核通过
[ ] IARC 自评系统完成(Steam 自动申报)
[ ] Wave 1~20 完整通关测试(无崩溃)
[ ] crash_reporter.gd 已为首位 Autoloadproject.godot 验证)
[ ] version = "1.0.0" 已设置,git tag 已推送

五、QA 测试要点

场景 验证内容
全 20 波通关 每波正常生成;结算金币/XP 正确;W8/W20 Boss 阶段触发
法术排列测试 MATRIX 邻接加成;CIRCUIT 双路;共鸣触发;LOGIC 门控
存档恢复 关闭游戏→重开→resume_game() 恢复法杖+波次
排行榜防篡改 手动修改 endless_records.json → 重启应拒绝载入
难度三档 初学者:受伤乘数×0.7(即减少30%);挑战:W1 生成24敌(20×1.2),Boss HP×1.3
清除数据 设置→清除→确认→所有 user:// 文件消失
语言切换 商店中切语言→HUD/商店/背包/结算全部切换
性能压测 500 敌 + 1500 弹 → 帧率 ≥ 60fps
内存 Wave 20 Boss 战 → RSS < 512MB