
Açıklama
Spawning and destroying actors is expensive. If your game creates bullets, impact
effects, pickups or enemies every few frames, that cost shows up as frame hitches
and garbage collection spikes.
Warmpool creates those actors once and reuses them. Instead of destroying an actor
you put it to sleep, and the next request wakes it back up.
WHAT MAKES IT DIFFERENT
No base class. Any Actor subclass works, including Blueprints you already shipped.
Nothing to reparent, nothing to migrate.
No setup. There is no manager to place, no config asset to create, no registration
step. Ask for an actor and you get one — the pool is created on first use.
Your actor never learns it is pooled. A reused instance comes back with its
components in the state SpawnActor would leave them in. Projectiles fly, particles
replay, sounds restart. You build the actor the ordinary way and it works.
That last point is the one most pooling systems leave to you. A Projectile Movement
component clears its own Updated Component on every impact, so a pooled projectile
would normally fly once and then be dead forever. Warmpool reconnects it and
re-applies Initial Speed on every spawn, so there is nothing to wire.
TWO NODES
Replace Spawn Actor from Class with Spawn Pooled Actor.
Replace Destroy Actor with Despawn Pooled Actor.
That is the whole API for most projects. Leave the Actor pin empty on Despawn and
it returns whoever called it — which is what a bullet returning itself on impact
wants.
WHEN YOU NEED MORE
Pool Profile — a data asset holding your pool sizes, so you type them once instead
of into every level.
Pool Prewarmer — drop it in the level and the pool is filled at load instead of
mid-combat. Set Per Frame and the work spreads across frames while the level keeps
running.
Pool Lifetime — a component that returns the actor after a set time. No timer
nodes, no Begin Play wiring.
Max Size and overflow policy — cap a pool, or make it refuse rather than grow.
Despawn All Pooled Actors — return a whole class at once. A wave cleared, a weapon
reloaded, a round reset.
Get Pool Stats — Total, Active and Available, for a debug overlay or to prove the
pool is actually being reused.
IT TELLS YOU WHEN SOMETHING IS WRONG
Prewarming eight thousand actors in one frame is a visible hitch. Warmpool times
its own work and tells you the Per Frame value that would have fit:
Prewarming 8000 instances of 'BP_Bullet' took 3400 ms in one frame (0.43 ms
each), which is a visible hitch. Set Per Frame to 11 on that pool row: the same
work then costs about 5 ms per frame and finishes in 728 frames, with the level
still running.
Those numbers are measured, not estimated. A pool that runs out, or a prewarm that
contradicts its own Max Size, gets the same treatment — one warning, once, with
both numbers named.
INCLUDED DEMO
A playable first person room. Shoot the button, enemies spawn from the corners,
walk at you and ragdoll when hit. Bullet and enemy pool counters are on the wall.
The demo is built from the same nodes you get — nothing in it is special-cased.
It lives in one folder and deleting that folder leaves the plugin working.
NOT SUPPORTED
Networking and replication are out of scope for this version. Warmpool runs
locally on whichever instance calls it. Replicated actors have their own lifetime
rules that pooling has to respect, and doing that properly is a larger job than
this plugin takes on. If you need pooled replicated actors today, this is not the
right tool.
Free, source included.







