{
	"article_slug": "moving-10000-agents-in-godot",
	"citation_status": "reviewed benchmark evidence; cite only with matching article conditions",
	"config": {
		"agent_count": 500,
		"cell_size_px": 16.0,
		"field_step_budget": 1536,
		"frame_budget_ms": 16.6,
		"goal_schedule": "relocates every 180 frames, fixed cells from AgentGrid.default_benchmark_goal_cells()",
		"grid_size": "256x256",
		"physics_fps": 60,
		"runs": 5,
		"sample_frames": 1000,
		"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-14T05:41:40",
	"godot_version": "4.6.2-stable (official)",
	"measurement_scope": "500 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": {

			},
			"build_completion_latency_ms": {

			},
			"build_completion_samples_median_run": 0,
			"description": "every agent calls AStarGrid2D.get_id_path() every physics frame",
			"field_rebuilds_median_run": 0.0,
			"frame_time_ms": {
				"max": 5770.735,
				"median": 670.291,
				"p95": 4581.507,
				"p99": 4870.586
			},
			"frames_over_budget_pct": 100.0,
			"frozen_from": {
				"generated_utc": "2026-06-13T20:39:19",
				"path": "archived-native-naive-baseline-500-agents.json"
			},
			"mode": "naive",
			"queries_per_frame_avg": 500.0,
			"rebuild_cost_ms_median_run": {

			},
			"rebuild_frames_median_run": 0,
			"runs": [
				{
					"field_rebuilds": 0.0,
					"frame_time_ms": {
						"max": 5593.449,
						"median": 670.291,
						"p95": 4659.151,
						"p99": 4881.335
					},
					"frames_over_budget_pct": 100.0,
					"queries_per_frame_avg": 500.0,
					"query_samples": {
						"max": 500.0,
						"median": 500.0
					},
					"run_index": 0.0,
					"sample_frames": 1000.0,
					"seed": 1234.0,
					"total_queries": 500000.0
				},
				{
					"field_rebuilds": 0.0,
					"frame_time_ms": {
						"max": 6453.346,
						"median": 693.38,
						"p95": 4670.277,
						"p99": 4870.586
					},
					"frames_over_budget_pct": 100.0,
					"queries_per_frame_avg": 500.0,
					"query_samples": {
						"max": 500.0,
						"median": 500.0
					},
					"run_index": 1.0,
					"sample_frames": 1000.0,
					"seed": 1235.0,
					"total_queries": 500000.0
				},
				{
					"field_rebuilds": 0.0,
					"frame_time_ms": {
						"max": 5770.735,
						"median": 664.915,
						"p95": 4581.507,
						"p99": 4958.169
					},
					"frames_over_budget_pct": 100.0,
					"queries_per_frame_avg": 500.0,
					"query_samples": {
						"max": 500.0,
						"median": 500.0
					},
					"run_index": 2.0,
					"sample_frames": 1000.0,
					"seed": 1236.0,
					"total_queries": 500000.0
				},
				{
					"field_rebuilds": 0.0,
					"frame_time_ms": {
						"max": 6557.559,
						"median": 677.938,
						"p95": 4253.885,
						"p99": 4479.112
					},
					"frames_over_budget_pct": 100.0,
					"queries_per_frame_avg": 500.0,
					"query_samples": {
						"max": 500.0,
						"median": 500.0
					},
					"run_index": 3.0,
					"sample_frames": 1000.0,
					"seed": 1237.0,
					"total_queries": 500000.0
				},
				{
					"field_rebuilds": 0.0,
					"frame_time_ms": {
						"max": 4251.05,
						"median": 646.562,
						"p95": 4159.448,
						"p99": 4189.226
					},
					"frames_over_budget_pct": 100.0,
					"queries_per_frame_avg": 500.0,
					"query_samples": {
						"max": 500.0,
						"median": 500.0
					},
					"run_index": 4.0,
					"sample_frames": 1000.0,
					"seed": 1238.0,
					"total_queries": 500000.0
				}
			],
			"steady_frame_time_ms": {
				"max": 5770.735,
				"median": 670.291,
				"p95": 4581.507,
				"p99": 4870.586
			},
			"steady_frames_over_budget_pct": 100.0,
			"total_queries_median_run": 500000.0
		},
		{
			"build_completion_latency_frames": {
				"max": 176.0,
				"median": 129.0,
				"p95": 176.0,
				"p99": 176.0
			},
			"build_completion_latency_ms": {
				"max": 2933.33333333333,
				"median": 2150.0,
				"p95": 2933.33333333333,
				"p99": 2933.33333333333
			},
			"build_completion_samples_median_run": 5,
			"description": "agents follow one shared flow/Dijkstra field rebuilt only on scripted goal moves",
			"field_rebuilds_median_run": 7,
			"frame_time_ms": {
				"max": 9.956,
				"median": 2.028,
				"p95": 6.849,
				"p99": 8.19
			},
			"frames_over_budget_pct": 0.0,
			"mode": "scheduled",
			"queries_per_frame_avg": 0.0,
			"rebuild_cost_ms_median_run": {
				"max": 9.956,
				"median": 2.308
			},
			"rebuild_frames_median_run": 876,
			"runs": [
				{
					"build_completion_latency_frames": {
						"max": 176,
						"median": 129,
						"p95": 176,
						"p99": 176
					},
					"build_completion_latency_ms": {
						"max": 2933.33333333333,
						"median": 2150.0,
						"p95": 2933.33333333333,
						"p99": 2933.33333333333
					},
					"build_completion_samples": 5,
					"field_rebuilds": 7,
					"frame_time_ms": {
						"max": 9.956,
						"median": 1.971,
						"p95": 7.105,
						"p99": 8.391
					},
					"frames_over_budget_pct": 0.0,
					"queries_per_frame_avg": 0.0,
					"query_samples": {
						"max": 0,
						"median": 0
					},
					"rebuild_cost_ms": {
						"max": 9.956,
						"median": 2.208
					},
					"rebuild_frames": 876,
					"run_index": 0,
					"sample_frames": 1000,
					"seed": 1234,
					"steady_frame_time_ms": {
						"max": 0.47,
						"median": 0.333,
						"p95": 0.379,
						"p99": 0.434
					},
					"steady_frames_over_budget_pct": 0.0,
					"total_queries": 0
				},
				{
					"build_completion_latency_frames": {
						"max": 176,
						"median": 129,
						"p95": 176,
						"p99": 176
					},
					"build_completion_latency_ms": {
						"max": 2933.33333333333,
						"median": 2150.0,
						"p95": 2933.33333333333,
						"p99": 2933.33333333333
					},
					"build_completion_samples": 5,
					"field_rebuilds": 7,
					"frame_time_ms": {
						"max": 9.369,
						"median": 2.051,
						"p95": 6.758,
						"p99": 8.19
					},
					"frames_over_budget_pct": 0.0,
					"queries_per_frame_avg": 0.0,
					"query_samples": {
						"max": 0,
						"median": 0
					},
					"rebuild_cost_ms": {
						"max": 9.369,
						"median": 2.329
					},
					"rebuild_frames": 876,
					"run_index": 1,
					"sample_frames": 1000,
					"seed": 1235,
					"steady_frame_time_ms": {
						"max": 0.422,
						"median": 0.331,
						"p95": 0.345,
						"p99": 0.407
					},
					"steady_frames_over_budget_pct": 0.0,
					"total_queries": 0
				},
				{
					"build_completion_latency_frames": {
						"max": 176,
						"median": 129,
						"p95": 176,
						"p99": 176
					},
					"build_completion_latency_ms": {
						"max": 2933.33333333333,
						"median": 2150.0,
						"p95": 2933.33333333333,
						"p99": 2933.33333333333
					},
					"build_completion_samples": 5,
					"field_rebuilds": 7,
					"frame_time_ms": {
						"max": 9.211,
						"median": 2.052,
						"p95": 6.858,
						"p99": 8.014
					},
					"frames_over_budget_pct": 0.0,
					"queries_per_frame_avg": 0.0,
					"query_samples": {
						"max": 0,
						"median": 0
					},
					"rebuild_cost_ms": {
						"max": 9.211,
						"median": 2.349
					},
					"rebuild_frames": 876,
					"run_index": 2,
					"sample_frames": 1000,
					"seed": 1236,
					"steady_frame_time_ms": {
						"max": 0.646,
						"median": 0.333,
						"p95": 0.449,
						"p99": 0.517
					},
					"steady_frames_over_budget_pct": 0.0,
					"total_queries": 0
				},
				{
					"build_completion_latency_frames": {
						"max": 176,
						"median": 129,
						"p95": 176,
						"p99": 176
					},
					"build_completion_latency_ms": {
						"max": 2933.33333333333,
						"median": 2150.0,
						"p95": 2933.33333333333,
						"p99": 2933.33333333333
					},
					"build_completion_samples": 5,
					"field_rebuilds": 7,
					"frame_time_ms": {
						"max": 10.792,
						"median": 1.992,
						"p95": 6.536,
						"p99": 8.016
					},
					"frames_over_budget_pct": 0.0,
					"queries_per_frame_avg": 0.0,
					"query_samples": {
						"max": 0,
						"median": 0
					},
					"rebuild_cost_ms": {
						"max": 10.792,
						"median": 2.275
					},
					"rebuild_frames": 876,
					"run_index": 3,
					"sample_frames": 1000,
					"seed": 1237,
					"steady_frame_time_ms": {
						"max": 0.421,
						"median": 0.332,
						"p95": 0.374,
						"p99": 0.397
					},
					"steady_frames_over_budget_pct": 0.0,
					"total_queries": 0
				},
				{
					"build_completion_latency_frames": {
						"max": 176,
						"median": 129,
						"p95": 176,
						"p99": 176
					},
					"build_completion_latency_ms": {
						"max": 2933.33333333333,
						"median": 2150.0,
						"p95": 2933.33333333333,
						"p99": 2933.33333333333
					},
					"build_completion_samples": 5,
					"field_rebuilds": 7,
					"frame_time_ms": {
						"max": 10.744,
						"median": 2.028,
						"p95": 6.849,
						"p99": 8.213
					},
					"frames_over_budget_pct": 0.0,
					"queries_per_frame_avg": 0.0,
					"query_samples": {
						"max": 0,
						"median": 0
					},
					"rebuild_cost_ms": {
						"max": 10.744,
						"median": 2.308
					},
					"rebuild_frames": 876,
					"run_index": 4,
					"sample_frames": 1000,
					"seed": 1238,
					"steady_frame_time_ms": {
						"max": 0.414,
						"median": 0.335,
						"p95": 0.381,
						"p99": 0.413
					},
					"steady_frames_over_budget_pct": 0.0,
					"total_queries": 0
				}
			],
			"sampling": {
				"runs": 5,
				"sample_frames": 1000,
				"warmup_frames": 120
			},
			"steady_frame_time_ms": {
				"max": 0.422,
				"median": 0.333,
				"p95": 0.379,
				"p99": 0.413
			},
			"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"
}
