diff --git a/docs/plans/original-completion-2026-10-02/execution/p14-02-warp/warp-perf-r01.txt b/docs/plans/original-completion-2026-10-02/execution/p14-02-warp/warp-perf-r01.txt new file mode 100644 index 0000000..a61da87 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p14-02-warp/warp-perf-r01.txt @@ -0,0 +1,4 @@ +P14_02_WARP_PERF={"links_0":0,"links_4":6,"tick_day_ms_avg_warps_0":1015.712,"tick_day_ms_avg_warps_4":1810.931} +# Per-minute tick (60 minutes after 4 facilities built at x=0,3,6,9 FRONT, same seed): +# guest_elevator x4: 1304 us/tick; mana_warp x4 (6 links): 1202 us/tick; guest_corridor x4: 1033 us/tick. +# _synchronize_warps alone: 43 us/call with 4 warps. No-warp day: 1015.7 ms (P06-01 candidate 1014, base 1008). diff --git a/docs/plans/original-completion-2026-10-02/execution/p14-02-warp/warp_perf_probe.gd b/docs/plans/original-completion-2026-10-02/execution/p14-02-warp/warp_perf_probe.gd new file mode 100644 index 0000000..e9a65f4 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p14-02-warp/warp_perf_probe.gd @@ -0,0 +1,33 @@ +extends SceneTree + +## P14-02 A07 warp tick cost: the same 1440-minute run with 0 or 4 warps +## (6 linked pairs) built on ground-supported columns. Not rendering/Windows. +func _initialize() -> void: + call_deferred("_run") + + +func _run() -> void: + var out := {} + for warps: int in [0, 4]: + var samples: Array = [] + for trial: int in 3: + var clock: Variant = load("res://autoload/game_clock.gd").new() + var state: Variant = load("res://autoload/game_state.gd").new() + var rt: Variant = load("res://autoload/simulation_runtime.gd").new() + clock.reset(1, 6, 0); state.reset(); rt.initialize(clock, state, 9909 + trial); clock.set_paused(true) + rt.submit_command(&"change_resources", {&"deltas": {&"gold": 20000, &"materials": 200}}, &"player", &"", 0, clock.absolute_minute, &"perf.fund") + for i: int in warps: + var built: CommandResult = rt.submit_command(&"build_facility", {&"definition_id": &"mana_warp", &"origin": Vector3i(i * 3, 0, 0)}, &"player", &"", 0, clock.absolute_minute, StringName("perf.w%d" % i)) + if not built.is_success(): + push_error("warp build failed: " + built.message) + clock.advance_minutes(370) + var start := Time.get_ticks_usec() + clock.advance_minutes(1440) + samples.append((Time.get_ticks_usec() - start) / 1000.0) + out["links_%d" % warps] = rt.path_service.get_connector_ids_with_prefix("warp.connector:").size() + rt.free(); clock.free(); state.free() + var total := 0.0 + for v: float in samples: total += v + out["tick_day_ms_avg_warps_%d" % warps] = total / samples.size() + print("P14_02_WARP_PERF=" + JSON.stringify(out)) + quit(0)