GPUParticles2D does not seem to fully pause

Godot Version

Godot Engine v4.2.stable.official.46dc27791

Context/Explanation

When I pause my game, my GPUParticles2D node seems to pause correctly (the particles freeze in place). However, when I unpause after waiting a few seconds, it seems that the particles engine has continued to run during the pause, and the particles then suddenly “catch up”, rather than continuing with their expected behavior from before the pause.

Here is a short video - you can see that after the pause, the bubble particles sort of zoom sideways toward the player, rather than coninue gently floating upward (which is the expected behavior, since that is what would happen without pausing and unpausing):

Here are my settings for the GPUParticles2D node:
< as a new user, I can only put one imbedded media in a post, and the video seemed more important >

Question

Is there a way to get the bubble particles to behave exactly like they would if I had not paused and unpaused?

I’m relatively new to Godot, so I’m not sure if there’s a setting I missed, or whether this might be a bug. If it’s a known bug, is there a workaround?

Thanks!

That looks like a bug. How did you setup your particles?

Here are the most relevant parameters (process mode is inherit, which is pausable - setting it to pausable explicitly shows the same behavior as in my video):

If I turn on Interpolate (all other settings are the same as above), you can see particle movement while the game is paused, as this video demonstrates:

Can you show the settings of the particle material? You can also open the scene file with a text editor and copy paste the particles material section

Here is the text from the whole Bubbles scene:

[gd_scene load_steps=3 format=3 uid="uid://cioerk6cd6gnn"]

[ext_resource type="Texture2D" uid="uid://ditas4c0c0sd8" path="res://dodge_the_creeps_2d_assets/art/bubble_particle.png" id="1_0lrem"]

[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_kn84q"]
lifetime_randomness = 0.25
particle_flag_disable_z = true
direction = Vector3(2.08165e-12, 2.08165e-12, 2.08165e-12)
initial_velocity_min = 20.0
initial_velocity_max = 40.0
gravity = Vector3(2.08165e-12, -100, 2.08165e-12)
scale_min = 0.7
hue_variation_max = 2.08167e-17
turbulence_enabled = true

[node name="Bubbles" type="GPUParticles2D"]
show_behind_parent = true
amount = 5
process_material = SubResource("ParticleProcessMaterial_kn84q")
texture = ExtResource("1_0lrem")
lifetime = 2.5
randomness = 0.75
interpolate = false
fract_delta = false
1 Like

Well, I went through each Process Material setting that I had enabled, turning them off and on to see if anything fixed the problem.

It appears that turbulence is causing the problem you can see in my videos. After I turn off turbulence, there is no particle drift after a pause. Turning off turbulence also fixes particle drift during a pause when interpolation is enabled.

I’ll see about filing a bug report.

1 Like

It seems there is already at least one bug report:

Now I know to search the bug reports first…

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.