医院伤兵治疗逻辑引发的思考
JACL C++菜鸟

医院伤兵治疗逻辑引发的思考

一、前言

实习期间,我参与了一款SLG游戏的开发,并被分配了修改优化医院伤兵治疗需求。这一过程使我对游戏设计和玩家体验有了更深入的思考。

二、需求分析

1. 原有需求与实现

原有逻辑: - 当部队在战斗中受伤时,重伤士兵会进入受伤队列。 - 玩家需手动选择士兵进入治疗队列(仅支持一个)并在治疗完成后领取恢复的士兵。

新需求优化: - 自动化治疗流程:系统按照时间顺序自动选择等待治疗的士兵,无需玩家手动干预。 - 自动分类:伤兵入驻时,根据士兵类型及等级(士兵ID)自动划分到对应队列。 - 队列划分: • 正在治疗的士兵队列(多个相同ID的伤兵) • 等待治疗的士兵队列(原受伤队列,多列根据ID分类不同的多个伤兵) • 已治疗完成的士兵队列) - 其他功能: • 自动选中等待队列中的士兵进行治疗
• 支持动态调整治疗队列与等待队列的优先级
• 允许使用加速道具提升治疗速度
• 领取范围涵盖正在治疗队列中已治疗完成的士兵以及原已治疗完成队列中的士兵 • 0点伤兵死亡处理逻辑 ### 2. 设计思路 - 自动化治疗:在伤兵数组进入医院后,先判断有无正在治疗的士兵队列。 - 如果有,将与正在治疗的士兵队列相同的ID士兵直接添加到正在治疗队列。不同ID的士兵会被添加到等待治疗队列,这一步可以用异步函数实现。 - 如果没有,先用同步函数将伤兵数组中所有士兵分别的添加到不同的受伤队列中,并且从中取出index为1的受伤士兵队列创建成正在治疗队列。 - 队列管理:在治疗过程中,系统会根据伤兵的治疗进度动态调整队列。例如,治疗完成的士兵会被移出正在治疗队列,并添加到已治疗完成队列中。 - 优先级调整:玩家可以通过界面操作调整等待队列中士兵的优先级,系统会根据优先级自动选择下一个需要治疗的士兵。 - 加速道具:玩家可以使用加速道具来提升治疗速度,系统会在治疗过程中自动应用加速效果。 - 领取逻辑:玩家可以一次性领取所有已治疗完成的士兵,无需逐个操作。系统会自动将领取的士兵从正在治疗队列和已治疗完成队列中移除。

三、设计的核心优化

实现完成后,定时器太多,即使玩家下线也会继续执行,导致服务器负担过重。既要减少服务器的负担,也要使玩家无感知。

 评论