# NLD项目架构文档 ## 1. 项目概述 ### 1.1 游戏类型 - 即时制战棋游戏 - 多系统交互的复杂游戏架构 - 支持单人剧情、PVP对战和军团合作玩法 ### 1.2 技术栈 - 开发引擎:Unity - 开发语言:C# - AI框架:Behavior Designer (行为树) - 网络:支持多人在线对战 ### 1.3 核心玩法 - 即时战棋对战 - 军团协作系统 - 营地建设养成 - PVP竞技对战 - 剧情故事体验 ## 2. 系统架构 ### 2.1 核心系统关系 ```mermaid graph TD A[Game Core] --> B[Battle System] A --> C[Story System] A --> D[Camp System] A --> E[Legion System] A --> F[PVP System] B --> B1[Unit System] B --> B2[Area System] B --> B3[Skill System] B --> B4[Battle UI] C --> C1[Timeline Track] C --> C2[Story Manager] C --> C3[I18N] D --> D1[Camp Building] D --> D2[Camp Units] D --> D3[Camp Edit] E --> E1[Legion Manager] E --> E2[Mercenary] E --> E3[Legion Data] F --> F1[PVP Manager] F --> F2[Team Prepare] F --> F3[Defender System] ``` ## 3. 核心系统详解 ### 3.1 战斗系统 战斗系统是游戏的核心玩法系统,采用即时制战棋玩法。战斗系统通过事件驱动机制与其他系统交互,支持多种单位类型(角色、载具、建筑等)的即时战斗。 主要特点: - 即时制战斗:所有单位同时行动,不受回合限制 - 六边形网格:基于TGS(TerrainGridSystem)的地形系统 - AI控制:使用Behavior Designer实现的行为树AI - 状态机:使用FSM管理战斗、准备等不同状态 关键类: - LevelStateBattle: 战斗状态管理 - GameUnitManager: 单位管理 - AreaManager: 区域管理 - SkillManager: 技能管理 #### 3.1.1 单位系统 ```mermaid graph TD A[GameUnitManager] --> B[PrepareUnits] A --> C[InfightUnits] A --> D[DeadUnits] A --> E[CharacterManager] A --> F[VehicleManager] A --> G[SummonManager] ``` 主要职责: - 单位生命周期管理 - 战斗中的单位状态同步 - 单位类型的差异化处理 - AI行为控制 #### 3.1.2 区域系统 ```mermaid graph TD A[AreaManager] --> B[MoveArea] A --> C[AttackArea] A --> D[SkillArea] A --> E[BoardView] ``` 主要职责: - 六边形网格管理 - 移动区域计算 - 攻击范围显示 - 技能影响区域 #### 3.1.3 技能系统 - 技能配置管理 - 技能效果实现 - 技能目标选择 - 技能动画表现 ### 3.2 军团系统(Legion System) ```mermaid graph TD A[Legion System] --> B[Legion Management] A --> C[Mercenary System] A --> D[Legion Battle] B --> B1[Member Management] B --> B2[Resource Management] B --> B3[Task System] ``` 主要职责: - 军团成员管理 - 军团任务系统 - 军团战玩法 - 佣兵系统 - 资源管理 ### 3.3 营地系统(Camp System) 营地系统提供了玩家基地建设和资源管理的功能。使用网格化的布局系统,支持建筑放置和升级。 关键特性: - 网格布局:自由的建筑布置系统 - 建筑功能:不同建筑提供不同的功能和加成 - 资源管理:管理各类资源的产出和消耗 - 营地防守:设置防守布局,应对PVP挑战 数据管理: - Camp:核心管理类,负责营地数据和逻辑 - CampManager:管理所有玩家营地 - CampUnit:营地内的功能单位 ```mermaid graph TD A[Camp System] --> B[Building Management] A --> C[Unit Arrangement] A --> D[Resource Production] B --> B1[Building Types] B --> B2[Building Functions] C --> C1[Unit Placement] C --> C2[Unit Functions] ``` 主要职责: - 建筑建造与升级 - 单位布置管理 - 资源产出系统 - 营地编辑功能 ### 3.4 PVP系统(Player VS Player) PVP系统实现了玩家之间的对战功能。包括排位赛、匹配系统等竞技玩法。 关键模块: - 匹配系统:基于分数的玩家匹配 - 战斗准备:队伍编组、战术布置 - 排位系统:段位划分和奖励发放 - 录像回放:战斗记录和回放功能 实现细节: - PrepareTeamManager:队伍准备管理 - PVPManager:核心玩法控制 - PVPDefenderData:防守数据管理 ```mermaid graph TD A[PVP System] --> B[Match Making] A --> C[Battle Preparation] A --> D[Defense Setup] B --> B1[Rank System] B --> B2[Reward System] C --> C1[Team Formation] C --> C2[Strategy Setting] ``` 主要职责: - 匹配系统 - 排位系统 - 防守阵容设置 - 战斗准备 - 奖励发放 ### 3.5 剧情系统(Story System) 剧情系统使用Timeline实现剧情演出,支持分支剧情和多语言。 关键特性: - Timeline控制:使用Unity Timeline管理剧情演出 - 多语言支持:完整的I18N系统 - 分支系统:支持剧情分支选择 - 过场动画:CG和过场动画的播放控制 关键类: - StoryManager:剧情管理器 - TimelineTrackWrapper:Timeline轨道封装 - DialogueSystem:对话系统 实现机制: - 使用ScriptableObject存储剧情数据 - 事件驱动的剧情触发系统 - 支持存档和读档功能 ```mermaid graph TD A[Story System] --> B[Story Timeline] A --> C[Dialogue System] A --> D[Cutscene System] B --> B1[Event Trigger] B --> B2[Story Progress] C --> C1[Character Dialogue] C --> C2[Choice System] ``` 主要职责: - 剧情进度管理 - 对话系统 - 剧情动画 - 过场演出 - 多语言支持 ### 3.6 UI系统 ```mermaid graph TD A[UI System] --> B[Battle Related] A --> C[Character Related] A --> D[System Related] B --> B1[LevelFight] B1 --> B11[BattleUI] B1 --> B12[FightReady] B1 --> B13[FightSceneUI] C --> C1[Team] C --> C2[Character] C --> C3[Vehicle] D --> D1[Common] D --> D2[Settings] D --> D3[Shop] ``` 主要职责: - 战斗界面管理 - 系统界面控制 - 角色相关界面 - 商店系统界面 - 通用UI组件 ## 4. 系统交互 ### 4.0 事件系统(Event System) 事件系统是整个游戏的核心通信机制,采用观察者模式实现。 关键特性: - 事件注册与分发 - 支持异步事件 - 事件优先级管理 - 自动事件清理 实现方式: ```csharp // 事件注册 EventManager.Instance.Register(EventName.INFIGHT_UNIT_DEAD, OnUnitDead); // 事件发送 EventManager.Instance.Send(EventName.INFIGHT_UNIT_DEAD, deadUnit); // 事件清理 EventManager.Instance.Unregister(EventName.INFIGHT_UNIT_DEAD, OnUnitDead); ``` ### 4.1 战斗流程 #### 4.1.1 战斗初始化 ```mermaid sequenceDiagram participant L as LevelManager participant U as UnitManager participant A as AreaManager participant E as EventSystem L->>U: 初始化单位 U->>A: 注册单位位置 A->>A: 计算区域 E->>L: 通知战斗开始 ``` #### 4.1.2 即时战斗循环 ```mermaid sequenceDiagram participant GM as GameManager participant UM as UnitManager participant AI as AISystem participant ES as EventSystem loop Every Frame GM->>UM: LogicUpdate UM->>UM: UpdateUnits UM->>AI: UpdateAI AI->>ES: 发送行为事件 ES->>UM: 更新单位状态 end ``` ```mermaid sequenceDiagram participant P as Player participant BU as BattleUI participant BS as Battle System participant ES as Event System P->>BU: 选择单位 BU->>ES: 发送单位选择事件 ES->>BS: 通知战斗系统 BS->>ES: 更新状态 ES->>BU: 更新UI显示 ``` ### 4.2 系统间数据流 #### 4.2.1 存档系统 - 战斗数据序列化 - 玩家进度保存 - 营地状态保存 - 军团数据同步 #### 4.2.2 网络同步 - 战斗状态同步 - PVP数据传输 - 军团数据更新 - 排行榜刷新 ```mermaid graph TD A[Player Progress] --> B[Camp Development] A --> C[Legion Contribution] A --> D[Battle Records] A --> E[Story Progress] B --> F[Resource System] C --> F F --> G[Game Economy] ``` ## 5. 代码规范 ### 5.1 目录结构 - Assets/Code/Scripts/Gameplay:游戏核心逻辑代码 - 按功能模块分类:AI、Area、Battle、UI等 - 每个模块下按照职责划分子文件夹 ### 5.2 命名规范 - 类名:PascalCase - 方法名:PascalCase - 私有变量:_camelCase - 公有变量:camelCase - 常量:UPPER_CASE ### 5.3 代码组织 - 使用命名空间管理代码 - 单一职责原则 - 接口优先 - 组件化设计 ## 6. 总结 ### 6.1 系统特点 - 采用事件驱动的架构设计 - 高度模块化的系统划分 - 清晰的数据流转路径 - 完善的扩展性支持 ### 6.2 优势分析 - 即时战斗系统的实现既保证了策略性,又提供了实时性 - 事件系统使各个模块解耦,便于维护和扩展 - 完整的军团和PVP系统提供了丰富的多人玩法 - 营地系统为玩家提供了个性化发展路线 ### 6.3 注意事项 - 战斗系统的性能优化需要特别关注 - 网络同步的延迟处理要做好容错 - 存档系统需要考虑向后兼容 - AI行为树的配置需要经常调优 ### 6.4 后续开发建议 - 进一步优化战斗系统的即时性表现 - 强化AI系统的决策能力 - 扩展军团玩法的深度 - 增加更多的社交互动功能