392 lines
9.1 KiB
Markdown
392 lines
9.1 KiB
Markdown
|
|
# 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系统的决策能力
|
|||
|
|
- 扩展军团玩法的深度
|
|||
|
|
- 增加更多的社交互动功能
|