Randoloot/tests/previews/shield_performance_test.gd
2026-10-26 21:06:32 +01:00

25 lines
1.0 KiB
GDScript

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()