ai-code-battle/web/public/data/demo-replay-v2.json
jedarden 82bcb17ab8 feat(web): update demo replays to reflect current combat mechanics
Regenerated demo-replay-v2.json (2-player) and demo-replay-v2-6p.json (6-player)
using acb-local with current engine settings. Both replays now show combat_death
events, demonstrating the focus-fire combat system is working.

- 2-player demo: 6 turns, 2 combat_deaths (seed 789)
- 6-player demo: 6 turns, 6 combat_deaths (seed 456)

Previous replays were generated before zone/spawn radius fixes and showed minimal
combat. Combat density tests confirm targets met: 86% for 2-player, 100% for
6-player (TestCombatDensityMetrics).

Closes: bf-3er8
2026-05-25 21:10:55 -04:00

952 lines
No EOL
15 KiB
JSON

{
"format_version": "1.0",
"match_id": "m_pstcxfsi",
"config": {
"rows": 40,
"cols": 40,
"max_turns": 320,
"vision_radius2": 49,
"attack_radius2": 25,
"spawn_cost": 3,
"energy_interval": 10,
"cores_per_player": 1,
"zone_enabled": true,
"zone_start_turn": 10,
"zone_shrink_interval": 1,
"zone_shrink_step": 2,
"zone_min_radius": 2
},
"start_time": "2026-05-26T01:10:05.902799378Z",
"end_time": "2026-05-26T01:10:05.955522123Z",
"result": {
"winner": -1,
"reason": "draw",
"turns": 6,
"scores": [
1,
1
],
"energy": [
0,
0
],
"bots_alive": [
0,
0
],
"crashed": [
false,
false
],
"combat_deaths": [
1,
1
]
},
"players": [
{
"id": 0,
"name": "gatherer"
},
{
"id": 1,
"name": "rusher"
}
],
"map": {
"rows": 40,
"cols": 40,
"walls": [
{
"row": 22,
"col": 10
},
{
"row": 30,
"col": 25
},
{
"row": 23,
"col": 18
},
{
"row": 25,
"col": 23
},
{
"row": 7,
"col": 13
},
{
"row": 12,
"col": 16
},
{
"row": 20,
"col": 24
},
{
"row": 37,
"col": 20
},
{
"row": 25,
"col": 34
},
{
"row": 30,
"col": 7
},
{
"row": 32,
"col": 21
},
{
"row": 10,
"col": 33
},
{
"row": 33,
"col": 27
},
{
"row": 29,
"col": 14
},
{
"row": 25,
"col": 8
},
{
"row": 22,
"col": 20
},
{
"row": 24,
"col": 12
},
{
"row": 12,
"col": 35
},
{
"row": 16,
"col": 10
},
{
"row": 28,
"col": 24
},
{
"row": 20,
"col": 5
},
{
"row": 23,
"col": 13
},
{
"row": 18,
"col": 19
},
{
"row": 20,
"col": 3
},
{
"row": 11,
"col": 26
},
{
"row": 21,
"col": 15
},
{
"row": 18,
"col": 20
},
{
"row": 28,
"col": 5
},
{
"row": 15,
"col": 6
},
{
"row": 8,
"col": 19
},
{
"row": 37,
"col": 22
},
{
"row": 24,
"col": 16
},
{
"row": 24,
"col": 33
},
{
"row": 28,
"col": 10
},
{
"row": 22,
"col": 21
},
{
"row": 28,
"col": 20
},
{
"row": 12,
"col": 20
},
{
"row": 20,
"col": 16
},
{
"row": 20,
"col": 18
},
{
"row": 12,
"col": 30
},
{
"row": 31,
"col": 26
},
{
"row": 16,
"col": 28
},
{
"row": 26,
"col": 13
},
{
"row": 20,
"col": 35
},
{
"row": 19,
"col": 25
},
{
"row": 19,
"col": 10
},
{
"row": 10,
"col": 15
},
{
"row": 20,
"col": 22
},
{
"row": 18,
"col": 30
},
{
"row": 14,
"col": 27
},
{
"row": 14,
"col": 19
},
{
"row": 30,
"col": 27
},
{
"row": 10,
"col": 13
},
{
"row": 3,
"col": 18
},
{
"row": 22,
"col": 14
},
{
"row": 20,
"col": 17
},
{
"row": 15,
"col": 20
},
{
"row": 20,
"col": 37
},
{
"row": 19,
"col": 28
},
{
"row": 21,
"col": 12
},
{
"row": 26,
"col": 21
},
{
"row": 15,
"col": 17
},
{
"row": 25,
"col": 20
},
{
"row": 3,
"col": 20
},
{
"row": 21,
"col": 30
},
{
"row": 17,
"col": 22
},
{
"row": 16,
"col": 24
},
{
"row": 24,
"col": 30
},
{
"row": 20,
"col": 23
},
{
"row": 18,
"col": 26
},
{
"row": 15,
"col": 32
},
{
"row": 17,
"col": 27
},
{
"row": 9,
"col": 14
},
{
"row": 16,
"col": 7
}
],
"cores": [
{
"position": {
"row": 24,
"col": 20
},
"owner": 0
},
{
"position": {
"row": 16,
"col": 20
},
"owner": 1
}
],
"energy_nodes": [
{
"row": 21,
"col": 20
},
{
"row": 19,
"col": 20
},
{
"row": 18,
"col": 25
},
{
"row": 22,
"col": 15
},
{
"row": 20,
"col": 25
},
{
"row": 20,
"col": 15
},
{
"row": 30,
"col": 24
},
{
"row": 10,
"col": 16
},
{
"row": 24,
"col": 29
},
{
"row": 16,
"col": 11
}
]
},
"turns": [
{
"turn": 0,
"bots": [
{
"id": 0,
"owner": 0,
"position": {
"row": 24,
"col": 20
},
"alive": true
},
{
"id": 1,
"owner": 1,
"position": {
"row": 16,
"col": 20
},
"alive": true
}
],
"cores": [
{
"position": {
"row": 24,
"col": 20
},
"owner": 0,
"active": true
},
{
"position": {
"row": 16,
"col": 20
},
"owner": 1,
"active": true
}
],
"energy": [],
"scores": [
1,
1
],
"energy_held": [
0,
0
],
"events": [
{
"type": "bot_spawned",
"turn": 0,
"details": {
"bot_id": 0,
"owner": 0,
"pos": {
"row": 24,
"col": 20
}
}
},
{
"type": "bot_spawned",
"turn": 0,
"details": {
"bot_id": 1,
"owner": 1,
"pos": {
"row": 16,
"col": 20
}
}
}
],
"zone_bounds": {
"center": {
"row": 20,
"col": 20
},
"radius": 20,
"active": false
}
},
{
"turn": 1,
"bots": [
{
"id": 0,
"owner": 0,
"position": {
"row": 23,
"col": 20
},
"alive": true
},
{
"id": 1,
"owner": 1,
"position": {
"row": 16,
"col": 21
},
"alive": true
}
],
"cores": [
{
"position": {
"row": 24,
"col": 20
},
"owner": 0,
"active": true
},
{
"position": {
"row": 16,
"col": 20
},
"owner": 1,
"active": true
}
],
"energy": [],
"scores": [
1,
1
],
"energy_held": [
0,
0
],
"zone_bounds": {
"center": {
"row": 20,
"col": 20
},
"radius": 20,
"active": false
}
},
{
"turn": 2,
"bots": [
{
"id": 0,
"owner": 0,
"position": {
"row": 23,
"col": 21
},
"alive": true
},
{
"id": 1,
"owner": 1,
"position": {
"row": 17,
"col": 21
},
"alive": true
}
],
"cores": [
{
"position": {
"row": 24,
"col": 20
},
"owner": 0,
"active": true
},
{
"position": {
"row": 16,
"col": 20
},
"owner": 1,
"active": true
}
],
"energy": [],
"scores": [
1,
1
],
"energy_held": [
0,
0
],
"zone_bounds": {
"center": {
"row": 20,
"col": 20
},
"radius": 20,
"active": false
}
},
{
"turn": 3,
"bots": [
{
"id": 0,
"owner": 0,
"position": {
"row": 23,
"col": 20
},
"alive": true
},
{
"id": 1,
"owner": 1,
"position": {
"row": 18,
"col": 21
},
"alive": true
}
],
"cores": [
{
"position": {
"row": 24,
"col": 20
},
"owner": 0,
"active": true
},
{
"position": {
"row": 16,
"col": 20
},
"owner": 1,
"active": true
}
],
"energy": [],
"scores": [
1,
1
],
"energy_held": [
0,
0
],
"zone_bounds": {
"center": {
"row": 20,
"col": 20
},
"radius": 20,
"active": false
}
},
{
"turn": 4,
"bots": [
{
"id": 0,
"owner": 0,
"position": {
"row": 24,
"col": 20
},
"alive": true
},
{
"id": 1,
"owner": 1,
"position": {
"row": 19,
"col": 21
},
"alive": true
}
],
"cores": [
{
"position": {
"row": 24,
"col": 20
},
"owner": 0,
"active": true
},
{
"position": {
"row": 16,
"col": 20
},
"owner": 1,
"active": true
}
],
"energy": [],
"scores": [
1,
1
],
"energy_held": [
0,
0
],
"zone_bounds": {
"center": {
"row": 20,
"col": 20
},
"radius": 20,
"active": false
}
},
{
"turn": 5,
"bots": [
{
"id": 0,
"owner": 0,
"position": {
"row": 24,
"col": 19
},
"alive": true
},
{
"id": 1,
"owner": 1,
"position": {
"row": 18,
"col": 21
},
"alive": true
}
],
"cores": [
{
"position": {
"row": 24,
"col": 20
},
"owner": 0,
"active": true
},
{
"position": {
"row": 16,
"col": 20
},
"owner": 1,
"active": true
}
],
"energy": [],
"scores": [
1,
1
],
"energy_held": [
0,
0
],
"zone_bounds": {
"center": {
"row": 20,
"col": 20
},
"radius": 20,
"active": false
}
},
{
"turn": 6,
"bots": [
{
"id": 0,
"owner": 0,
"position": {
"row": 23,
"col": 19
},
"alive": false
},
{
"id": 1,
"owner": 1,
"position": {
"row": 19,
"col": 21
},
"alive": false
}
],
"cores": [
{
"position": {
"row": 24,
"col": 20
},
"owner": 0,
"active": true
},
{
"position": {
"row": 16,
"col": 20
},
"owner": 1,
"active": true
}
],
"energy": [],
"scores": [
1,
1
],
"energy_held": [
0,
0
],
"events": [
{
"type": "combat_death",
"turn": 6,
"details": {
"bot_id": 0,
"killers": [
{
"bot_id": 1,
"owner": 1,
"position": {
"row": 19,
"col": 21
}
}
],
"owner": 0,
"position": {
"row": 23,
"col": 19
}
}
},
{
"type": "combat_death",
"turn": 6,
"details": {
"bot_id": 1,
"killers": [
{
"bot_id": 0,
"owner": 0,
"position": {
"row": 23,
"col": 19
}
}
],
"owner": 1,
"position": {
"row": 19,
"col": 21
}
}
}
],
"zone_bounds": {
"center": {
"row": 20,
"col": 20
},
"radius": 20,
"active": false
}
}
],
"win_prob": [
[
0.24,
0.24
],
[
0.4,
0.18
],
[
0.16,
0.18
],
[
0.08,
0.09
],
[
0.02,
0.08
],
[
0.03,
0.42
],
[
0,
0
]
],
"critical_moments": [
{
"turn": 1,
"delta": 0.16,
"player": 0,
"description": "Player 0 win probability rises to 16%"
},
{
"turn": 2,
"delta": -0.24,
"player": 0,
"description": "Player 0 win probability drops to 24%"
},
{
"turn": 5,
"delta": 0.34,
"player": 1,
"description": "Player 1 win probability rises to 34%"
},
{
"turn": 6,
"delta": -0.42,
"player": 1,
"description": "Player 1 win probability drops to 42%"
}
]
}