14 KiB
14 KiB
任务奖励配置
**本文档中引用的文件** - [Tasks.ts](file://assets/script/game/common/config/Tasks.ts) - [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts) - [MissionComp.ts](file://assets/script/game/map/MissionComp.ts) - [VictoryComp.ts](file://assets/script/game/map/VictoryComp.ts) - [MissionHeroComp.ts](file://assets/script/game/map/MissionHeroComp.ts) - [GameEvent.ts](file://assets/script/game/common/config/GameEvent.ts) - [Guide.ts](file://assets/script/game/common/config/Guide.ts) - [Initialize.ts](file://assets/script/game/initialize/Initialize.ts)目录
简介
本文档全面解析了《英雄传说》游戏中基于Tasks.ts文件的任务奖励配置系统。该系统负责管理游戏中的各种任务类型,包括新手指引任务和每日任务,并实现了完整的奖励发放机制。系统采用模块化设计,支持任务配置的动态加载、运行时查询和奖励数据的实时更新。
项目结构
任务奖励配置系统在项目中的组织结构如下:
graph TB
subgraph "配置层"
Tasks[Tasks.ts<br/>任务配置常量]
GameEvent[GameEvent.ts<br/>游戏事件定义]
Guide[Guide.ts<br/>引导系统]
end
subgraph "数据管理层"
SingletonModule[SingletonModuleComp.ts<br/>单例模块管理]
Initialize[Initialize.ts<br/>初始化系统]
end
subgraph "业务逻辑层"
MissionComp[MissionComp.ts<br/>任务控制组件]
VictoryComp[VictoryComp.ts<br/>胜利界面组件]
MissionHeroComp[MissionHeroComp.ts<br/>英雄任务组件]
end
subgraph "UI展示层"
MInfoComp[MInfoComp.ts<br/>任务信息组件]
MapViewComp[MapViewComp.ts<br/>地图视图组件]
end
Tasks --> MissionComp
GameEvent --> MissionComp
SingletonModule --> MissionComp
MissionComp --> VictoryComp
MissionComp --> MInfoComp
图表来源
章节来源
核心组件
任务配置常量
Tasks.ts文件定义了游戏中的任务配置常量数组,包含以下关键字段:
| 字段名 | 类型 | 描述 | 示例值 |
|---|---|---|---|
| id | number | 任务唯一标识符 | 0, 1 |
| name | string | 任务名称 | "新手指引", "每日任务" |
| description | string | 任务描述 | "新手指引描述", "每日任务描述" |
| reward | number | 奖励数值 | 100 |
| type | number | 任务类型(可选) | 0 |
用户数据管理
SingletonModuleComp.ts提供了完整的用户数据管理系统,包含以下核心数据结构:
| 数据字段 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| score | number | 0 | 游戏分数 |
| mission | number | 1 | 当前关卡 |
| diamond | number | 100 | 钻石数量 |
| meat | number | 0 | 肉类资源 |
| exp | number | 0 | 经验值 |
| task | number | 0 | 任务进度 |
章节来源
架构概览
任务奖励配置系统采用分层架构设计,确保了良好的可维护性和扩展性:
sequenceDiagram
participant Player as 玩家
participant MissionComp as 任务控制器
participant SingletonModule as 数据管理器
participant Tasks as 任务配置
participant VictoryComp as 胜利界面
Player->>MissionComp : 开始任务
MissionComp->>Tasks : 查询任务配置
Tasks-->>MissionComp : 返回任务信息
MissionComp->>MissionComp : 执行任务逻辑
MissionComp->>Player : 显示任务进度
Player->>MissionComp : 完成任务
MissionComp->>SingletonModule : 更新用户数据
SingletonModule->>SingletonModule : 存储到云端/本地
MissionComp->>VictoryComp : 显示奖励界面
VictoryComp->>Player : 展示奖励结果
图表来源
详细组件分析
任务配置组件
Tasks.ts - 任务配置核心
任务配置组件负责定义所有可用的任务类型及其奖励规则:
classDiagram
class TaskConfig {
+number id
+string name
+string description
+number reward
+number type
+validateTask() boolean
+getRewardAmount() number
}
class Tasks {
+TaskConfig[] tasks
+findTaskById(id) TaskConfig
+getDailyRewards() number[]
+getTypeRewards(type) TaskConfig[]
}
Tasks --> TaskConfig : "包含多个"
图表来源
任务类型与奖励规则
系统支持多种任务类型,每种类型具有不同的奖励计算规则:
| 任务类型 | ID | 奖励计算 | 特殊规则 |
|---|---|---|---|
| 新手指引 | 0 | 固定奖励 | 一次性奖励,不可重复 |
| 每日任务 | 1 | 固定奖励 | 每日刷新,可重复完成 |
章节来源
任务执行组件
MissionComp.ts - 任务控制中心
任务控制组件管理整个任务生命周期,包括任务开始、执行和完成:
flowchart TD
Start([任务开始]) --> LoadConfig["加载任务配置"]
LoadConfig --> InitData["初始化任务数据"]
InitData --> MonitorEvents["监控游戏事件"]
MonitorEvents --> EventCheck{"事件检查"}
EventCheck --> |怪物死亡| UpdateProgress["更新任务进度"]
EventCheck --> |英雄死亡| CheckGameOver{"检查游戏结束"}
EventCheck --> |任务完成| RewardCalculation["计算奖励"]
UpdateProgress --> MonitorEvents
CheckGameOver --> |失败| EndMission["结束任务"]
CheckGameOver --> |继续| MonitorEvents
RewardCalculation --> AwardRewards["发放奖励"]
AwardRewards --> ShowVictory["显示胜利界面"]
ShowVictory --> EndMission
EndMission --> ResetData["重置任务数据"]
ResetData --> End([任务结束])
图表来源
奖励发放机制
奖励发放通过以下流程实现:
sequenceDiagram
participant MissionComp as 任务控制器
participant SingletonModule as 数据管理器
participant VictoryComp as 胜利界面
participant Player as 玩家
MissionComp->>MissionComp : 检查任务完成条件
MissionComp->>MissionComp : 计算奖励数值
MissionComp->>SingletonModule : 更新用户数据
SingletonModule->>SingletonModule : 验证数据完整性
SingletonModule->>SingletonModule : 同步到云端/本地
SingletonModule-->>MissionComp : 确认更新成功
MissionComp->>VictoryComp : 打开胜利界面
VictoryComp->>Player : 显示奖励详情
Player->>VictoryComp : 确认奖励领取
VictoryComp->>MissionComp : 完成奖励流程
图表来源
章节来源
用户数据管理组件
SingletonModuleComp.ts - 数据管理中心
数据管理中心负责维护玩家的全局状态和持久化存储:
classDiagram
class SingletonModuleComp {
+Object data
+Object vmdata
+number fight_hero
+Array heros
+Array monsters
+updateGold(amount) boolean
+updateFihgtHero(heroId) boolean
+addHero(hero_uuid) boolean
+updateCloudData() boolean
+getCloudData() void
}
class UserData {
+number gold
+number exp
+number diamond
+number meat
+number task
+number score
+number mission
}
class MissionData {
+number mon_num
+number hero_num
+number fight_time
+boolean in_fight
+number level
+number coin
}
SingletonModuleComp --> UserData : "管理"
SingletonModuleComp --> MissionData : "管理"
图表来源
章节来源
初始化系统
Initialize.ts - 系统初始化
初始化系统负责在游戏启动时加载必要的配置和数据:
flowchart TD
Start([游戏启动]) --> CheckPlatform{"检查平台"}
CheckPlatform --> |微信客户端| LoadCloud["加载云端数据"]
CheckPlatform --> |其他平台| LoadLocal["加载本地数据"]
LoadCloud --> LoginCloud["云端登录"]
LoginCloud --> ValidateData{"验证数据"}
ValidateData --> |成功| OverrideLocal["覆盖本地数据"]
ValidateData --> |失败| UseDefault["使用默认数据"]
LoadLocal --> UseDefault
OverrideLocal --> InitComplete["初始化完成"]
UseDefault --> InitComplete
InitComplete --> StartGame["启动游戏"]
图表来源
章节来源
依赖关系分析
任务奖励配置系统的依赖关系如下:
graph LR
subgraph "外部依赖"
OopsFramework[Oops Framework]
WeChatAPI[微信API]
end
subgraph "内部模块"
Tasks[Tasks配置]
GameEvent[游戏事件]
SingletonModule[单例模块]
MissionComp[任务组件]
VictoryComp[胜利组件]
end
Tasks --> MissionComp
GameEvent --> MissionComp
SingletonModule --> MissionComp
MissionComp --> VictoryComp
SingletonModule --> WeChatAPI
MissionComp --> OopsFramework
VictoryComp --> OopsFramework
图表来源
章节来源
性能考虑
任务配置加载优化
- 静态配置缓存:任务配置作为常量数组,在游戏启动时一次性加载到内存
- 按需查询:通过ID索引快速定位特定任务配置
- 类型检查:运行时验证任务配置的完整性
数据更新性能
- 批量更新:将多个数据变更合并为单次更新操作
- 异步处理:云端数据同步采用异步方式,避免阻塞主线程
- 增量更新:只更新发生变化的数据项
内存管理
- 对象池:复用任务相关对象,减少垃圾回收压力
- 弱引用:对临时对象使用弱引用,便于及时回收
- 定时清理:定期清理过期的任务数据
故障排除指南
常见问题及解决方案
任务奖励未发放
问题症状:任务完成后未获得预期奖励
排查步骤:
- 检查任务配置中的reward字段是否正确设置
- 验证用户数据更新逻辑是否正常执行
- 确认云端同步功能是否工作正常
解决方案:
// 检查任务配置
if (!task.reward || task.reward <= 0) {
console.error("任务奖励配置错误:", task);
return false;
}
// 验证数据更新
if (!smc.updateGold(task.reward)) {
console.error("奖励发放失败");
return false;
}
任务进度不更新
问题症状:任务进度显示异常或不更新
排查步骤:
- 检查GameEvent监听器是否正确注册
- 验证任务完成条件判断逻辑
- 确认UI组件的数据绑定是否正确
云端数据同步失败
问题症状:本地数据与云端数据不一致
排查步骤:
- 检查网络连接状态
- 验证微信API初始化是否成功
- 查看错误日志获取详细信息
解决方案:
// 云端数据同步检查
async function syncDataWithCloud() {
try {
const result = await smc.updateCloudData();
if (!result) {
throw new Error("云端数据同步失败");
}
console.log("数据同步成功");
} catch (error) {
console.error("数据同步异常:", error);
// 回滚到本地数据
smc.getCloudData();
}
}
章节来源
结论
《英雄传说》任务奖励配置系统通过模块化的设计和清晰的职责分离,实现了高效、可靠的任务管理功能。系统支持多种任务类型,具备完善的奖励发放机制,并提供了灵活的扩展接口。
系统优势
- 配置灵活:通过Tasks.ts文件集中管理任务配置
- 数据安全:支持云端和本地双重存储机制
- 性能优化:采用缓存和异步处理提升响应速度
- 易于维护:清晰的代码结构和完善的错误处理
扩展建议
- 任务类型扩展:增加更多任务类型如成就任务、挑战任务
- 奖励多样化:支持多种奖励类型如道具、技能等
- 数据分析:添加任务完成率统计和玩家行为分析
- 社交功能:支持任务分享和好友竞争功能
该系统为游戏提供了坚实的任务管理基础,能够有效支撑游戏的核心玩法和用户粘性。