godot-performance-optimization

安装量: 55
排名: #13484

安装

npx skills add https://github.com/thedivergentai/gd-agentic-skills --skill godot-performance-optimization
Performance Optimization
Profiler-driven analysis, object pooling, and visibility culling define optimized game performance.
Available Scripts
custom_performance_monitor.gd
Manager for adding and updating custom performance monitors in the Godot debugger.
multimesh_foliage_manager.gd
Expert MultiMesh pattern for rendering thousands of foliage instances efficiently.
NEVER Do in Performance Optimization
NEVER optimize without profiling first
— "I think physics is slow" without data? Premature optimization. ALWAYS use Debug → Profiler (F3) to identify actual bottleneck.
NEVER use
print()
in release builds
print()
every frame = file I/O bottleneck + log spam. Use
@warning_ignore
or conditional
if OS.is_debug_build():
.
NEVER ignore
VisibleOnScreenNotifier2D
for off-screen entities
— Enemies processing logic off-screen = wasted CPU. Disable
set_process(false)
when
screen_exited
.
NEVER instantiate nodes in hot loops
for i in 1000: var bullet = Bullet.new()
= 1000 allocations. Use object pools, reuse instances.
NEVER use
get_node()
in
_process()
— Calling
get_node("Player")
60x/sec = tree traversal spam. Cache in
@onready var player := $Player
.
NEVER forget to batch draw calls
— 1000 unique sprites = 1000 draw calls. Use TextureAtlas (sprite sheets) + MultiMesh for instanced rendering.
Debug → Profiler
(F3)
Tabs:
Time
Function call times
Memory
RAM usage
Network
RPCs, bandwidth
Physics
Collision checks Common Optimizations Object Pooling var bullet_pool : Array [ Node ] = [ ] func get_bullet ( ) -> Node : if bullet_pool . is_empty ( ) : return Bullet . new ( ) return bullet_pool . pop_back ( ) func return_bullet ( bullet : Node ) -> void : bullet . hide ( ) bullet_pool . append ( bullet ) Visibility Notifier

Add VisibleOnScreenNotifier2D

Disable processing when off-screen

func _on_screen_exited ( ) -> void : set_process ( false ) func _on_screen_entered ( ) -> void : set_process ( true ) Reduce Draw Calls

Use TextureAtlas (sprite sheets)

Batch similar materials

Fewer unique textures

Reference Godot Docs: Performance Optimization Related Master Skill: godot-master

返回排行榜