{
	"article_slug": "moving-10000-agents-in-godot",
	"citation_status": "reviewed benchmark evidence; cite only with matching article conditions",
	"config": {
		"agent_count": 10000,
		"cell_size_px": 16.0,
		"field_step_budget": 768,
		"frame_budget_ms": 16.6,
		"goal_schedule": "relocates every 480 frames, fixed cells from AgentGrid.default_benchmark_goal_cells()",
		"grid_size": "256x256",
		"physics_fps": 60,
		"runs": 5,
		"sample_frames": 1440,
		"sampling_note": "warmup/sample/runs above are shared defaults; the actual per-mode sampling is recorded in modes[].sampling (naive may run lighter -- its per-frame cost is near-stationary per goal position; its per-frame work is unchanged).",
		"seed": 1234,
		"warmup_frames": 120
	},
	"generated_utc": "2026-06-14T20:04:06",
	"godot_version": "4.6.2-stable (official)",
	"measurement_scope": "10000 moving agents, shared goal, naive vs scheduled. Deterministic native benchmark run, no input. Not a product-wide claim.",
	"mode_filter": "scheduled",
	"modes": [
		{
			"build_completion_latency_frames": {
				"max": 351.0,
				"median": 257.0,
				"p95": 351.0,
				"p99": 351.0
			},
			"build_completion_latency_ms": {
				"max": 5850.0,
				"median": 4283.33333333333,
				"p95": 5850.0,
				"p99": 5850.0
			},
			"build_completion_samples_median_run": 3,
			"description": "agents follow one shared flow/Dijkstra field rebuilt only on scripted goal moves",
			"field_rebuilds_median_run": 4,
			"frame_time_ms": {
				"max": 13.654,
				"median": 5.022,
				"p95": 7.306,
				"p99": 8.747
			},
			"frames_over_budget_pct": 0.0,
			"mode": "scheduled",
			"queries_per_frame_avg": 0.0,
			"rebuild_cost_ms_median_run": {
				"max": 13.654,
				"median": 5.398
			},
			"rebuild_frames_median_run": 885,
			"runs": [
				{
					"build_completion_latency_frames": {
						"max": 351,
						"median": 257,
						"p95": 351,
						"p99": 351
					},
					"build_completion_latency_ms": {
						"max": 5850.0,
						"median": 4283.33333333333,
						"p95": 5850.0,
						"p99": 5850.0
					},
					"build_completion_samples": 3,
					"field_rebuilds": 4,
					"frame_time_ms": {
						"max": 12.692,
						"median": 5.13,
						"p95": 7.515,
						"p99": 8.757
					},
					"frames_over_budget_pct": 0.0,
					"queries_per_frame_avg": 0.0,
					"query_samples": {
						"max": 0,
						"median": 0
					},
					"rebuild_cost_ms": {
						"max": 9.723,
						"median": 5.435
					},
					"rebuild_frames": 885,
					"run_index": 0,
					"sample_frames": 1440,
					"seed": 1234,
					"steady_frame_time_ms": {
						"max": 12.692,
						"median": 4.707,
						"p95": 6.72,
						"p99": 7.399
					},
					"steady_frames_over_budget_pct": 0.0,
					"total_queries": 0
				},
				{
					"build_completion_latency_frames": {
						"max": 351,
						"median": 257,
						"p95": 351,
						"p99": 351
					},
					"build_completion_latency_ms": {
						"max": 5850.0,
						"median": 4283.33333333333,
						"p95": 5850.0,
						"p99": 5850.0
					},
					"build_completion_samples": 3,
					"field_rebuilds": 4,
					"frame_time_ms": {
						"max": 26.033,
						"median": 5.022,
						"p95": 7.291,
						"p99": 8.808
					},
					"frames_over_budget_pct": 0.0694444444444444,
					"queries_per_frame_avg": 0.0,
					"query_samples": {
						"max": 0,
						"median": 0
					},
					"rebuild_cost_ms": {
						"max": 26.033,
						"median": 5.398
					},
					"rebuild_frames": 885,
					"run_index": 1,
					"sample_frames": 1440,
					"seed": 1235,
					"steady_frame_time_ms": {
						"max": 8.126,
						"median": 4.681,
						"p95": 5.815,
						"p99": 6.859
					},
					"steady_frames_over_budget_pct": 0.0,
					"total_queries": 0
				},
				{
					"build_completion_latency_frames": {
						"max": 351,
						"median": 257,
						"p95": 351,
						"p99": 351
					},
					"build_completion_latency_ms": {
						"max": 5850.0,
						"median": 4283.33333333333,
						"p95": 5850.0,
						"p99": 5850.0
					},
					"build_completion_samples": 3,
					"field_rebuilds": 4,
					"frame_time_ms": {
						"max": 19.064,
						"median": 4.905,
						"p95": 7.306,
						"p99": 8.747
					},
					"frames_over_budget_pct": 0.0694444444444444,
					"queries_per_frame_avg": 0.0,
					"query_samples": {
						"max": 0,
						"median": 0
					},
					"rebuild_cost_ms": {
						"max": 19.064,
						"median": 5.369
					},
					"rebuild_frames": 885,
					"run_index": 2,
					"sample_frames": 1440,
					"seed": 1236,
					"steady_frame_time_ms": {
						"max": 7.318,
						"median": 4.651,
						"p95": 5.38,
						"p99": 6.411
					},
					"steady_frames_over_budget_pct": 0.0,
					"total_queries": 0
				},
				{
					"build_completion_latency_frames": {
						"max": 351,
						"median": 257,
						"p95": 351,
						"p99": 351
					},
					"build_completion_latency_ms": {
						"max": 5850.0,
						"median": 4283.33333333333,
						"p95": 5850.0,
						"p99": 5850.0
					},
					"build_completion_samples": 3,
					"field_rebuilds": 4,
					"frame_time_ms": {
						"max": 13.654,
						"median": 5.082,
						"p95": 7.41,
						"p99": 8.559
					},
					"frames_over_budget_pct": 0.0,
					"queries_per_frame_avg": 0.0,
					"query_samples": {
						"max": 0,
						"median": 0
					},
					"rebuild_cost_ms": {
						"max": 13.654,
						"median": 5.411
					},
					"rebuild_frames": 885,
					"run_index": 3,
					"sample_frames": 1440,
					"seed": 1237,
					"steady_frame_time_ms": {
						"max": 7.699,
						"median": 4.67,
						"p95": 5.746,
						"p99": 6.705
					},
					"steady_frames_over_budget_pct": 0.0,
					"total_queries": 0
				},
				{
					"build_completion_latency_frames": {
						"max": 351,
						"median": 257,
						"p95": 351,
						"p99": 351
					},
					"build_completion_latency_ms": {
						"max": 5850.0,
						"median": 4283.33333333333,
						"p95": 5850.0,
						"p99": 5850.0
					},
					"build_completion_samples": 3,
					"field_rebuilds": 4,
					"frame_time_ms": {
						"max": 10.991,
						"median": 4.903,
						"p95": 7.226,
						"p99": 8.351
					},
					"frames_over_budget_pct": 0.0,
					"queries_per_frame_avg": 0.0,
					"query_samples": {
						"max": 0,
						"median": 0
					},
					"rebuild_cost_ms": {
						"max": 10.991,
						"median": 5.321
					},
					"rebuild_frames": 885,
					"run_index": 4,
					"sample_frames": 1440,
					"seed": 1238,
					"steady_frame_time_ms": {
						"max": 7.99,
						"median": 4.631,
						"p95": 5.51,
						"p99": 6.483
					},
					"steady_frames_over_budget_pct": 0.0,
					"total_queries": 0
				}
			],
			"sampling": {
				"runs": 5,
				"sample_frames": 1440,
				"warmup_frames": 120
			},
			"steady_frame_time_ms": {
				"max": 7.99,
				"median": 4.67,
				"p95": 5.746,
				"p99": 6.705
			},
			"steady_frames_over_budget_pct": 0.0,
			"total_queries_median_run": 0
		}
	],
	"os_name": "Windows",
	"processor_name": "AMD Ryzen 5 2600X Six-Core Processor",
	"run_profile": "full"
}
