5.3 KiB
5.3 KiB
F2RopeLine2
项目定位
- 本项目是测试项目。
- 目标是用于测试钓鱼鱼线相关的逻辑编写与功能测试。
编写原则
- 保持精简,优先直接可验证的实现。
- 避免过度设计,不提前抽象不存在的需求。
- 在保证后续可扩展的前提下,尽量简化结构与实现。
- 新增逻辑应优先服务测试目的,避免引入与当前目标无关的复杂度。
开发流程
- 在项目开始阶段,或后续出现结构性修改时,必须先沟通并确认设计结构。
- 结构设计未确认前,不进入大段代码填充。
- 设计结构确认后,再进入具体实现与代码补全。
- 如果需求变更会影响节点结构、连接关系、渲染流程或交互挂接方式,应重新对齐设计后再修改代码。
实现默认策略
- 首次设计确认时,默认只输出 3 到 6 个核心脚本或模块,不主动展开完整分层架构,除非用户明确要求。
- 未经确认,不引入 Builder、Runtime、Config、Interaction Framework 等扩展层。
- 测试阶段优先使用最少脚本、最少运行时对象、最少中间抽象的实现。
- 新增方案优先选择容易验证、容易回退、容易观察结果的写法。
当前需求
- 鱼线由多节点组成,节点分为逻辑节点和虚拟节点。
- 逻辑节点用于表达真实业务结构,数量和类型会随钓鱼场景变化。
- 虚拟节点用于补足线段表现与计算,不应替代逻辑节点语义。
逻辑节点示例
- 路亚钓可为 2 个逻辑节点:起点、末尾点。
- 路亚钓也可为 3 个逻辑节点:起点、配重点、末尾点。
- 浮子钓可为 4 个逻辑节点:起点、浮漂点、配重点、末尾点。
- 浮子钓需要双钩时,可在浮漂点后存在 2 个末尾点。
- 设计上应允许不同钓法组合出不同逻辑节点结构,但不要为未确认场景预先做复杂抽象。
节点交互
- 逻辑节点可以挂接额外的交互逻辑。
- 交互逻辑可由节点类型决定,也可由同类型下的具体产品决定。
- 浮漂节点可根据需要挂接半物理的浮漂交互脚本。
- 末尾点可根据路亚饵类型挂接不同的交互脚本。
- 设计上应支持节点与交互逻辑解耦,避免把所有交互直接写死在单一节点实现中。
- 同时仍需保持实现精简,只支持当前明确需要的交互扩展,不预建过大的脚本体系。
节点连接
- 逻辑节点与逻辑节点之间使用
ConfigurableJoint连接。 - 起点节点需要固定锚定到指定的
Transform。 - 该
Transform表示鱼竿上的固定挂点。 - 起点节点应作为整条鱼线的固定起始约束点。
鱼线渲染
- 各节点之间的鱼线渲染使用
Verlet算法实现。 - 渲染结果需要平滑过渡,避免明显抖动。
Verlet渲染出的鱼线长度应与Joint约束链的实际长度保持一致。- 不允许因平滑处理导致视觉上的鱼线长度明显长于物理长度。
- 渲染层应服务于物理结果表现,不能脱离节点链和约束长度单独扩张。
- 任何平滑、插值、样条、圆角化处理,都不得使任一局部段长或整条视觉长度超过约束链长度。
- 若无法低成本严格保证长度不超限,则默认不启用该类视觉平滑。
虚拟节点规则
- 第一段为动态段,即起点到第一个逻辑节点之间的线段。
- 第一段需要支持放线和收线,因此虚拟节点数量必须可动态增减。
- 除第一段外,其他段的虚拟节点数量可以固定,只需满足当前测试需求。
- 第一段中,起点到第一个虚拟节点的距离也必须是动态的。
- 当按固定步长切分第一段时,不能整除的余量应落在起点到第一个虚拟节点之间。
- 例如基础步长为 0.1 米、第一段总长度为 1.12 米时,离起点最近的第一个虚拟节点距离应为 0.02 米,后续节点再按 0.1 米递进。
虚拟节点默认策略
- 虚拟节点默认使用纯数据结构,不创建运行时
GameObject。 - 只有在明确需要场景交互、挂载组件、独立调试对象时,才将虚拟节点提升为实体对象。
- 长线场景下应优先避免大量
Transform或GameObject带来的层级与性能开销。 - 第一段动态虚拟节点在增减时,应尽量保持已有节点身份与历史状态稳定,避免链路重排导致明显抽动。
水面与地面处理
- 水面或地面表现优先采用轻量规则修正,如高度约束、投影贴附。
- 不默认引入额外碰撞采样器、完整碰撞链或新增物理节点。
- 应支持排除头尾若干节点不参与表面修正,以保留杆梢入水、浮漂黑漂等表现自由度。
- 若仅为钓鱼表现需求,优先使用固定水面高度或简单表面规则,不优先构建完整环境碰撞解。
调试规则
- 调试默认优先使用 Scene Gizmos、必要日志和可开关的调试绘制。
- 不默认添加 GUI 面板、屏幕按钮、大段调试文字,除非用户明确要求。
- 虚拟节点即使为纯数据,也应支持 Gizmos 可视化,便于在 Scene 中观察。
- 调试功能应尽量不影响运行时结构与性能,不为调试方便引入长期保留的重对象方案。
后续补充
- 具体功能边界、数据结构、更新方式、测试用例在后续阶段继续补充。