vampire-like/docs/CodeX-TODO.md

256 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CodeX TODO
## Weapon 现状梳理
### 1. 数据层结构
- `Assets/GameMain/DataTables/Weapon.txt`
- 武器基础数据表。
- 当前 `Params` 列已经切换为标准 JSON 对象。
- 约束:
- 空参数统一写 `{}`
- 不再兼容 `[]`
- key 名应与对应 `ParamsData` 属性名一致
- `Assets/GameMain/Scripts/DataTable/DRWeapon.cs`
- 负责解析武器表基础字段。
- 保留两份参数视图:
- `ParamsJson`
- 原始 JSON 字符串,供 `WeaponData` 强类型反序列化使用。
- `Pramas`
-`ParamsJson` 转成的 `Dictionary<string, string>`
- 仅用于描述/UI 等弱类型读取场景。
- `Assets/GameMain/Scripts/Entity/EntityData/Weapon/WeaponData.cs`
- 保留所有武器共用字段:
- `Attack`
- `Cooldown`
- `AttackRange`
- `Price`
- `Rarity`
- `Modifiers`
- `ParamsJson`
- `Params`
- 提供 `ParseParams<TParams>()` 作为武器子类的强类型参数解析入口。
- `Assets/GameMain/Scripts/Entity/EntityData/Weapon/*`
- 每个具体武器子类持有自己的 `ParamsData`
- `WeaponKnifeData -> WeaponKnifeParamsData`
- `WeaponHandgunData -> WeaponHandgunParamsData`
- `WeaponSlashData -> WeaponSlashParamsData`
- `WeaponLightningData -> WeaponLightningParamsData`
### 2. 逻辑层结构
- `Assets/GameMain/Scripts/Entity/EntityLogic/Weapon/WeaponBase.cs`
- 武器统一基类。
- 负责:
- 生命周期
- 状态机切换
- 选敌
- Simulation area/sector query 接入
- 绑定玩家攻击属性
- 当前已有四种武器实现模板:
- `WeaponKnife`
- 近身前刺 + 圆形范围命中
- `WeaponHandgun`
- 单次 Raycast 瞬发命中
- `WeaponSlash`
- 扇形范围命中
- `WeaponLightning`
- 锁定目标点 + 落点范围打击
- 参数读取方式
- 已改为在具体武器中直接读取对应 `ParamsData`
- 不再在武器逻辑中手动解析字符串参数
### 3. 当前已接通的参数
- `WeaponKnifeParamsData`
- `HitRadius`
- `WeaponHandgunParamsData`
- 暂无字段,待扩展
- `WeaponSlashParamsData`
- `SectorAngle`
- `WeaponLightningParamsData`
- `HitRadius`
- `HoverHeight`
### 4. 当前结构的优点
- 公共字段仍集中在 `WeaponData`,不会把通用逻辑拆散
- 武器专属参数已经强类型化,初始化更稳定
- 数据表可读性比旧的 KV 字符串格式更高
- 新武器扩展时,可以复用:
-
- `DRWeapon`
- `WeaponData`
- `WeaponBase`
- AttackEffect
- Simulation area/sector query
### 5. 当前结构的限制
- 仍然不是“纯配置驱动行为”
- 行为差异主要还在具体武器类里
- `Handgun` 参数化程度还不够
- 目前还不适合直接高效派生霰弹枪、狙击枪、 burst 枪
- `Pramas` 命名拼写仍保留旧名字
- 目前为了兼容存量调用,暂不改
## Weapon 扩展计划
### P0: 稳定当前数据链路
- 检查 `Weapon.txt` 中全部行:
- `Params` 必须都是 JSON 对象
- 空参数统一为 `{}`
- 检查后续新增字段时:
- 数据表 key 与 `ParamsData` 属性名保持一致
- 补一轮基础验证:
- 商店描述
- 玩家初始武器生成
- 商店购买武器生成
### P1: 先把 Handgun 参数化做完整
目标:
-`WeaponHandgun` 做成远程枪械母版,而不是只有一把“手枪”
建议新增参数:
- `PelletCount`
- `SpreadAngle`
- `PenetrationCount`
- `FireOriginOffsetX`
- `FireOriginOffsetY`
- `FireOriginOffsetZ`
- `HitMarkerSize`
- `HitMarkerYOffset`
- `HitMarkerDuration`
落地后可直接派生:
- 手枪
- 霰弹枪
- 狙击枪
- 三连发手炮
### P2: 优先做低成本高收益的新武器
优先顺序建议:
1. 长枪 / 刺剑
- 基于 `WeaponKnife`
- 重点调:
- 前刺距离
- 命中半径
- 冷却
2. 大剑 / 半月斩
- 基于 `WeaponSlash`
- 重点调:
- `SectorAngle`
- 攻击范围
- 动画时长
3. 战锤 / 震地锤
- 基于 `WeaponLightning``WeaponKnife`
- 重点调:
- 落点半径
- 前摇
- 低频高伤
4. 霰弹枪
- 基于参数化后的 `WeaponHandgun`
- 重点调:
- 散射
- 多 pellet
- 近距离爆发
5. 狙击枪
- 基于参数化后的 `WeaponHandgun`
- 重点调:
- 单发高伤
- 超远射程
- 慢冷却
6. 陨石杖 / 圣光柱
- 基于 `WeaponLightning`
- 重点调:
- `HoverHeight`
- 爆炸半径
- 冷却
### P3: 中成本扩展
1. 链式闪电
- 在首目标命中后,继续寻找附近目标
- 需要新增:
- 连锁次数
- 连锁半径
- 每跳衰减
2. 穿透弹 / 火球
- 复用现有 projectile/simulation 基础
- 需要明确:
- 穿透次数
- 命中后是否爆炸
3. 地雷 / 陷阱
- 本质是延时触发 area hit
- 需要新增:
- 布置后触发时机
- 持续时间
- 触发半径
4. 回旋镖
- 需要双阶段投射物状态
- 成本高于普通枪械/范围武器
### P4: 暂缓项
以下方向暂不建议优先投入:
- 持续激光
- 喷火器
- 环绕飞剑
- 常驻法球
- 冰冻/中毒/击退等状态驱动武器流派
原因:
- 当前武器框架核心仍是“单次攻击结算”
- 持续伤害与异常状态还没有形成统一挂点
## 新武器接入步骤模板
1.`Weapon.txt` 新增一行
- 配好基础字段
- `Params` 写 JSON 对象
2. 新增 `WeaponType`
-`Assets/GameMain/Scripts/Definition/Enum/WeaponType.cs`
3. 新增武器数据子类
- 新建 `WeaponXXXData`
- 新建 `WeaponXXXParamsData`
- 在构造里调用 `ParseParams<TParams>()`
4. 新增武器逻辑类
- 继承 `WeaponBase`
- 接入状态机
- 读取 `ParamsData`
5. 接入生成入口
- 玩家初始武器
- 商店购买武器
- 其他掉落/奖励入口
6. 验证点
- 武器生成正确
- 参数生效正确
- 描述文本正确
- Simulation 模式和非 Simulation 模式都能命中