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

392 lines
9.1 KiB
Markdown
Raw Normal View History

2025-03-03 14:49:20 +08:00
# 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系统的决策能力
- 扩展军团玩法的深度
- 增加更多的社交互动功能