9.1 KiB
9.1 KiB
NLD项目架构文档
1. 项目概述
1.1 游戏类型
- 即时制战棋游戏
- 多系统交互的复杂游戏架构
- 支持单人剧情、PVP对战和军团合作玩法
1.2 技术栈
- 开发引擎:Unity
- 开发语言:C#
- AI框架:Behavior Designer (行为树)
- 网络:支持多人在线对战
1.3 核心玩法
- 即时战棋对战
- 军团协作系统
- 营地建设养成
- PVP竞技对战
- 剧情故事体验
2. 系统架构
2.1 核心系统关系
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 单位系统
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 区域系统
graph TD
A[AreaManager] --> B[MoveArea]
A --> C[AttackArea]
A --> D[SkillArea]
A --> E[BoardView]
主要职责:
- 六边形网格管理
- 移动区域计算
- 攻击范围显示
- 技能影响区域
3.1.3 技能系统
- 技能配置管理
- 技能效果实现
- 技能目标选择
- 技能动画表现
3.2 军团系统(Legion System)
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:营地内的功能单位
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:防守数据管理
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存储剧情数据
- 事件驱动的剧情触发系统
- 支持存档和读档功能
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系统
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)
事件系统是整个游戏的核心通信机制,采用观察者模式实现。
关键特性:
- 事件注册与分发
- 支持异步事件
- 事件优先级管理
- 自动事件清理
实现方式:
// 事件注册
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 战斗初始化
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 即时战斗循环
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
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数据传输
- 军团数据更新
- 排行榜刷新
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系统的决策能力
- 扩展军团玩法的深度
- 增加更多的社交互动功能