NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/ProjectStructure.md

392 lines
9.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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剧情管理器
- TimelineTrackWrapperTimeline轨道封装
- 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系统的决策能力
- 扩展军团玩法的深度
- 增加更多的社交互动功能