extends Node2D func _ready() -> void: DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_DISABLED) Engine.max_fps = 0 var baseline := "--baseline" in OS.get_cmdline_user_args() var script: Script = load("res://tmp/shield_visual_before_optimization.gd" if baseline else "res://scripts/game/shield_visual.gd") var shields: Array[Node2D] = [] for index in 120: var shield := Node2D.new() shield.set_script(script) shield.shield_radius = 24.0 shield.position = Vector2(55+(index%15)*82,65+(index/15)*80) add_child(shield) shields.append(shield) for frame in 30: await get_tree().process_frame var start := Time.get_ticks_usec() var draw_calls := 0.0 for frame in 150: for shield in shields: shield.set_shield_values(100,100) await get_tree().process_frame draw_calls += Performance.get_monitor(Performance.RENDER_TOTAL_DRAW_CALLS_IN_FRAME) print("SHIELD PERFORMANCE %s: 120 shields, average %.3f ms/frame, %.1f draw calls/frame" % ["BEFORE" if baseline else "AFTER",(Time.get_ticks_usec()-start)/150000.0,draw_calls/150.0]) get_tree().quit()