From cfc218ba30a00f0504d3dcbd24a0b1f6185a163f Mon Sep 17 00:00:00 2001 From: Dan Crosby Date: Thu, 4 Jun 2026 13:15:08 -0700 Subject: [PATCH] Regenerate Shardok AI baselines after timeout fix (#6927) --- docs/SHARDOK_AI_SCORING_BENCHMARKS.md | 9 ++- .../standard_scoring_ai_vs_ai_smoke.csv | 26 +++---- .../standard_scoring_ai_vs_ai_smoke.md | 26 +++---- ...ard_scoring_all40_post_bugfix_baseline.csv | 72 +++++++++---------- ...dard_scoring_all40_post_bugfix_baseline.md | 11 +-- .../standard_scoring_all40_real_vs_sim.csv | 32 ++++----- .../standard_scoring_all40_real_vs_sim.md | 32 ++++----- 7 files changed, 108 insertions(+), 100 deletions(-) diff --git a/docs/SHARDOK_AI_SCORING_BENCHMARKS.md b/docs/SHARDOK_AI_SCORING_BENCHMARKS.md index d84c2d0205..29580a41f5 100644 --- a/docs/SHARDOK_AI_SCORING_BENCHMARKS.md +++ b/docs/SHARDOK_AI_SCORING_BENCHMARKS.md @@ -8,6 +8,7 @@ The corrected all-40 run uses: - `max_rounds = 31` - `random_seed = 1` +- iterative-deepening timeout propagation fix from PR #6923 - AI setup placement - forced single-option commands - defender scoring fixed to `STANDARD` for every row @@ -33,9 +34,11 @@ An AI-vs-AI smoke check also reruns a subset where neither side used faction `3` ## Current Results +These artifacts are the current baseline for future scoring comparisons. + | Dataset | Valid battles | Invalid rows | Attacker wins | Defender wins | Notes | | --- | ---: | ---: | ---: | ---: | --- | -| All-40 expected-impact archery baseline | 40 | 0 | 18 | 22 | `standard_scoring_all40_post_bugfix_baseline.*`; regenerated after promoting experiment 34 to STANDARD | +| All-40 timeout-fix STANDARD baseline | 40 | 0 | 18 | 22 | `standard_scoring_all40_post_bugfix_baseline.*`; regenerated after fixing iterative-deepening timeout score propagation | | All-40 real saved game | 40 known | 0 unknown | 19 | 21 | `standard_scoring_all40_real_vs_sim.*`; sim matches 39/40 known winners | | AI-vs-AI smoke | 31 | 0 | 10 | 21 | 31/31 winner-side matches | @@ -73,3 +76,7 @@ Expected-impact archery replaced the old flat archery-position value in STANDARD shoot now gets half of the expected volley impact; a unit that is merely positioned for a future volley gets one quarter. Promoting that behavior flips `6248` to match the real AI-vs-AI attacker win without introducing an AI-vs-AI winner-side miss in the current saved-battle baseline. + +The latest baseline refresh was generated after the iterative-deepening evaluator stopped letting +timeout fallback scores compete with completed command evaluations. Future STANDARD-vs-EXPERIMENTAL +comparisons should compare against these checked-in timeout-fix baseline artifacts. diff --git a/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_ai_vs_ai_smoke.csv b/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_ai_vs_ai_smoke.csv index d757bc0c71..64fe89da63 100644 --- a/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_ai_vs_ai_smoke.csv +++ b/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_ai_vs_ai_smoke.csv @@ -1,32 +1,32 @@ action_seq,shardok_game_id,attacker_factions,defender_factions,real_winner,sim_winner,winner_match,real_round,sim_round,real_attacker_troops,real_defender_troops,sim_attacker_troops,sim_defender_troops -306,389ffb1901903118_1_b3e7d8ab,1,2,attacker,attacker,true,0,17,1454,0,1343,0 +306,389ffb1901903118_1_b3e7d8ab,1,2,attacker,attacker,true,0,19,1454,0,1388,0 307,389ffb1901903118_2_bf499d3c,2,1,defender,defender,true,0,16,0,699,0,648 399,389ffb1901903118_3_cd9141a,2,1,defender,defender,true,0,6,0,1310,0,1315 631,389ffb1901903118_4_6e7b9b,1,2,defender,defender,true,0,5,0,3766,0,3654 1326,389ffb1901903118_5_8a57255a,9,6,attacker,attacker,true,0,11,1715,0,1701,0 -2437,389ffb1901903118_7_5cf74e0,2,1,attacker,attacker,true,0,15,3146,0,3219,0 -2584,389ffb1901903118_8_41ce0ebd,1,2,defender,defender,true,0,30,0,2028,0,174 +2437,389ffb1901903118_7_5cf74e0,2,1,attacker,attacker,true,0,16,3146,0,3247,0 +2584,389ffb1901903118_8_41ce0ebd,1,2,defender,defender,true,0,31,0,2028,0,168 2654,389ffb1901903118_9_eb43d421,2,1,defender,defender,true,0,28,0,335,0,467 -3536,389ffb1901903118_a_950de1c1,1,2,attacker,attacker,true,0,16,2172,0,1596,0 -3701,389ffb1901903118_b_5d1d76e0,8,2,defender,defender,true,0,30,0,2819,0,1344 +3536,389ffb1901903118_a_950de1c1,1,2,attacker,attacker,true,0,12,2172,0,2528,0 +3701,389ffb1901903118_b_5d1d76e0,8,2,defender,defender,true,0,30,0,2819,0,1348 4298,389ffb1901903118_c_7bdb54dd,2,1,defender,defender,true,0,3,0,3514,0,1977 -4576,389ffb1901903118_d_689ee2fa,2,1,defender,defender,true,0,5,0,2028,0,1920 -6014,389ffb1901903118_e_89c90dc6,2,8,defender,defender,true,0,12,0,1942,0,1474 +4576,389ffb1901903118_d_689ee2fa,2,1,defender,defender,true,0,4,0,2028,0,1986 +6014,389ffb1901903118_e_89c90dc6,2,8,defender,defender,true,0,6,0,1942,0,2252 6248,389ffb1901903118_f_3a9d9136,7,9,attacker,attacker,true,0,25,520,0,676,0 -6705,389ffb1901903118_11_e0611233,1,2,defender,defender,true,0,31,0,3316,0,702 +6705,389ffb1901903118_11_e0611233,1,2,defender,defender,true,0,31,0,3316,0,535 7212,389ffb1901903118_12_84a36154,2,8,defender,defender,true,0,8,0,1253,0,1273 -8217,389ffb1901903118_13_2e98b1cf,8,2,attacker,attacker,true,0,29,920,0,1892,0 +8217,389ffb1901903118_13_2e98b1cf,8,2,attacker,attacker,true,0,22,920,0,2167,0 8394,389ffb1901903118_14_b5570863,2,8,attacker,attacker,true,0,9,2449,0,3186,0 -9975,389ffb1901903118_16_3d6ec341,2,1,defender,defender,true,0,5,0,7420,0,7437 +9975,389ffb1901903118_16_3d6ec341,2,1,defender,defender,true,0,4,0,7420,0,7840 10229,389ffb1901903118_17_3ba689e3,5,7,attacker,attacker,true,0,23,2135,0,1816,0 10631,389ffb1901903118_18_9e463db3,1,2,attacker,attacker,true,0,1,4000,0,4000,0 -11011,389ffb1901903118_19_239725d3,2,1,defender,defender,true,0,4,0,3532,0,3593 +11011,389ffb1901903118_19_239725d3,2,1,defender,defender,true,0,5,0,3532,0,3658 11012,389ffb1901903118_1a_16e1ebf,9,6,defender,defender,true,0,30,0,846,0,1347 11297,389ffb1901903118_1c_529ba6e5,1,2,attacker,attacker,true,0,1,2400,0,2400,0 11469,389ffb1901903118_1d_49993012,5,9,defender,defender,true,0,8,0,787,0,1489 -11470,389ffb1901903118_1e_fd8c60a8,7,5,attacker,attacker,true,0,12,3220,0,3400,0 +11470,389ffb1901903118_1e_fd8c60a8,7,5,attacker,attacker,true,0,17,3220,0,3425,0 11565,389ffb1901903118_1f_53309484,5,7,defender,defender,true,0,31,190,3420,78,3600 12136,389ffb1901903118_24_f0d61a5a,9,7,attacker,attacker,true,0,21,1829,0,1581,0 12137,389ffb1901903118_25_a19c4d87,2,1,defender,defender,true,0,8,0,1894,0,1892 -12765,389ffb1901903118_27_c008989b,6,9,defender,defender,true,0,9,0,1773,0,1747 +12765,389ffb1901903118_27_c008989b,6,9,defender,defender,true,0,11,0,1773,0,1763 13752,389ffb1901903118_28_b33e2868,2,1,defender,defender,true,0,7,0,943,0,932 diff --git a/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_ai_vs_ai_smoke.md b/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_ai_vs_ai_smoke.md index 7ddb6c5dab..44b9ce5c58 100644 --- a/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_ai_vs_ai_smoke.md +++ b/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_ai_vs_ai_smoke.md @@ -12,34 +12,34 @@ than an exact replay assertion. | Action seq | Factions | Real winner | Sim winner | Real troops | Sim troops | | ---: | --- | --- | --- | ---: | ---: | -| 306 | 1 vs 2 | attacker | attacker | 1454 vs 0 | 1343 vs 0 | +| 306 | 1 vs 2 | attacker | attacker | 1454 vs 0 | 1388 vs 0 | | 307 | 2 vs 1 | defender | defender | 0 vs 699 | 0 vs 648 | | 399 | 2 vs 1 | defender | defender | 0 vs 1310 | 0 vs 1315 | | 631 | 1 vs 2 | defender | defender | 0 vs 3766 | 0 vs 3654 | | 1326 | 9 vs 6 | attacker | attacker | 1715 vs 0 | 1701 vs 0 | -| 2437 | 2 vs 1 | attacker | attacker | 3146 vs 0 | 3219 vs 0 | -| 2584 | 1 vs 2 | defender | defender | 0 vs 2028 | 0 vs 174 | +| 2437 | 2 vs 1 | attacker | attacker | 3146 vs 0 | 3247 vs 0 | +| 2584 | 1 vs 2 | defender | defender | 0 vs 2028 | 0 vs 168 | | 2654 | 2 vs 1 | defender | defender | 0 vs 335 | 0 vs 467 | -| 3536 | 1 vs 2 | attacker | attacker | 2172 vs 0 | 1596 vs 0 | -| 3701 | 8 vs 2 | defender | defender | 0 vs 2819 | 0 vs 1344 | +| 3536 | 1 vs 2 | attacker | attacker | 2172 vs 0 | 2528 vs 0 | +| 3701 | 8 vs 2 | defender | defender | 0 vs 2819 | 0 vs 1348 | | 4298 | 2 vs 1 | defender | defender | 0 vs 3514 | 0 vs 1977 | -| 4576 | 2 vs 1 | defender | defender | 0 vs 2028 | 0 vs 1920 | -| 6014 | 2 vs 8 | defender | defender | 0 vs 1942 | 0 vs 1474 | +| 4576 | 2 vs 1 | defender | defender | 0 vs 2028 | 0 vs 1986 | +| 6014 | 2 vs 8 | defender | defender | 0 vs 1942 | 0 vs 2252 | | 6248 | 7 vs 9 | attacker | attacker | 520 vs 0 | 676 vs 0 | -| 6705 | 1 vs 2 | defender | defender | 0 vs 3316 | 0 vs 702 | +| 6705 | 1 vs 2 | defender | defender | 0 vs 3316 | 0 vs 535 | | 7212 | 2 vs 8 | defender | defender | 0 vs 1253 | 0 vs 1273 | -| 8217 | 8 vs 2 | attacker | attacker | 920 vs 0 | 1892 vs 0 | +| 8217 | 8 vs 2 | attacker | attacker | 920 vs 0 | 2167 vs 0 | | 8394 | 2 vs 8 | attacker | attacker | 2449 vs 0 | 3186 vs 0 | -| 9975 | 2 vs 1 | defender | defender | 0 vs 7420 | 0 vs 7437 | +| 9975 | 2 vs 1 | defender | defender | 0 vs 7420 | 0 vs 7840 | | 10229 | 5 vs 7 | attacker | attacker | 2135 vs 0 | 1816 vs 0 | | 10631 | 1 vs 2 | attacker | attacker | 4000 vs 0 | 4000 vs 0 | -| 11011 | 2 vs 1 | defender | defender | 0 vs 3532 | 0 vs 3593 | +| 11011 | 2 vs 1 | defender | defender | 0 vs 3532 | 0 vs 3658 | | 11012 | 9 vs 6 | defender | defender | 0 vs 846 | 0 vs 1347 | | 11297 | 1 vs 2 | attacker | attacker | 2400 vs 0 | 2400 vs 0 | | 11469 | 5 vs 9 | defender | defender | 0 vs 787 | 0 vs 1489 | -| 11470 | 7 vs 5 | attacker | attacker | 3220 vs 0 | 3400 vs 0 | +| 11470 | 7 vs 5 | attacker | attacker | 3220 vs 0 | 3425 vs 0 | | 11565 | 5 vs 7 | defender | defender | 190 vs 3420 | 78 vs 3600 | | 12136 | 9 vs 7 | attacker | attacker | 1829 vs 0 | 1581 vs 0 | | 12137 | 2 vs 1 | defender | defender | 0 vs 1894 | 0 vs 1892 | -| 12765 | 6 vs 9 | defender | defender | 0 vs 1773 | 0 vs 1747 | +| 12765 | 6 vs 9 | defender | defender | 0 vs 1773 | 0 vs 1763 | | 13752 | 2 vs 1 | defender | defender | 0 vs 943 | 0 vs 932 | diff --git a/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_all40_post_bugfix_baseline.csv b/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_all40_post_bugfix_baseline.csv index f448cc65a5..4c38b01bd5 100644 --- a/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_all40_post_bugfix_baseline.csv +++ b/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_all40_post_bugfix_baseline.csv @@ -1,41 +1,41 @@ variant,action_seq,config,winner,end_reason,result,total_rounds,total_commands,attacker_ai_commands,defender_ai_commands,attacker_avg_depth,defender_avg_depth,attacker_surviving_units,defender_surviving_units,attacker_surviving_troops,defender_surviving_troops,elapsed_seconds -expected_impact_archery_standard_baseline,306,/private/tmp/eagle0-standard-baselines/configs/306_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,17,85,38,23,4.57895,3.30435,2,0,1343,0, -expected_impact_archery_standard_baseline,307,/private/tmp/eagle0-standard-baselines/configs/307_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,16,74,36,15,3.55556,2.86667,0,1,0,648, +expected_impact_archery_standard_baseline,306,/private/tmp/eagle0-standard-baselines/configs/306_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,19,99,41,32,4.04878,3.65625,2,0,1388,0, +expected_impact_archery_standard_baseline,307,/private/tmp/eagle0-standard-baselines/configs/307_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,16,75,37,15,3.54054,2.86667,0,1,0,648, expected_impact_archery_standard_baseline,399,/private/tmp/eagle0-standard-baselines/configs/399_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,6,30,7,14,3,3.85714,0,3,0,1315, -expected_impact_archery_standard_baseline,631,/private/tmp/eagle0-standard-baselines/configs/631_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,5,38,12,14,3.58333,3.85714,0,5,0,3654, -expected_impact_archery_standard_baseline,1326,/private/tmp/eagle0-standard-baselines/configs/1326_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,11,72,34,19,3.35294,3.63158,2,0,1701,0, -expected_impact_archery_standard_baseline,1472,/private/tmp/eagle0-standard-baselines/configs/1472_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,31,143,59,67,3.27119,3.50746,0,2,0,944, -expected_impact_archery_standard_baseline,2437,/private/tmp/eagle0-standard-baselines/configs/2437_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,15,141,86,38,3.2093,3.18421,5,0,3219,0, -expected_impact_archery_standard_baseline,2584,/private/tmp/eagle0-standard-baselines/configs/2584_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,30,183,45,78,3.6,3.34615,0,1,0,174, -expected_impact_archery_standard_baseline,2654,/private/tmp/eagle0-standard-baselines/configs/2654_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,28,198,78,72,3.21795,4.02778,0,2,0,467, -expected_impact_archery_standard_baseline,3536,/private/tmp/eagle0-standard-baselines/configs/3536_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,16,155,78,42,3.5641,2.95238,3,0,1596,0, -expected_impact_archery_standard_baseline,3701,/private/tmp/eagle0-standard-baselines/configs/3701_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,30,152,57,71,3.33333,3.11268,0,4,0,1344, -expected_impact_archery_standard_baseline,4298,/private/tmp/eagle0-standard-baselines/configs/4298_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,3,39,14,11,3,3,0,6,0,1977, -expected_impact_archery_standard_baseline,4576,/private/tmp/eagle0-standard-baselines/configs/4576_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,5,52,31,9,3.16129,3,0,3,0,1920, -expected_impact_archery_standard_baseline,6014,/private/tmp/eagle0-standard-baselines/configs/6014_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,12,67,35,17,3.31429,3.52941,0,2,0,1474, -expected_impact_archery_standard_baseline,6248,/private/tmp/eagle0-standard-baselines/configs/6248_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,25,153,75,46,3.68,2.86957,2,0,676,0, -expected_impact_archery_standard_baseline,6408,/private/tmp/eagle0-standard-baselines/configs/6408_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,10,103,67,17,3.49254,3.88235,5,0,4022,0, -expected_impact_archery_standard_baseline,6705,/private/tmp/eagle0-standard-baselines/configs/6705_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,31,188,75,82,3.09333,3.53659,0,3,0,702, +expected_impact_archery_standard_baseline,631,/private/tmp/eagle0-standard-baselines/configs/631_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,5,38,12,14,3.58333,4.14286,0,5,0,3654, +expected_impact_archery_standard_baseline,1326,/private/tmp/eagle0-standard-baselines/configs/1326_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,11,72,34,19,3.26471,3.63158,2,0,1701,0, +expected_impact_archery_standard_baseline,1472,/private/tmp/eagle0-standard-baselines/configs/1472_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,31,143,59,67,3.25424,3.46269,0,2,0,944, +expected_impact_archery_standard_baseline,2437,/private/tmp/eagle0-standard-baselines/configs/2437_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,16,148,89,43,3.37079,3.32558,5,0,3247,0, +expected_impact_archery_standard_baseline,2584,/private/tmp/eagle0-standard-baselines/configs/2584_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,31,190,48,85,3.45833,3.16471,0,1,0,168, +expected_impact_archery_standard_baseline,2654,/private/tmp/eagle0-standard-baselines/configs/2654_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,28,198,78,72,3.19231,4.04167,0,2,0,467, +expected_impact_archery_standard_baseline,3536,/private/tmp/eagle0-standard-baselines/configs/3536_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,12,120,57,36,3.40351,2.88889,4,0,2528,0, +expected_impact_archery_standard_baseline,3701,/private/tmp/eagle0-standard-baselines/configs/3701_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,30,155,62,70,3.5,3.24286,0,4,0,1348, +expected_impact_archery_standard_baseline,4298,/private/tmp/eagle0-standard-baselines/configs/4298_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,3,38,13,11,3.07692,2.90909,0,6,0,1977, +expected_impact_archery_standard_baseline,4576,/private/tmp/eagle0-standard-baselines/configs/4576_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,4,35,17,7,3,3.28571,0,3,0,1986, +expected_impact_archery_standard_baseline,6014,/private/tmp/eagle0-standard-baselines/configs/6014_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,6,39,20,7,3.15,3.42857,0,3,0,2252, +expected_impact_archery_standard_baseline,6248,/private/tmp/eagle0-standard-baselines/configs/6248_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,25,153,75,46,3.65333,2.8913,2,0,676,0, +expected_impact_archery_standard_baseline,6408,/private/tmp/eagle0-standard-baselines/configs/6408_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,11,107,68,18,3.5,3.33333,5,0,4020,0, +expected_impact_archery_standard_baseline,6705,/private/tmp/eagle0-standard-baselines/configs/6705_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,31,205,87,86,3.01149,3.74419,0,2,0,535, expected_impact_archery_standard_baseline,7212,/private/tmp/eagle0-standard-baselines/configs/7212_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,8,39,18,11,3.38889,3.63636,0,2,0,1273, -expected_impact_archery_standard_baseline,8217,/private/tmp/eagle0-standard-baselines/configs/8217_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,29,197,97,58,3.42268,3.44828,3,0,1892,0, -expected_impact_archery_standard_baseline,8394,/private/tmp/eagle0-standard-baselines/configs/8394_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,9,81,48,17,3.29167,2.64706,4,0,3186,0, -expected_impact_archery_standard_baseline,8628,/private/tmp/eagle0-standard-baselines/configs/8628_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,5,41,27,3,3,2.33333,4,0,2760,0, -expected_impact_archery_standard_baseline,9975,/private/tmp/eagle0-standard-baselines/configs/9975_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,5,80,24,35,2.79167,2.22857,0,10,0,7437, -expected_impact_archery_standard_baseline,10229,/private/tmp/eagle0-standard-baselines/configs/10229_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,23,105,58,4,3.63793,3,3,0,1816,0, -expected_impact_archery_standard_baseline,10631,/private/tmp/eagle0-standard-baselines/configs/10631_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,1,16,7,1,2.85714,3,5,1,4000,0, -expected_impact_archery_standard_baseline,11011,/private/tmp/eagle0-standard-baselines/configs/11011_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,4,47,16,18,3.4375,3.22222,0,5,0,3593, -expected_impact_archery_standard_baseline,11012,/private/tmp/eagle0-standard-baselines/configs/11012_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,30,146,47,67,3.44681,3.64179,0,3,0,1347, -expected_impact_archery_standard_baseline,11112,/private/tmp/eagle0-standard-baselines/configs/11112_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,3,31,7,8,3.14286,2,0,11,0,7595, +expected_impact_archery_standard_baseline,8217,/private/tmp/eagle0-standard-baselines/configs/8217_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,22,164,79,49,3.35443,3.08163,3,0,2167,0, +expected_impact_archery_standard_baseline,8394,/private/tmp/eagle0-standard-baselines/configs/8394_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,9,81,48,17,3.25,2.64706,4,0,3186,0, +expected_impact_archery_standard_baseline,8628,/private/tmp/eagle0-standard-baselines/configs/8628_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,5,41,27,3,2.96296,2,4,0,2760,0, +expected_impact_archery_standard_baseline,9975,/private/tmp/eagle0-standard-baselines/configs/9975_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,4,70,23,27,2.65217,2.40741,0,10,0,7840, +expected_impact_archery_standard_baseline,10229,/private/tmp/eagle0-standard-baselines/configs/10229_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,23,104,57,4,3.77193,3,3,0,1816,0, +expected_impact_archery_standard_baseline,10631,/private/tmp/eagle0-standard-baselines/configs/10631_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,1,16,7,1,3,3,5,1,4000,0, +expected_impact_archery_standard_baseline,11011,/private/tmp/eagle0-standard-baselines/configs/11011_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,5,51,22,18,3.5,3,0,5,0,3658, +expected_impact_archery_standard_baseline,11012,/private/tmp/eagle0-standard-baselines/configs/11012_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,30,146,47,67,3.40426,3.62687,0,3,0,1347, +expected_impact_archery_standard_baseline,11112,/private/tmp/eagle0-standard-baselines/configs/11112_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,3,31,7,8,3.42857,2,0,11,0,7595, expected_impact_archery_standard_baseline,11297,/private/tmp/eagle0-standard-baselines/configs/11297_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,1,13,5,1,3,3,3,1,2400,0, -expected_impact_archery_standard_baseline,11469,/private/tmp/eagle0-standard-baselines/configs/11469_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,8,58,30,12,3.2,3.16667,0,2,0,1489, -expected_impact_archery_standard_baseline,11470,/private/tmp/eagle0-standard-baselines/configs/11470_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,12,104,68,20,3.44118,3,4,0,3400,0, -expected_impact_archery_standard_baseline,11565,/private/tmp/eagle0-standard-baselines/configs/11565_standard.json,defender,max_rounds_reached,Defender won by surviving maximum rounds,31,103,30,34,4.26667,3.61765,1,4,78,3600, -expected_impact_archery_standard_baseline,11662,/private/tmp/eagle0-standard-baselines/configs/11662_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,9,133,98,18,2.86735,3.61111,9,0,6627,0, -expected_impact_archery_standard_baseline,11754,/private/tmp/eagle0-standard-baselines/configs/11754_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,30,163,72,76,3.22222,3.26316,0,3,0,1000, -expected_impact_archery_standard_baseline,11941,/private/tmp/eagle0-standard-baselines/configs/11941_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,6,64,44,7,3.11364,3,6,0,4777,0, -expected_impact_archery_standard_baseline,11942,/private/tmp/eagle0-standard-baselines/configs/11942_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,5,91,59,16,2.61017,3.375,12,0,8572,0, -expected_impact_archery_standard_baseline,12136,/private/tmp/eagle0-standard-baselines/configs/12136_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,21,141,79,34,3.72152,4.52941,3,0,1581,0, -expected_impact_archery_standard_baseline,12137,/private/tmp/eagle0-standard-baselines/configs/12137_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,8,50,19,17,3.21053,3.11765,0,3,0,1892, -expected_impact_archery_standard_baseline,12138,/private/tmp/eagle0-standard-baselines/configs/12138_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,13,98,68,16,3.45588,2.875,2,0,1758,0, -expected_impact_archery_standard_baseline,12765,/private/tmp/eagle0-standard-baselines/configs/12765_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,9,40,21,10,3.66667,3.2,0,2,0,1747, +expected_impact_archery_standard_baseline,11469,/private/tmp/eagle0-standard-baselines/configs/11469_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,8,58,30,12,3.16667,3.16667,0,2,0,1489, +expected_impact_archery_standard_baseline,11470,/private/tmp/eagle0-standard-baselines/configs/11470_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,17,99,65,22,3.50769,2.68182,4,0,3425,0, +expected_impact_archery_standard_baseline,11565,/private/tmp/eagle0-standard-baselines/configs/11565_standard.json,defender,max_rounds_reached,Defender won by surviving maximum rounds,31,103,30,34,4.26667,3.91176,1,4,78,3600, +expected_impact_archery_standard_baseline,11662,/private/tmp/eagle0-standard-baselines/configs/11662_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,8,120,85,17,2.85882,3.23529,9,0,6624,0, +expected_impact_archery_standard_baseline,11754,/private/tmp/eagle0-standard-baselines/configs/11754_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,30,163,72,76,3.31944,3.28947,0,3,0,1000, +expected_impact_archery_standard_baseline,11941,/private/tmp/eagle0-standard-baselines/configs/11941_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,6,64,44,7,3.25,3,6,0,4777,0, +expected_impact_archery_standard_baseline,11942,/private/tmp/eagle0-standard-baselines/configs/11942_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,5,91,59,16,2.64407,3.375,12,0,8572,0, +expected_impact_archery_standard_baseline,12136,/private/tmp/eagle0-standard-baselines/configs/12136_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,21,141,79,34,3.70886,4.52941,3,0,1581,0, +expected_impact_archery_standard_baseline,12137,/private/tmp/eagle0-standard-baselines/configs/12137_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,8,50,19,17,3.21053,3.29412,0,3,0,1892, +expected_impact_archery_standard_baseline,12138,/private/tmp/eagle0-standard-baselines/configs/12138_standard.json,attacker,last_player_standing,Attacker won by eliminating all defenders,14,102,69,16,3.43478,2.9375,3,0,2512,0, +expected_impact_archery_standard_baseline,12765,/private/tmp/eagle0-standard-baselines/configs/12765_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,11,46,26,11,3.61538,3.09091,0,2,0,1763, expected_impact_archery_standard_baseline,13752,/private/tmp/eagle0-standard-baselines/configs/13752_standard.json,defender,last_player_standing,Defender won by eliminating all attackers,7,38,16,10,3.5,3.3,0,2,0,932, diff --git a/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_all40_post_bugfix_baseline.md b/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_all40_post_bugfix_baseline.md index 88a85eacc3..8064bcb10b 100644 --- a/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_all40_post_bugfix_baseline.md +++ b/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_all40_post_bugfix_baseline.md @@ -1,6 +1,7 @@ # STANDARD Scoring All-40 Baseline -This baseline was regenerated after promoting expected-impact archery scoring to STANDARD. +This baseline is the current comparison baseline for STANDARD scoring experiments. It was +regenerated after fixing iterative-deepening timeout score propagation. Generated battle configs preserve archery/start-fire capability, per-unit flee capability, explicit zero-size battalions, no-profession heroes, forced commands, seed `1`, and the 31-round defender timeout. @@ -25,15 +26,15 @@ Survivor margin is `attacker_surviving_troops - defender_surviving_troops`. | Action seq | Winner | End reason | Attacker troops | Defender troops | Margin | | ---: | --- | --- | ---: | ---: | ---: | -| 2584 | defender | last_player_standing | 0 | 174 | -174 | +| 2584 | defender | last_player_standing | 0 | 168 | -168 | | 2654 | defender | last_player_standing | 0 | 467 | -467 | +| 6705 | defender | last_player_standing | 0 | 535 | -535 | | 307 | defender | last_player_standing | 0 | 648 | -648 | | 6248 | attacker | last_player_standing | 676 | 0 | +676 | -| 6705 | defender | last_player_standing | 0 | 702 | -702 | | 13752 | defender | last_player_standing | 0 | 932 | -932 | | 1472 | defender | last_player_standing | 0 | 944 | -944 | | 11754 | defender | last_player_standing | 0 | 1000 | -1000 | | 7212 | defender | last_player_standing | 0 | 1273 | -1273 | | 399 | defender | last_player_standing | 0 | 1315 | -1315 | -| 306 | attacker | last_player_standing | 1343 | 0 | +1343 | -| 3701 | defender | last_player_standing | 0 | 1344 | -1344 | +| 11012 | defender | last_player_standing | 0 | 1347 | -1347 | +| 3701 | defender | last_player_standing | 0 | 1348 | -1348 | diff --git a/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_all40_real_vs_sim.csv b/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_all40_real_vs_sim.csv index 47b301f438..b0259f6088 100644 --- a/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_all40_real_vs_sim.csv +++ b/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_all40_real_vs_sim.csv @@ -1,41 +1,41 @@ action_seq,attacker_factions,attacker_player,defender_factions,defender_player,ai_vs_ai,real_winner,sim_winner,winner_match,real_round,sim_round,real_attacker_troops,real_defender_troops,sim_attacker_troops,sim_defender_troops -306,1,AI,2,AI,true,attacker,attacker,true,0,17,1454,0,1343,0 +306,1,AI,2,AI,true,attacker,attacker,true,0,19,1454,0,1388,0 307,2,AI,1,AI,true,defender,defender,true,0,16,0,699,0,648 399,2,AI,1,AI,true,defender,defender,true,0,6,0,1310,0,1315 631,1,AI,2,AI,true,defender,defender,true,0,5,0,3766,0,3654 1326,9,AI,6,AI,true,attacker,attacker,true,0,11,1715,0,1701,0 1472,8,AI,3,human,false,defender,defender,true,0,31,0,1593,0,944 -2437,2,AI,1,AI,true,attacker,attacker,true,0,15,3146,0,3219,0 -2584,1,AI,2,AI,true,defender,defender,true,0,30,0,2028,0,174 +2437,2,AI,1,AI,true,attacker,attacker,true,0,16,3146,0,3247,0 +2584,1,AI,2,AI,true,defender,defender,true,0,31,0,2028,0,168 2654,2,AI,1,AI,true,defender,defender,true,0,28,0,335,0,467 -3536,1,AI,2,AI,true,attacker,attacker,true,0,16,2172,0,1596,0 -3701,8,AI,2,AI,true,defender,defender,true,0,30,0,2819,0,1344 +3536,1,AI,2,AI,true,attacker,attacker,true,0,12,2172,0,2528,0 +3701,8,AI,2,AI,true,defender,defender,true,0,30,0,2819,0,1348 4298,2,AI,1,AI,true,defender,defender,true,0,3,0,3514,0,1977 -4576,2,AI,1,AI,true,defender,defender,true,0,5,0,2028,0,1920 -6014,2,AI,8,AI,true,defender,defender,true,0,12,0,1942,0,1474 +4576,2,AI,1,AI,true,defender,defender,true,0,4,0,2028,0,1986 +6014,2,AI,8,AI,true,defender,defender,true,0,6,0,1942,0,2252 6248,7,AI,9,AI,true,attacker,attacker,true,0,25,520,0,676,0 -6408,4,human,7,AI,false,attacker,attacker,true,0,10,4156,0,4022,0 -6705,1,AI,2,AI,true,defender,defender,true,0,31,0,3316,0,702 +6408,4,human,7,AI,false,attacker,attacker,true,0,11,4156,0,4020,0 +6705,1,AI,2,AI,true,defender,defender,true,0,31,0,3316,0,535 7212,2,AI,8,AI,true,defender,defender,true,0,8,0,1253,0,1273 -8217,8,AI,2,AI,true,attacker,attacker,true,0,29,920,0,1892,0 +8217,8,AI,2,AI,true,attacker,attacker,true,0,22,920,0,2167,0 8394,2,AI,8,AI,true,attacker,attacker,true,0,9,2449,0,3186,0 8628,3,human,8,AI,false,attacker,attacker,true,0,5,2874,0,2760,0 -9975,2,AI,1,AI,true,defender,defender,true,0,5,0,7420,0,7437 +9975,2,AI,1,AI,true,defender,defender,true,0,4,0,7420,0,7840 10229,5,AI,7,AI,true,attacker,attacker,true,0,23,2135,0,1816,0 10631,1,AI,2,AI,true,attacker,attacker,true,0,1,4000,0,4000,0 -11011,2,AI,1,AI,true,defender,defender,true,0,4,0,3532,0,3593 +11011,2,AI,1,AI,true,defender,defender,true,0,5,0,3532,0,3658 11012,9,AI,6,AI,true,defender,defender,true,0,30,0,846,0,1347 11112,5,AI,4,human,false,defender,defender,true,0,3,0,7595,0,7595 11297,1,AI,2,AI,true,attacker,attacker,true,0,1,2400,0,2400,0 11469,5,AI,9,AI,true,defender,defender,true,0,8,0,787,0,1489 -11470,7,AI,5,AI,true,attacker,attacker,true,0,12,3220,0,3400,0 +11470,7,AI,5,AI,true,attacker,attacker,true,0,17,3220,0,3425,0 11565,5,AI,7,AI,true,defender,defender,true,0,31,190,3420,78,3600 -11662,4,human,9,AI,false,attacker,attacker,true,0,9,7326,0,6627,0 +11662,4,human,9,AI,false,attacker,attacker,true,0,8,7326,0,6624,0 11754,7,AI,4,human,false,attacker,defender,false,0,30,2119,0,0,1000 11941,3,human,5,AI,false,attacker,attacker,true,0,6,4901,0,4777,0 11942,4,human,7,AI,false,attacker,attacker,true,0,5,8840,0,8572,0 12136,9,AI,7,AI,true,attacker,attacker,true,0,21,1829,0,1581,0 12137,2,AI,1,AI,true,defender,defender,true,0,8,0,1894,0,1892 -12138,3,human,5,AI,false,attacker,attacker,true,0,13,2960,0,1758,0 -12765,6,AI,9,AI,true,defender,defender,true,0,9,0,1773,0,1747 +12138,3,human,5,AI,false,attacker,attacker,true,0,14,2960,0,2512,0 +12765,6,AI,9,AI,true,defender,defender,true,0,11,0,1773,0,1763 13752,2,AI,1,AI,true,defender,defender,true,0,7,0,943,0,932 diff --git a/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_all40_real_vs_sim.md b/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_all40_real_vs_sim.md index c978deb6c5..9d26d6f09f 100644 --- a/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_all40_real_vs_sim.md +++ b/src/main/cpp/net/eagle0/shardok/ai_battle_simulator/benchmarks/experimental_results/standard_scoring_all40_real_vs_sim.md @@ -14,43 +14,43 @@ factions are marked as AI players. | Action seq | Attacker | Defender | Real winner | Sim winner | Match | Real troops | Sim troops | | ---: | --- | --- | --- | --- | --- | ---: | ---: | -| 306 | 1 (AI) | 2 (AI) | attacker | attacker | yes | 1454 vs 0 | 1343 vs 0 | +| 306 | 1 (AI) | 2 (AI) | attacker | attacker | yes | 1454 vs 0 | 1388 vs 0 | | 307 | 2 (AI) | 1 (AI) | defender | defender | yes | 0 vs 699 | 0 vs 648 | | 399 | 2 (AI) | 1 (AI) | defender | defender | yes | 0 vs 1310 | 0 vs 1315 | | 631 | 1 (AI) | 2 (AI) | defender | defender | yes | 0 vs 3766 | 0 vs 3654 | | 1326 | 9 (AI) | 6 (AI) | attacker | attacker | yes | 1715 vs 0 | 1701 vs 0 | | 1472 | 8 (AI) | 3 (human) | defender | defender | yes | 0 vs 1593 | 0 vs 944 | -| 2437 | 2 (AI) | 1 (AI) | attacker | attacker | yes | 3146 vs 0 | 3219 vs 0 | -| 2584 | 1 (AI) | 2 (AI) | defender | defender | yes | 0 vs 2028 | 0 vs 174 | +| 2437 | 2 (AI) | 1 (AI) | attacker | attacker | yes | 3146 vs 0 | 3247 vs 0 | +| 2584 | 1 (AI) | 2 (AI) | defender | defender | yes | 0 vs 2028 | 0 vs 168 | | 2654 | 2 (AI) | 1 (AI) | defender | defender | yes | 0 vs 335 | 0 vs 467 | -| 3536 | 1 (AI) | 2 (AI) | attacker | attacker | yes | 2172 vs 0 | 1596 vs 0 | -| 3701 | 8 (AI) | 2 (AI) | defender | defender | yes | 0 vs 2819 | 0 vs 1344 | +| 3536 | 1 (AI) | 2 (AI) | attacker | attacker | yes | 2172 vs 0 | 2528 vs 0 | +| 3701 | 8 (AI) | 2 (AI) | defender | defender | yes | 0 vs 2819 | 0 vs 1348 | | 4298 | 2 (AI) | 1 (AI) | defender | defender | yes | 0 vs 3514 | 0 vs 1977 | -| 4576 | 2 (AI) | 1 (AI) | defender | defender | yes | 0 vs 2028 | 0 vs 1920 | -| 6014 | 2 (AI) | 8 (AI) | defender | defender | yes | 0 vs 1942 | 0 vs 1474 | +| 4576 | 2 (AI) | 1 (AI) | defender | defender | yes | 0 vs 2028 | 0 vs 1986 | +| 6014 | 2 (AI) | 8 (AI) | defender | defender | yes | 0 vs 1942 | 0 vs 2252 | | 6248 | 7 (AI) | 9 (AI) | attacker | attacker | yes | 520 vs 0 | 676 vs 0 | -| 6408 | 4 (human) | 7 (AI) | attacker | attacker | yes | 4156 vs 0 | 4022 vs 0 | -| 6705 | 1 (AI) | 2 (AI) | defender | defender | yes | 0 vs 3316 | 0 vs 702 | +| 6408 | 4 (human) | 7 (AI) | attacker | attacker | yes | 4156 vs 0 | 4020 vs 0 | +| 6705 | 1 (AI) | 2 (AI) | defender | defender | yes | 0 vs 3316 | 0 vs 535 | | 7212 | 2 (AI) | 8 (AI) | defender | defender | yes | 0 vs 1253 | 0 vs 1273 | -| 8217 | 8 (AI) | 2 (AI) | attacker | attacker | yes | 920 vs 0 | 1892 vs 0 | +| 8217 | 8 (AI) | 2 (AI) | attacker | attacker | yes | 920 vs 0 | 2167 vs 0 | | 8394 | 2 (AI) | 8 (AI) | attacker | attacker | yes | 2449 vs 0 | 3186 vs 0 | | 8628 | 3 (human) | 8 (AI) | attacker | attacker | yes | 2874 vs 0 | 2760 vs 0 | -| 9975 | 2 (AI) | 1 (AI) | defender | defender | yes | 0 vs 7420 | 0 vs 7437 | +| 9975 | 2 (AI) | 1 (AI) | defender | defender | yes | 0 vs 7420 | 0 vs 7840 | | 10229 | 5 (AI) | 7 (AI) | attacker | attacker | yes | 2135 vs 0 | 1816 vs 0 | | 10631 | 1 (AI) | 2 (AI) | attacker | attacker | yes | 4000 vs 0 | 4000 vs 0 | -| 11011 | 2 (AI) | 1 (AI) | defender | defender | yes | 0 vs 3532 | 0 vs 3593 | +| 11011 | 2 (AI) | 1 (AI) | defender | defender | yes | 0 vs 3532 | 0 vs 3658 | | 11012 | 9 (AI) | 6 (AI) | defender | defender | yes | 0 vs 846 | 0 vs 1347 | | 11112 | 5 (AI) | 4 (human) | defender | defender | yes | 0 vs 7595 | 0 vs 7595 | | 11297 | 1 (AI) | 2 (AI) | attacker | attacker | yes | 2400 vs 0 | 2400 vs 0 | | 11469 | 5 (AI) | 9 (AI) | defender | defender | yes | 0 vs 787 | 0 vs 1489 | -| 11470 | 7 (AI) | 5 (AI) | attacker | attacker | yes | 3220 vs 0 | 3400 vs 0 | +| 11470 | 7 (AI) | 5 (AI) | attacker | attacker | yes | 3220 vs 0 | 3425 vs 0 | | 11565 | 5 (AI) | 7 (AI) | defender | defender | yes | 190 vs 3420 | 78 vs 3600 | -| 11662 | 4 (human) | 9 (AI) | attacker | attacker | yes | 7326 vs 0 | 6627 vs 0 | +| 11662 | 4 (human) | 9 (AI) | attacker | attacker | yes | 7326 vs 0 | 6624 vs 0 | | 11754 | 7 (AI) | 4 (human) | attacker | defender | no | 2119 vs 0 | 0 vs 1000 | | 11941 | 3 (human) | 5 (AI) | attacker | attacker | yes | 4901 vs 0 | 4777 vs 0 | | 11942 | 4 (human) | 7 (AI) | attacker | attacker | yes | 8840 vs 0 | 8572 vs 0 | | 12136 | 9 (AI) | 7 (AI) | attacker | attacker | yes | 1829 vs 0 | 1581 vs 0 | | 12137 | 2 (AI) | 1 (AI) | defender | defender | yes | 0 vs 1894 | 0 vs 1892 | -| 12138 | 3 (human) | 5 (AI) | attacker | attacker | yes | 2960 vs 0 | 1758 vs 0 | -| 12765 | 6 (AI) | 9 (AI) | defender | defender | yes | 0 vs 1773 | 0 vs 1747 | +| 12138 | 3 (human) | 5 (AI) | attacker | attacker | yes | 2960 vs 0 | 2512 vs 0 | +| 12765 | 6 (AI) | 9 (AI) | defender | defender | yes | 0 vs 1773 | 0 vs 1763 | | 13752 | 2 (AI) | 1 (AI) | defender | defender | yes | 0 vs 943 | 0 vs 932 |