PoolPro
Object pooling for Actors, User Widgets and any UObject: reuse instances instead of spawning and destroying them, with prioritized spawn queues spread over frames.
Highlights
All 12 features βPoolPro keeps objects that appear again and again - projectiles, impact effects, pickups, enemies, damage numbers, list entries - in pools and hands them out again instead of creating and destroying them every time. It works with any Actor, User Widget or UObject class out of the box and needs no changes to your classes.
Use the Take From Pool node to get an object of a class: if a free one is waiting in the pool it is activated immediately, otherwise new objects are spawned over the following frames, a few per frame, so large requests do not cause a hitch. Return To Pool deactivates the object again - pooled actors are hidden, lose collision and stop ticking, pooled widgets are collapsed. Array versions handle many objects at once, and priorities let urgent requests jump the queue or spawn in the same frame.
Objects can react to being taken or returned through the Pool Object Callback interface, and pool factories let you define how other kinds of objects are spawned, activated and destroyed - in Blueprint or C++.
PoolPro is part of the Alpha XP utilities collection for Unreal Engine 4.27 and 5.8. Every feature is exposed to Blueprints and C++, it ships with styled HTML documentation, and it is compiled and verified warning-free against clean UE 4.27 and UE 5.8 projects.
Key features
- Pools for any UObject, Actor and User Widget class, created on demand per class
- Take From Pool and Take From Pool Array Blueprint nodes with a Completed output
- Return To Pool and Return To Pool Array, plus handles that can cancel a spawn that is
- Spawning spread over frames with a configurable number of objects per frame
- Four priorities: Normal, Medium, High and Critical (spawned in the same call)
- Pooled actors are hidden, have collision and ticking disabled and are moved out of the
- Pooled widgets are collapsed while inactive
- Pool Object Callback interface: On Take From Pool, On Return To Pool, On Changed State
- Pool factories for custom object types, extendable in Blueprint or C++
- Queries: object state, free and registered counts, handles, empty one pool or all pools
- World subsystem: one set of pools per world, with C++ templates for typed access
- Project settings for objects spawned per frame and the active factories
Blueprint & C++ API
The API is organised into these entry points:
| Class | Type | Nodes | Use it for |
|---|---|---|---|
| PoolProSubsystem | World subsystem | 10 | One instance per world/level. |
| PoolFactory_UObject | Object | 6 | Each factory implements specific logic of creating and managing objects of its class and its children. |
| PoolProSettings | Project settings | 3 | Contains common settings data of the PoolPro plugin. Is set up in 'Project Settings' -> "Plugins" -> "PoolPro". |
| PoolProUtils | Function library | 1 | Blueprint utility class for PoolPro. Provides helper functions for blueprints. |
Callable runs when executed Β· Pure no exec pin, returns a value
| Node | Type | Available on | Description |
|---|---|---|---|
| Get Pool Pro() β Pool Pro Subsystem | Pure | Subsystem | Returns the pointer to the PoolPro. Is useful for blueprints to obtain **default** PoolPro. |
| Get Pool Pro By Class(Optional Class: Pool Pro Subsystem) β Pool Pro Subsystem | Pure | Subsystem | Returns the pointer to custom PoolPro by given class. Is useful for blueprints to obtain your **custom** PoolPro. |
| Add Factory(Factory Class: Pool Factory U Object) | Callable | Subsystem | Registers new factory to be used by the PoolPro when dealing with objects of specific class and its children. |
| Remove Factory(Factory Class: Pool Factory U Object) | Callable | Subsystem | Removes factory from the PoolPro by its class. In most cases, you don't need to use this function since factories are removed with destroying the PoolPro. |
| Find Pool Factory Checked(Object Class: Class) β Pool Factory U Object | Pure | Subsystem | Traverses the class hierarchy to find the closest registered factory for a given object type or its ancestors. |
| Get Object Class By Factory(Factory Class: Pool Factory U Object) β Class | Pure | Subsystem | Returns default class of object that is handled by given factory. |
| Is Pool Object Valid(In Pool Object: Pool Object Data) β Boolean | Pure | Subsystem | Returns true if object is valid and registered in pool. |
| Find Pool Object By Handle(Handle: Pool Object Handle) β Pool Object Data | Pure | Subsystem | Returns the object associated with given handle. Can return invalid PoolObject if not found or object is in spawning queue. |
| Find Pool Handle By Object(Object: Object) β Pool Object Handle | Pure | Subsystem | Returns handle associated with given object. Can be invalid (FPoolObjectHandle::EmptyHandle) if not found. |
| Find Pool Objects By Handles(In Handles: Array of Pool Object Handle) β Out Objects | Pure | Subsystem | Returns from all given handles only valid ones. |
| Make Spawn Request(Object Class: Object, Transform: Transform, Priority: Spawn Request Priority) β Spawn Request | Pure | Static | Creates a spawn request for pool objects. This function properly initializes the FSpawnRequest with a valid handle. |
| Get Pool Pro Settings() β Pool Pro Settings | Pure | Project settings | Returns Project Settings data of the PoolPro plugin. |
| Get Spawn Objects Per Frame() β Integer | Pure | Project settings | Returns a limit of how many actors to spawn per frame. |
| Get Pool Factories() β Out Blueprint Pool Factories | Pure | Project settings | Returns all Pool Factories that will be used by the PoolPro. |
| Dequeue Spawn Request() β Boolean, Out Request | Callable | Object | Removes the first spawn request from the queue and returns it. Is called after 'RequestSpawn'. |
| Process Request Now(Request: Spawn Request) | Callable | Object | Calls SpawnNow with the given request and process the callbacks. |
| Dequeue Spawn Request By Handle(Handle: Pool Object Handle) β Boolean, Out Request | Callable | Object | Alternative method to remove specific spawn request from the queue and returns it. |
| Is Spawn Queue Empty() β Boolean | Pure | Object | Returns true if the spawn queue is empty, so there are no spawn request at current moment. |
| On Pre Registered(Request: Spawn Request, Object Data: Pool Object Data) | Callable | Object | Is called right after object is spawned and before it is registered in the Pool. Is called after 'SpawnNow'. |
| On Post Spawned(Request: Spawn Request, Object Data: Pool Object Data) | Callable | Object | Is called right after object is spawned and registered in the Pool. Is called after 'OnPreRegistered'. |
Project settings
Configure once under Project Settings βΊ Plugins βΊ PoolPro β values are saved to the project's config .ini, so they travel with the project and your build.
| Setting | Section | Type | What it does |
|---|---|---|---|
| Spawn Objects Per Frame | [PoolPro] | Integer | Set a limit of how many actors to spawn per frame. |
| Pool Factories | [PoolPro] | Array of Pool Factory U Object | All Pool Factories that will be used by the PoolPro. |
Options & enums
| Enum | Values |
|---|---|
| Pool Object State | None Inactive Active |
| Spawn Request Priority | Normal Medium High Critical |
Compatibility
One ready-made build per engine version is included in the download β copy the one that matches your project.
| Platform | Supported in |
|---|---|
| Windows | Editor & packaged |
| macOS | Editor & packaged |
| Module | Type | Loading phase |
|---|---|---|
| PoolPro | Runtime | EarliestPossible |
| PoolProEditor | UncookedOnly | EarliestPossible |
Technical details
| Code modules | PoolPro (Runtime), PoolProEditor (UncookedOnly) |
|---|---|
| Blueprints | 0 Β· C++ classes: 9 |
| Network replicated | No |
| Development platforms | Windows: Yes, Mac: Yes |
| Target build platforms | Win64, Mac |
| Third-party software | No |
| Engine versions | Unreal Engine 4.27 Β· 5.8 β a build for each is included |
| C++ classes | 10 + 5 structs |
| Blueprint nodes | 20 |
| Documentation | Documentation.html (in the download) |
| Download | PoolPro.zip Β· 163 KB |
| Version | v1.0.0 |
What's in the download
| File | What it is |
|---|---|
| PoolPro 4.27.zip | Plugin build for Unreal Engine 4.27 |
| PoolPro 5.8.zip | Plugin build for Unreal Engine 5.8 |
| Documentation.html | Documentation (open in a browser) |
Quick start
- Unzip the download and pick the build that matches your engine (4.27 Β· 5.8).
- Copy the PoolPro folder into your project's Plugins/ folder (create it if needed).
- Open the project, enable PoolPro under Edit βΊ Plugins and restart the editor.
- Fill in Project Settings βΊ Plugins βΊ PoolPro.
- Right-click in any Blueprint graph and search [PoolPro] β or include the public headers from C++.
- Package for your target platform (Windows, macOS).
Good to know
Built and verified warning-free for Unreal Engine 4.27 and 5.8. Pools belong to a world (one set of pools per game world, editor world and play-in-editor world) and are not replicated. The PoolProEditor module only provides the Take From Pool nodes and is not packaged into games. Both modules are enabled for Win64 and Mac; the code is platform-independent engine C++ with no OS-specific calls. Developed and maintained by Alpha XP.
Everything included
- Pools for any UObject, Actor and User Widget class, created on demand per class
- Take From Pool and Take From Pool Array Blueprint nodes with a Completed output
- Return To Pool and Return To Pool Array, plus handles that can cancel a spawn that isβ¦
- Spawning spread over frames with a configurable number of objects per frame
- Four priorities: Normal, Medium, High and Critical (spawned in the same call)
- Pooled actors are hidden, have collision and ticking disabled and are moved out of theβ¦
- Pooled widgets are collapsed while inactive
- Pool Object Callback interface: On Take From Pool, On Return To Pool, On Changed Stateβ¦
- Pool factories for custom object types, extendable in Blueprint or C++
- Queries: object state, free and registered counts, handles, empty one pool or all pools
- World subsystem: one set of pools per world, with C++ templates for typed access
- Project settings for objects spawned per frame and the active factories
Platforms
Requirements
- Unreal Engine 4.27 and 5.8
- Develop on Windows (Win64)
- Blueprints and C++
In the download
Personal
One non-commercial project
- 1 activation seat
- 1 year of updates
- One end product
- Non-commercial use
- Community support
- 14-day refund window
Commercial
Ship paid products
- 5 activation seats
- 1 year of updates
- One paid end product
- Unlimited end users
- Priority support
- Source files
- 14-day refund window
Extended
Resell & white-label
- Unlimited activation seats
- Lifetime updates
- Unlimited end products
- White-label & resell
- 1-hour SLA
- Seat-free team use
- 14-day refund window
One purchase per product, no subscription. Each licence comes with a signed key β 1 seat on Personal, 5 seats on Commercial, unlimited seats on Extended. Paid licences can be refunded within 14 days from your order page.
- v1.0.0Latest
- Unreal Engine 4.27 and 5.8
- Blueprint and C++ API, HTML documentation
Be the first to review PoolPro β reviews come from customers who bought it, so every one is a verified purchase.
Frequently asked
How do I get the files after paying?
Straight after checkout you land on your order page with the download button and your licence key. A receipt is emailed to you, and every order stays in My library.
Which licence do I need?
Personal β One non-commercial project. Commercial β Ship paid products. Extended β Resell & white-label. The Licences tab compares them side by side.
On how many devices can I activate it?
1 seat on Personal, 5 seats on Commercial, unlimited seats on Extended.
How long do I get updates?
Personal: 1 year of updates, Commercial: 1 year of updates, Extended: lifetime updates, counted from your purchase.
Can I get a refund?
Yes β paid licences can be refunded within 14 days, straight from your order page.
Is the download safe?
The file was scanned with ClamAV when it was published. Its SHA-256 checksum is listed under Features β In the download, so you can verify the file you receive.
Do I need an account?
No. Checkout only needs your email. Signing in keeps all your purchases, keys and downloads together in My library.
More like this
AudioLens
Real-time audio analysis: FFT spectrum, onset and beat detection, and a full set of time- and frequency-domain descriptors..
β β β β β No reviews yetTTechHarbour$14.00BlueprintTCP
BlueprintTCP lets you connect to any TCP server and exchange data entirely from Blueprints β no C++ and no networking boilerplate.
β β β β β No reviews yetTTechHarbour$12.99BluetoothLink
Bluetooth Low Energy for Unreal - scan, connect, read, write and subscribe to BLE devices on Android and iOS.
β β β β β No reviews yetTTechHarbour$11.99ClusterLink
SocketCluster realtime client for Unreal - pub/sub channels, auth engine and JSON codec, usable from Blueprints.
β β β β β No reviews yetTTechHarbour$11.99