喜糖

移动开发工程师 。涉及 android、ios、jni

导航

SLG游戏关卡设计

Posted on 2011-06-10 10:54  喜糖  阅读(1424)  评论(0编辑  收藏  举报

业务调研

1 关卡是游戏中非常重要的游戏内容。也是引导玩家游戏的主线。

clip_image002

类设计

类图/数据结构

clip_image004

l HumanMisssionManager玩家身下绑定一个关卡任务管理器。记录玩家创建的场景、当前所属场景的Id、今天击败过的敌人Id。

l MissionStageInstance为一个关卡地图的抽象实例。MissionStage为一个关卡的实例模板。

l MissionStageEnenmyInstance为关卡中敌人的抽象。MissionEnemy为关卡中敌人的模板。

l MissionStageState为存储了关卡的完成状态:

n UNOPEN:未开启

n OPNE:已开启,前置关卡通过

n PASS:已通过,关底Boss击败

n CLEAR:已全清,全部敌人击败

n TERMINATE:已终结,全清并领取了奖励;

实现逻辑

玩家点击进行关卡地图,切换地图时效性发送。

CGEnterMissionStage:目标关卡地图Id,来自地图关卡ID

GCEnterMissionStage:这是一个复杂的数据结构。包含本场景的id名称、完成度等信息还包括前置、后续信息和当前关卡的敌人信息等内容。

clip_image006

该模块还涉及到的信令:

l CG_Attack_enemy客户端请求攻击敌人

l Cg_show_enemyRecord请求特定敌人的攻略记录

l Gc_show_enemy_record请求特定敌人的攻略记录

l Cg_get_mission_bonus 领取关卡过关奖励

l Gc_get_mission_bonus领取关卡过关奖励

l Cg_check_force_attack_price请求强攻价格

l Gc_check_force_attack_price 请求强攻价格

l Cg_force_attack_enemy 强攻敌人

l Cg_show_mission_target_panel 显示关卡目标面板

l Gc_show_mission_target_panel 显示关卡目标面板

持久化逻辑

l 战报存储

数据库t_mission_enemy_info表格。存储了玩家对关卡敌人的完成情况(攻略)

在MissionService中启动了一个定时事件,在该事件中每间隔一个小时去调用存储一次对某个敌人的战报。

l 关卡完成度存储

关卡的完成度存储是对应于数据库t_character_info类中的missionPack字段中。跟随玩家的存储策略进行一并存储。