Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TF2] Precached particles are not being deleted across map changes #4241

Closed
rowedahelicon opened this issue Aug 31, 2022 · 9 comments
Closed

Comments

@rowedahelicon
Copy link

rowedahelicon commented Aug 31, 2022

Similar to, if not exactly the same problem described here https://forums.alliedmods.net/showthread.php?t=322106.

As a server moves from map to map, those using atypical particles (such as Halloween maps) have begun precaching them to the particle string table and no longer is removing them on map end. This eventually results in a full particle string table, which then removes many important particles from cache, such as weapon muzzle flashes. This is not a TF2 exclusive issue, it has been known to happen in CS:GO too.

https://www.diffchecker.com/9r0o85kd The is a comparison of the "ParticleEffectNames" string table, the left being after a server restart, the right being around ~12 hours later.

Easiest way to replicate it is to jump around Halloween maps, most of the stock event maps contributed a decent number of stuck particles per map.

9/4/2022 Edit: I want to emphasize for the sake of importance, this issue most likely has been occurring for a while and was exacerbated by the recent update which added more Unusual effects. This will be a problem for many servers, including Valve servers, come the upcoming Halloween event.

osYFSS9

Warning:  Table ParticleEffectNames is full, can't add fx_spell_bolt_shock
Warning:  Table ParticleEffectNames is full, can't add fx_spell_bolt_flare
Warning:  Table ParticleEffectNames is full, can't add fx_spell_bolt_sparks
Warning:  Table ParticleEffectNames is full, can't add fx_spell_bolt_sparklets
Warning:  Table ParticleEffectNames is full, can't add fx_env_fallingleaf
Warning:  Table ParticleEffectNames is full, can't add fx_env_fallingleaf_addin
Warning:  Table ParticleEffectNames is full, can't add fx_skybox_swirl_main
Warning:  Table ParticleEffectNames is full, can't add fx_skybox_swirl_core
Warning:  Table ParticleEffectNames is full, can't add fx_skybox_swirl_edge
Warning:  Table ParticleEffectNames is full, can't add fx_skybox_swirl_inner
Warning:  Table ParticleEffectNames is full, can't add cauldron_main_stage_1
Warning:  Table ParticleEffectNames is full, can't add cauldron_main_stage_1_bubbles
Warning:  Table ParticleEffectNames is full, can't add cauldron_main_stage_1_splash
Warning:  Table ParticleEffectNames is full, can't add cauldron_main_stage_1_splash_addin
Warning:  Table ParticleEffectNames is full, can't add cauldron_main_stage_2
Warning:  Table ParticleEffectNames is full, can't add cauldron_main_stage_2_splash_addin
Warning:  Table ParticleEffectNames is full, can't add cauldron_main_stage_2_splash
Warning:  Table ParticleEffectNames is full, can't add cauldron_main_stage_2_rim
Warning:  Table ParticleEffectNames is full, can't add cauldron_main_stage_3
Warning:  Table ParticleEffectNames is full, can't add cauldron_main_stage_3_rim
Warning:  Table ParticleEffectNames is full, can't add cauldron_main_stage_3_splash
Warning:  Table ParticleEffectNames is full, can't add cauldron_main_stage_3_droplets
Warning:  Table ParticleEffectNames is full, can't add cauldron_movement_splash
Warning:  Table ParticleEffectNames is full, can't add cauldron_movement_splash_ripple
Warning:  Table ParticleEffectNames is full, can't add cauldron_movement_splash_core
Warning:  Table ParticleEffectNames is full, can't add cauldron_movement_splash_cluster
Warning:  Table ParticleEffectNames is full, can't add cauldron_movement_splash_droplets
Warning:  Table ParticleEffectNames is full, can't add fx_ghostportal_playerenter
Warning:  Table ParticleEffectNames is full, can't add fx_ghostportal_static
Warning:  Table ParticleEffectNames is full, can't add fx_ghostportal_static_addin
Warning:  Table ParticleEffectNames is full, can't add fx_cauldron_spawnorb
Warning:  Table ParticleEffectNames is full, can't add fx_cauldron_spawnorb_wisps
Warning:  Table ParticleEffectNames is full, can't add fx_spell_jumpad_main
Warning:  Table ParticleEffectNames is full, can't add fx_spell_jumpad_main_airwafts
Warning:  Table ParticleEffectNames is full, can't add fx_spell_jumpad_main_airwafts_hp
Warning:  Table ParticleEffectNames is full, can't add fx_ghostportal_udw_main
Warning:  Table ParticleEffectNames is full, can't add fx_ghostportal_udw_main_flare
Warning:  Table ParticleEffectNames is full, can't add fx_ghostportal_udw_main_flare_addin
Warning:  Table ParticleEffectNames is full, can't add fx_ghostportal_udw_main_ring
Warning:  Table ParticleEffectNames is full, can't add fx_ghostportal_udw_main_start
Warning:  Table ParticleEffectNames is full, can't add fx_ghostportal_udw_main_static
Warning:  Table ParticleEffectNames is full, can't add fx_ghostportal_udw_main_swirl
Warning:  Table ParticleEffectNames is full, can't add fx_ghostportal_udw_main_goop
Warning:  Table ParticleEffectNames is full, can't add fx_spell_skele_splash
Warning:  Table ParticleEffectNames is full, can't add fx_spell_skele_splash_core
Warning:  Table ParticleEffectNames is full, can't add fx_spell_skele_splash_cluster
Warning:  Table ParticleEffectNames is full, can't add fx_spell_skele_splash_droplets
Warning:  Table ParticleEffectNames is full, can't add fx_spell_skele_splash_ripple
Warning:  Table ParticleEffectNames is full, can't add fx_spell_bolt_flicker
Warning:  Table ParticleEffectNames is full, can't add fx_spell_bolt_flicker_flash
Warning:  Table ParticleEffectNames is full, can't add fx_spookymist_bluspawn
Warning:  Table ParticleEffectNames is full, can't add fx_spell_fball_timer
Warning:  Table ParticleEffectNames is full, can't add fx_spell_fball_main
Warning:  Table ParticleEffectNames is full, can't add fx_spell_fball_fire
Warning:  Table ParticleEffectNames is full, can't add fx_spell_fball_fire_core
Warning:  Table ParticleEffectNames is full, can't add fx_spell_fball_smoke
Warning:  Table ParticleEffectNames is full, can't add fx_spell_nado_main
Warning:  Table ParticleEffectNames is full, can't add goopit_unw
Warning:  Table ParticleEffectNames is full, can't add goopit_unw_bubbles
Warning:  Table ParticleEffectNames is full, can't add goopit_unw_ghosties
Warning:  Table ParticleEffectNames is full, can't add goopit_unw_goop
Warning:  Table ParticleEffectNames is full, can't add goopit_unw_smoke
Warning:  Table ParticleEffectNames is full, can't add goopit_unw_whirl
Warning:  Table ParticleEffectNames is full, can't add fx_cauldron_portal_spawn
Warning:  Table ParticleEffectNames is full, can't add fx_cauldron_portal_wisps
Warning:  Table ParticleEffectNames is full, can't add fx_spell_jumpad_cauldron
Warning:  Table ParticleEffectNames is full, can't add fx_spell_jumpad_cauldron_wafts
Warning:  Table ParticleEffectNames is full, can't add fx_spell_heal_main
Warning:  Table ParticleEffectNames is full, can't add fx_spell_heal_swirl
Warning:  Table ParticleEffectNames is full, can't add fx_spell_heal_healicons
Warning:  Table ParticleEffectNames is full, can't add fx_spell_heal_smoke
Warning:  Table ParticleEffectNames is full, can't add fx_spell_heal_wafts
Warning:  Table ParticleEffectNames is full, can't add fx_ghostspell_book_appear
Warning:  Table ParticleEffectNames is full, can't add merasmus_blood_bits
Warning:  Table ParticleEffectNames is full, can't add merasmus_blood_bits
Warning:  Table ParticleEffectNames is full, can't add merasmus_blood_bits
Warning:  Table ParticleEffectNames is full, can't add merasmus_blood_bits
Warning:  Table ParticleEffectNames is full, can't add merasmus_blood_bits
Warning:  Table ParticleEffectNames is full, can't add merasmus_blood_bits
Warning:  Table ParticleEffectNames is full, can't add blood_impact_red
Warning:  Table ParticleEffectNames is full, can't add merasmus_blood_bits
Warning:  Table ParticleEffectNames is full, can't add merasmus_blood_bits
Warning:  Table ParticleEffectNames is full, can't add rps_rock_red
Warning:  Table ParticleEffectNames is full, can't add rps_scissors_red
Warning:  Table ParticleEffectNames is full, can't add rps_rock_blue
Warning:  Table ParticleEffectNames is full, can't add rps_scissors_blue
Warning:  Table ParticleEffectNames is full, can't add dragons_fury_effect
Warning:  Table ParticleEffectNames is full, can't add smoke_train
Warning:  Table ParticleEffectNames is full, can't add fluidSmokeExpl_ring_mvm
Warning:  Table ParticleEffectNames is full, can't add merasmus_blood_bits
Warning:  Table ParticleEffectNames is full, can't add bullet_pistol_tracer01_red
Warning:  Table ParticleEffectNames is full, can't add bullet_pistol_tracer01_blue
Warning:  Table ParticleEffectNames is full, can't add bullet_pistol_tracer01_red
Warning:  Table ParticleEffectNames is full, can't add bullet_pistol_tracer01_blue
Warning:  Table ParticleEffectNames is full, can't add bullet_scattergun_tracer01_red
Warning:  Table ParticleEffectNames is full, can't add bullet_scattergun_tracer01_blue
Warning:  Table ParticleEffectNames is full, can't add bullet_scattergun_tracer01_red
Warning:  Table ParticleEffectNames is full, can't add bullet_scattergun_tracer01_blue
Warning:  Table ParticleEffectNames is full, can't add bullet_shotgun_tracer01_red
Warning:  Table ParticleEffectNames is full, can't add bullet_shotgun_tracer01_blue
Warning:  Table ParticleEffectNames is full, can't add bullet_scattergun_tracer01_red
Warning:  Table ParticleEffectNames is full, can't add bullet_scattergun_tracer01_blue
Warning:  Table ParticleEffectNames is full, can't add bullet_shotgun_tracer01_red
Warning:  Table ParticleEffectNames is full, can't add bullet_shotgun_tracer01_blue
Warning:  Table ParticleEffectNames is full, can't add bullet_shotgun_tracer01_red
Warning:  Table ParticleEffectNames is full, can't add bullet_shotgun_tracer01_blue
Warning:  Table ParticleEffectNames is full, can't add bullet_shotgun_tracer01_red
Warning:  Table ParticleEffectNames is full, can't add bullet_shotgun_tracer01_blue
Warning:  Table ParticleEffectNames is full, can't add bullet_shotgun_tracer01_red
Warning:  Table ParticleEffectNames is full, can't add bullet_shotgun_tracer01_blue
Warning:  Table ParticleEffectNames is full, can't add bullet_pistol_tracer01_red
Warning:  Table ParticleEffectNames is full, can't add bullet_pistol_tracer01_blue
Warning:  Table ParticleEffectNames is full, can't add bullet_pistol_tracer01_red
Warning:  Table ParticleEffectNames is full, can't add bullet_pistol_tracer01_blue
Warning:  Table ParticleEffectNames is full, can't add bullet_pistol_tracer01_red
Warning:  Table ParticleEffectNames is full, can't add bullet_pistol_tracer01_blue
Warning:  Table ParticleEffectNames is full, can't add bullet_pistol_tracer01_red
Warning:  Table ParticleEffectNames is full, can't add bullet_pistol_tracer01_blue
Warning:  Table ParticleEffectNames is full, can't add bullet_pistol_tracer01_red
Warning:  Table ParticleEffectNames is full, can't add bullet_pistol_tracer01_blue
Warning:  Table ParticleEffectNames is full, can't add Explosion_bubbles
Warning:  Table ParticleEffectNames is full, can't add merasmus_tp_bits```
@sapphonie
Copy link

fixed with this sourcemod plugin, fixable by bumping the ParticleEffectNames stringtable size to... something bigger, properly fixable by clearing that strtable every map load

@ellie12134
Copy link

I am having the exact same issue constantly, It didnt used to happen before the latest patch came into effect

@rowedahelicon
Copy link
Author

rowedahelicon commented Sep 4, 2022

I am having the exact same issue constantly, It didnt used to happen before the latest patch came into effect

I made a small edit to my post above, I believe that the summer crate is most likely what set this over the limit with the addition of new unusual effects.

@ellie12134
Copy link

Ooooh dear, that makes so much more sense, I really hope it gets sorted out, I really hope valve is actively looking into this

@Joshua-Ashton
Copy link

Joshua-Ashton commented Sep 10, 2022

The problem here isn't that the table isn't cleared. It definitely is cleared every changelevel in SV_CreateNetworkStringTables.

The real problem is that the particle manager dictionary is not cleared on changelevel, which then appends some of the particles from the maps that have their own particle manifests into it as a bunch of these maps with particle manifests have force precache applied to some particle files.
The particle manager dictionary is then used to re-populate the particle string tables, which is why you think it isn't being cleared.

It looks like we are also running reeeeeally close to the particle limit as well, especially on those halloween maps, so I have also raised the table to 8192 for the next update.

Thanks for the report!

@rowedahelicon
Copy link
Author

The problem here isn't that the table isn't cleared. It definitely is cleared every changelevel in SV_CreateNetworkStringTables.

The real problem is that the particle manager dictionary is not cleared on changelevel, which then appends some of the particles from the maps that have their own particle manifests into it as a bunch of these maps with particle manifests have force precache applied to some particle files. The particle manager dictionary is then used to re-populate the particle string tables, which is why you think it isn't being cleared.

It looks like we are also running reeeeeally close to the particle limit as well, especially on those halloween maps, so I have also raised the table to 8096 for the next update.

Thanks for the report!

Excellent news, thank you! Understandable too, I did originally try poking at the particle dictionary as per the method used in the CS:GO plugin, though I was unable to replicate the fix without constant server crashes. I was even surprised to see eventually that simply increasing the size of the table was a sufficient fix as the tables are more or less representations of the data.

Regardless, I am very thankful to see this being addressed! <3

@kisak-valve
Copy link
Member

Hello, per "Fixed precached particles not being deleted across map changes" in the 2022-09-26 Team Fortress 2 update, please retest this issue.

@rowedahelicon
Copy link
Author

Hello, per "Fixed precached particles not being deleted across map changes" in the 2022-09-26 Team Fortress 2 update, please retest this issue.

I can confirm, having gone through my list of around 20 Halloween maps, that the problem has indeed been solved. The list no long flows over ~4096 particles after a series of map changes.

@Wasmanr2
Copy link

Fix works

(played several maps in the same server to see if the "red X spam" occours, it doesn't anymore)
+see previous comment

issue can be closed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants