模拟测试
额外笔记
— 沈默 2019/05/28 18:08
group执行顺序:
* 先执行一轮simulation_config, 然后在time forward。 所以资源会出现还未消化的情况
* 表格id顺序就是 执行顺序
客户端测试
CONDITION.GM_SIMULATION_MODE 627 模拟测试是否在模拟中,
| >0 | 禁止常规弹窗 |
| 1 | 一个大浮窗(显示收益) |
| 2 | 一个大弹框(显示收益) |
| 3 | 反馈明细 simulation_detail_log_info |
| 4 | 整组执行明细 simulation_log_info |
每次执行GMSimulationGroupExcute指令之后会重置 627 的状态。所以需要每次重新赋值
客户端控制台的循环方法
| Wait(10) | 等待10秒 |
| WaitNetwork() | 等待网络 |
| Loop(3) | 循环三次 |
可以在command_config中 找到编辑好的 一次执行若干天的指令方法
反馈
如果某一条 simulation_config执行有效,会在simulation_detail_log_info输出反馈 具体的反馈如下
| 反馈 | 翻译 | 参数 |
|---|---|---|
| PlayerLevelUp | 玩家升级 | 等级 |
| BattleEnd | 战斗完成 | stage_config.id |
| BattleFarm | 扫荡完成 | stage_config.id |
| RobLose | 战斗完成 | 奖杯数 |
| RobWin | 战斗完成 | 奖杯数 |
| FIGHT_GUILD_BOSS | 公会BOSS | 星级 |
| FIGHT_GUILD_WAR | 公会战 | 胜利5/失败1 |
| BuildingLevelUp | 建筑升级 | 建筑实例id building_info.id |
| BaseLevelUp | 基地升级 | 无 |
| BuildingResearch | 研究开始 | 建筑实例id building_info.id,building_research_produce_config.id |
| BuildingProduce | 建筑生产开始 | 建筑实例id building_info.id,building_research_produce_config.id |
| BuildingProduceFinished | 建筑收成 | 建筑实例id building_info.id |
| BuildingResearchFinished | 研究完成 | 建筑实例id building_info.id |
| BoxTaskComplete | 宝箱任务完成 | slot |
| VipGift | VIP领取 | 1年卡 0月卡 |
| TaskComplete | 任务完成 | task_config.id |
| CLAIM_WAR_CHEST | 公会战箱子 | 无 |
| SummonCard | 抽卡 | activity_summon_config.id |
| HeroLevelUp | 英雄升级 | hero_info.id, 食物的hero_info.id |
| HeroGradeUp | 英雄升星 | hero_info.id |
| Potential_LevelUp | 潜能升级 | hero_info.id |
| Potential_Set | 潜能分配 | hero_info.id ,潜能 |
| TroopLevelUp | 小兵升级 | troop_info.id,食物的 troop_info.id |
| IapBuy | 内购购买 | iap_config.id,num |
| ShopBuy | 商店购买 | shop_config.id,num |
| HeroTeamApply | 阵容更换 | 无 |
在服务器的ReportHelper.php中已经提供了道具和反馈的翻译功能,也可以进行关闭
网页
测试入口:http://116.62.174.73:8081/Web/PlayGround.php
单个模拟
单个模拟测试用 GMSimulationExcute GM执行单条模拟指令
输出表格是: 一条simulation_detail_log_info
整组模拟
整组模拟的时候用 GMSimulationGroupExcute GM执行一组模拟指令
整组模拟的第二个参数 day
有两个特殊用法
0.1: 表示只执行一轮模拟,并timeforward
0.2: 表示执行型议论模拟,并且不timeforward
输出表格是: 一大堆simulation_detail_log_info 和 一轮一条 simulation_log_info ,其中每天的最后一次是快照
枚举
| 621 | GM_SIMULATION_ID | 模拟测试的上一次模拟id |
| 622 | GM_SIMULATION_GROUP_ID | 模拟测试的上一次策略分组id |
| 623 | GM_SIMULATION_HOUR | 模拟测试的第几个小时 |
| 624 | GM_SIMULATION_DAY | 模拟测试的第几天 |
| 625 | GM_SIMULATION_GUILD_BOSS_LEVEL | 模拟测试的工会boss等级 |
| 626 | GM_SIMULATION_GUILD_WAR_PROGRESS | 模拟测试的工会战箱子进度 |
| 627 | GM_SIMULATION_MODE | 模拟测试是否在模拟中,1:禁止弹出弹窗 |
新增枚举 SIMULATION
| 11 | FIGHT_PVE | 主线闯关-战斗 参数1:自动胜利战力系数 参数2:扫荡的关卡减少数 |
| 12 | FIGHT_PVE_LIMIT | 限时挑战-战斗 参数1:自动胜利战力系数 参数2~n:扫荡的关卡减少数 |
| 13 | FIGHT_PVE_HERO | 英雄挑战-战斗 参数1:自动胜利战力系数 参数2~n:优先的hero_id |
| 14 | FIGHT_PVP_ROB | PVP掠夺-战斗 和机器人比较战斗结果 |
| 15 | FIGHT_GUILD_BOSS | 公会BOSS-战斗-模拟 1:大于多少级的公会BOSS就输,其他则赢 2:自己的排名,可设定范围,例如1~5 |
| 16 | FIGHT_GUILD_WAR | 公会战-战斗-模拟 1:赢的概率 |
| 21 | BUILDING_LEVELUP | 造建筑/升级-建造 参考simulation_building_config |
| 22 | BUILDING_RESEARCH | 研究 |
| 23 | CRAFT_HERO | 训练营-制造 (building_reseach_produce_config.id,人口数量需求,制作数量),(a,b,c) |
| 24 | CRAFT_ITEM | 炼金所-制造 (building_reseach_produce_config.id,制作数量),(a,b) |
| 31 | CLAIM_FOOD | 采集器收资源 |
| 32 | CLAIM_TOWER | 瞭望塔收资源 |
| 33 | CLAIM_BOX_TASK | 领取宝箱任务奖励 |
| 34 | CLAIM_VIP | 领取VIP奖励 |
| 35 | CLAIM_TASK | 领取成就任务奖励 |
| 36 | CLAIM_MAIN_TASK | 领取新手引导任务 |
| 37 | CLAIM_WAR_CHEST | 领取公会战宝箱奖励 |
| 38 | CLAIM_FREE_SUMMON | 每日免费召唤 |
| 39 | CLAIM_ITEM_SUMMON | 有牌子的召唤 |
| 41 | HERO_LEVEL_UP | 英雄升级 1狗粮品质最大限制 2狗粮星级最大限制 |
| 42 | HERO_GRADE_UP | 英雄升星 |
| 43 | HERO_POTENTIAL_UP | 英雄升潜能等级 1:权重设定 |
| 44 | HERO_POTENTIAL_SET | 英雄点潜能 1:职业指定潜能(填写方式:(1=2)(2=1)(3=1,3)(4=2,3)代表:战士升防御,刺客升攻击,法师升攻击或辅助,祭司升防御或辅助,射手3个随机) |
| 45 | TROOP_LEVEL_UP | 宠物升级 |
| 51 | BUY_ACTIVITY_IAP | 限时RMB礼包 1:iap_config.id,数量 |
| 52 | BUY_ACTIVITY_SHOP | 限时钻石礼包 1:shop_config.id,数量 |
| 53 | BUY_ACTIVITY_SUMMON | 限时抽卡 1:activity_summon_config.id,数量 |
| 54 | BUY_IAP | 常驻RMB消费 1:iap_config.id,数量 |
| 55 | BUY_SHOP | 常驻钻石消费 1:shop_config.id,数量 |
| 56 | BUY_SUMMON | 常驻抽卡 1:activity_summon_config.id,数量 |
| 61 | TEAM_SET | 编辑队伍 |
| 62 | USE_ITEM | 使用体力道具 |
| 63 | FARM_STAGE | 扫荡关卡 |
原型表
存档表
player_simulation_info 玩家模拟信息
simulation_log_info 玩家模拟记录log/ 在重置的时候执行快照
协议
GMSimulationExcute GM执行单条模拟指令
GMSimulationGroupExcute GM执行一组模拟指令
计划任务
player_simulation_info 新增了控制字段, 只要 schedule_mode >0 就可以让这个号开启计划任务
| schedule_mode | 计划任务执行 0不执行 1一次执行一轮(看间隔) 2一次执行一天(看间隔) 3按时间点执行(不进行timeforward) |
| schedule_interval | 计划任务间隔(分钟) |
| schedule_last_time | 上一次执行计划任务的时间 |
| schedule_condition | 计划任务执行条件CONDITION,比如到达多少天就不再执行 |
| schedule_count | 计划任务执行次数 |
同样有枚举
| 628 | GM_SIMULATION_SCHEDULE_MODE | 模拟测试计划任务模式 0不执行 1一次执行一轮 2一次执行一天 3按时间点执行(不进行timeforward) | player_simulation_info | schedule_mode |
| 629 | GM_SIMULATION_SCHEDULE_INTERVAL | 模拟测试计划任务间隔(分钟) | player_simulation_info | schedule_interval |
| 630 | GM_SIMULATION_SCHEDULE_COUNT | 模拟测试计划任务执行次数 | player_simulation_info | schedule_count |
| 631 | GM_SIMULATION_SCHEDULE_COUNT_LIMIT | 模拟测试计划任务执行最大次数 | player_simulation_info | debug_array |
使用Set(628,2) Set(629,5) 就表示五分钟跑一天, 如果需要Log要通过Set(627,4)/Set(627,3)来配合
代码备忘
代码部分主要是SimlationHandle.php
同样需要配置timer_config, 并新增了SERVER_TIMER_ACTION的枚举
TODO:有个技术点是 再起一个进程调用SimlationHandle.php 还在研究中


