Search Unity

Pool Kit - The ultimate system for pooling, spawning and despawning

Discussion in 'Assets and Asset Store' started by melgeorgiou, Jun 20, 2018.

  1. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    568
    Hi everyone,

    I'd like to introduce PoolKit, soon to be released on the Asset Store!



    About PoolKit v1.0

    PoolKit is a truly next generation system for pooling, spawning and despawning.

    Ever heard of “Pool Types”, “Chain Spawning” or “Automatic Despawning”? Among many other concepts, PoolKit is first to offer these unique and innovative pooling features in an easy to use, streamlined and professional series of tools to help you annihilate memory allocations and improve the performance of your games!

    PoolKit is a unique solution that tackles the problem of garbage collection which comes from instantiating objects. These memory allocations can cause huge spikes and “stuttering” in gameplay. PoolKit can uniquely pool and spawn your prefabs with ZERO garbage collection which can be up to 77% faster than instantiation (~33% on average) and helps to make your game a smoother experience which is increasingly needed on platforms like mobile and VR!

    PoolKit also thinks about how you work in Unity and includes it’s own powerhouse of a Spawner. This can be used to create enemies, special effects, weapon systems and more! In addition, an incredibly powerful all-purpose Despawner component can be attached to your gameobjects to despawn them after they are triggered by countdowns, particle systems, audio sources, physics collisions or scripts. It then allows you to setup “Chain Spawning”, a specialized despawner feature to spawn any number of new instances to replace a despawning object. This is just a tiny fraction of what PoolKit can do and I invite you all to check out the videos and demos!

    Features
    • Complete Solution For Pooling, Spawning, and Despawning!
    • Easy To Use Visual Inspectors!
    • Use “Pool Types” to select the data architecture of each pool!
    • “Pool Protection” can rebuild your pools in real-time!
    • Pools can be local to a scene or global to many or all scenes!
    • Automatically create global pools when the game starts!
    • “Instance Recycling” can re-spawn existing instances!
    • “Preloading” can create instances over time!
    • Instances can have “Automatic Despawning” setup via the pool!
    • Recieve Notifications when specific prefabs change state!
    • Unique scripting interface offers blazingly fast notifications!
    • Advanced Spawner to spawn enemies, weapons, effects and more!
    • Powerful Despawner to configure events that despawn your objects!
    • Unique Chain-Spawning System built into every despawner!
    • Cross platform and works in 2D & 3D projects!
    • Comprehensive API!
    • Comes with 5 Tech Demos and 9 Example scenes!
    • Documentation PDF and High quality video tutorials!
    • Full source, No DLLs!
    • Fast and friendly email support!
    • Compatible with Unity 5.6.x, 2017.x and 2018.x!

    3rd Party Integration
    • Built-in PlayMaker actions!

    Introduction Video


    Find out more about PoolKit in this short video:




    Promo Images

    Find out more about Pool Kit with these promo images:
    PoolKit - Promo 02 - Pool Types  And Pool Protection.png PoolKit - Promo 05 - Statistics.png PoolKit - Promo 06 - Spawner.png PoolKit - Promo 07 - Despawner.png PoolKit - Promo 08 - Chain Spawning.png


    Tutorial Videos:

    Follow these tutorials to become a Pool Kit pro! :)

    > Tutorial 1 - PoolKit Pools
    > Tutorial 2 - PoolKit Spawners & Despawners


    Documentation


    Take a look at the Pool Kit manual here:

    > Documentation (PDF)


    WebGL Tech Demos:

    Check out these cool WebGL demos to get an idea what PoolKit can do for your games! :)

    > WebGL Demo 1 - Spaceships
    > WebGL Demo 2 - Breaking Rocks
    > WebGL Demo 3 - Lazer Cannons
    > WebGL Demo 4 - Interactive Fireworks
    > WebGL Demo 5 - Performance Tests


    Release / Price

    The system is pending approval on the Asset Store. It will be launching with a huge 50% discount at launch and selling for $30 (reduced from $60).

    If you can't wait, good news! It's available on my site too which can be found here: http://www.unitygamesdevelopment.co.uk/downloads/poolkit-pooling-system-for-unity

    Thanks for your interest! If you have any questions, feel free to ask! :)

    - Mel
     
    Last edited: Jun 20, 2018
  2. f1chris

    f1chris

    Joined:
    Sep 21, 2013
    Posts:
    240
    it looks promising. I'll take a serious look at it.

    Is your spawner can support a random range, radius or area ?

    Can you have like 5 different ennemies characters and spawn them at random ?

    thx

    EDIT: should have read the documentation first LOLL

    Think from the doc your Random Range & Random With Weights functionalities are doing pretty much that and more.
     
  3. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    568
    Hi @f1chris,

    Thanks for your interest in PoolKit! :)

    There are loads of ways to randomize both enemies and spawn points - glad you found what you needed in the docs!

    If you have any more questions feel free to ask! :)

    - Mel
     
  4. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    568
  5. AndroYD

    AndroYD

    Joined:
    Nov 3, 2014
    Posts:
    25
  6. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    568
    Hi @AndroYD,

    Its a little difficult to compare as I'm obviously biased, but I would honestly say on balance I think PoolKit has way better features across the board as well as totally unique features other systems don't have. PoolKit is actually first to introduce Pool Types and Chain Spawning systems (as far as I know). Based on what I can tell, PoolKit's spawners and despawners appear to have more features based on the docs. PoolKit's "Automatic Despawning" is another cool feature that happens at the pool-level!

    Also, PoolKit allows you to setup a unique physics event in the despawner without using memory allocations each frame (it doesn't look like that's the case with the other system based on some of the comments ). PoolKit also gives you control over the source of the collisions which other systems don't offer either. It is possible to get memory allocations to zero with PoolKit as internally it doesn't even use co-routines by design.

    Another point is PoolKit allows advanced users to turn off specific features they don't need to gain performance boosts.

    That's just a few of the reasons I would encourage people to try Pool Kit. Hope that helps! :)

    - Mel
     
  7. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    568
    Hi everyone,

    POOL KIT v1.0.1 IS NOW LIVE!

    PoolKit v1.0.1 is now LIVE on my site, and should hopefully be available on the Asset Store soon.

    It's a small update which allows you to minimize and expand prefabs in the Pool Editor. This is very helpful for very large pools - thanks to Dhruv for the request! :)

    Collapsable Prefabs.png

    Please remember to backup your projects before updating. I'll let everyone know when the update is available on the Asset Store.

    Thanks to everyone who has purchased Pool Kit so far! :)

    - Mel
     
  8. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    568
    POOL KIT v1.0.1 IS NOW LIVE ON THE ASSET STORE!

    PoolKit v1.0.1 is now LIVE on the Asset Store !

    IMPORTANT: Please remember to backup your projects before updating! :)

    - Mel
     
  9. RandAlThor

    RandAlThor

    Joined:
    Dec 2, 2007
    Posts:
    1,257
    Would like to know if/how i can use it with unet in a multiplayer game?
     
  10. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    568
    Hi RandAlThor,

    This seems more of a question for the unet guys as I'm not familiar with their system. However, if unet can support objects that are "pooled" from 3rd party systems out of the box then PoolKit shouldn't have a problem with it :)

    Hope that helps!

    - Mel
     
  11. heynemann

    heynemann

    Joined:
    Oct 18, 2016
    Posts:
    4
    Hey,

    Just bought Poolkit, but can't use it. After importing it into Unity 2018.3.6f1, I get a couple errors when trying to add a pool:

    * Can't add script behaviour Pool because it is an editor script. To attach a script it needs to be outside the 'Editor' folder.
    PoolKitMenuItems.CreateGlobalPool() Assets/Editor Default Resources/Editor/Hell Tap Entertainment/PoolKit/PoolKitMenuItems.cs:66
    64: // Instantiate it in the scene
    65: GameObject poolGO = new GameObject("PoolKit Global Pool");
    -->66: Pool pool = poolGO.AddComponent<Pool>();
    67: pool.dontDestroyOnLoad = true;

    GenericMenu.CatchMenu()

    * [Exception] NullReferenceException: Object reference not set to an instance of an object
    PoolKitMenuItems.CreateGlobalPool() Assets/Editor Default Resources/Editor/Hell Tap Entertainment/PoolKit/PoolKitMenuItems.cs:67
    65: GameObject poolGO = new GameObject("PoolKit Global Pool");
    66: Pool pool = poolGO.AddComponent<Pool>();
    -->67: pool.dontDestroyOnLoad = true;
    69: // Register Undo

    GenericMenu.CatchMenu()

    This makes it impossible to use the Pool :(

    Another question: can I place the asset in a different folder? All my third-party assets live in the Assets/thirdparty folder with its own Asmdef. That way I keep compilations down to only the parts that changed.

    Thank you!
     
  12. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    568
    Hi heynemann,

    Sorry to hear you've run into an issue. My initial thoughts are you have likely broken the system by moving everything into different directories, or more likely due to the asmdef setup you're trying to achieve ( I haven't tested PoolKit that way and cannot yet offer support for that kind of setup at this stage ).

    Because of the custom inspectors in PooKit, it requires things to be in the correct folders to load resources into the Editor. I would also note that the "Editor Default Resources" folder is a special Unity folder designed for this very purpose. The contents are essentially editor-only assets that wont be included into your builds unless you directly reference them.

    For now, I would suggest removing all the PoolKit files from your project and installing it again, preserving the original file structure.

    Hope this helps! :)
     
  13. heynemann

    heynemann

    Joined:
    Oct 18, 2016
    Posts:
    4
    I got it working by reimporting everything and moving only the "Hell Tap Entertainment" folder to my thirdparty folder.

    I got a different question now. I really want to use the spawners but I require that it spawns new objects in an unnocupied spot. Is this something you plan on supporting? Like, spawn 20 units, so they don't spawn on the exact same spot. If it is something that the Spawner already supports, sorry for the ignorance, hehehe.

    Thanks for the quick replies!
     
  14. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    568
    Hi heynemann,

    Glad you got it working :)

    Hmm, I guess the simplest way is to use the "sequence ascending" option and setup your spawn points normally ( in your case, set up 20 different spawn points ). This will cause all of the 20 spawned units to be in each of the 20 different locations and therefore none of them should be in the same spot.

    Hope this helps!
     
  15. Aislin

    Aislin

    Joined:
    Feb 22, 2014
    Posts:
    16
    Hello! I have a quick question. I use Playmaker and am currently experiencing pretty big performance spikes when I first start my game and am trying to instantiate all my pools. It seems the major performance spike occurs in Fsm.InitData() in the profiler, which is basically where PlayMakerFSM is initializing all its actions and variables.

    I'm considering purchasing Pool Kit to replace my object pool I coded that is instantiating the prefabs. I watched the tutorials and it seems like the lazy pre-loading might be what I need since most of my prefabs are pretty big with a lot of PlaymakerFsm components. My question: Do you think Pool Kit will help with performance issue? I'm using a simple "Instantiate" now to create the pool. I saw on your video that Pool Kit is on average ~33% faster than instantiate, so I just wanted to see if you thought your asset could help with this.

    Thanks!

    Nick
     
  16. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    568
    Hi Nick,

    Firstly, thanks for your interest in PoolKit! :)

    Yep, using lazy preloading should help to lessen the initial memory spike by adding objects to the pool over time rather than instantly in one go. You can also configure how fast / slow this happens to find a balance that works best in your project.

    Hope this helps! :)

    - Mel
     
  17. XCPU

    XCPU

    Joined:
    Nov 5, 2017
    Posts:
    114
    Very nice Asset. (left ya a review)
    One minor suggestion if you do an Update sometime;
    A little more compact option or something for the Prefab Inspector for those longer Pools, save some scrolling.
     
  18. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    568
    Hi @XCPU,

    Thanks for the positive review, much appreciated!

    I've added your suggestion to the wish-list! :)

    - Mel
     
  19. Duffer123

    Duffer123

    Joined:
    May 24, 2015
    Posts:
    1,032
    @melgeorgiou ,

    Hi. Interested in this Asset. Could I use it for weighted loot item spawning say?
     
  20. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    568
    Hi @Duffer123,

    Firstly, thanks for your interest in PoolKit!

    And yep, you sure can :)

    - Mel
     
    Last edited: Mar 26, 2019
    Duffer123 likes this.
  21. Duffer123

    Duffer123

    Joined:
    May 24, 2015
    Posts:
    1,032
    @melgeorgiou , excellent. Thanks for confirming so quickly. Will now save up to buy... ;)
     
  22. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    568
  23. Censureret

    Censureret

    Joined:
    Jan 3, 2017
    Posts:
    189
    Hey. I have a problem with the spawner spawning actual instances of the pool instead of a prefab from the pool.

    My pool is a global pool that has the following prefabs:

    upload_2019-4-3_14-32-44.png

    And my spawner uses this pool:

    upload_2019-4-3_14-33-9.png

    upload_2019-4-3_14-33-23.png

    I then call it using the api:

    VillagerSpawner.Spawn();

    And then it spawns a new instance of the pool:

    upload_2019-4-3_14-34-3.png

    Can anyone help me out here? :) What have i done wrong?
     
  24. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    568
    Hi @Censureret,

    It's because you've set the Villager Pool in the spawner instead of the actual prefab you want to spawn. PoolKit spawners already figure out what pool it should access so you should only tell it the actual prefab you want to spawn :)

    To fix this, go to your spawner and change the "villager pool" reference to either "villager" or "femaleVillager".

    Hope that helps! :)

    - Mel
     
  25. Censureret

    Censureret

    Joined:
    Jan 3, 2017
    Posts:
    189
    That helped thank you so much
     
  26. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    568
  27. KitChristopher

    KitChristopher

    Joined:
    Mar 4, 2019
    Posts:
    4
    Hey! I'm really interested in your object pooler, but was wondering if the pooler will be updated to work with Unity's addressables and ECS in the future?
     
  28. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    568
    Hi @KitChristopher,

    Firstly, thanks for your interest in PoolKit! :)

    As these are all very new Unity features that have not been fully rolled out I can't say much right now. However, I'm definitely interested in looking at them more closely. In any case, I plan to keep PoolKit updated for years to come!

    Hope this helps! :)

    - Mel
     
    Aaron2348 likes this.
  29. KitChristopher

    KitChristopher

    Joined:
    Mar 4, 2019
    Posts:
    4
    Thanks for the quick reply! Alright, sounds good, I look forward to seeing what you cook up next!
     
  30. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    568
    No worries! :)
     
  31. dKaiser20

    dKaiser20

    Joined:
    Mar 4, 2018
    Posts:
    3
    Hello Mel.

    I`ve been trying to look at the documentation on how to chain spawn a prefab via script but i can`t find any.
    What i`m trying to do is chain spawn different prefabs depending on its state. The only option I can get is to chain spawn it using only physics or except physics. I wish I could dynamically chain spawn prefabs via script, is it possible?

    The best pooling asset so far and i love the chain spawning feature, that`s why my game is fully dependent on this asset.

    Best regards,
    Jayson
     
  32. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    568
    Hi Jayson,

    you should be able to trigger any gameobject with chain-spawning setup by telling it's despawner to Despawn:

    myDespawner.Despawn();

    Within the chain-spawning system itself, there are currently 2 "Events" for differentiating what objects to create. You can despawn normally or act as if it has collided with a physics object. You can simulate any of these by sending true or false to the same function ( true = simulate physics collision, false = despawn normally ):

    myDespawner.Despawn( true );

    I hope that helps! :)

    - Mel
     
  33. dKaiser20

    dKaiser20

    Joined:
    Mar 4, 2018
    Posts:
    3
    Thank you for the prompt reply Mel,

    I`ve done that already, what I am trying to achieve now is a function something like this:

    private void DespawnDifferentPrefabDependingOnItsState()
    {​

    if(state == A)
    {
    myDespawner.Despawn("chain-spawn prefab A");
    }
    else if (state == B)
    {
    myDespawner.Despawn("chain-spawn prefab B");
    }
    else
    {
    myDespawner.Despawn("chain-spawn prefab C");
    }​

    }​
    Is there any other way for me to do this? Thank you

    Best regards,
    Jayson
     
  34. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    568
    Hi Jayson,

    It sounds as if you want custom events built into chain-spawning. No, this isn't possible at the moment. However, I'll add the feature request to the Wishlist :)

    - Mel
     
  35. dKaiser20

    dKaiser20

    Joined:
    Mar 4, 2018
    Posts:
    3
    Hi Mel,

    WoW! Thanks! Pool Kit will be more than perfect if that could be added to its chain-spawning feature.:)

    -Jayson
     
    melgeorgiou likes this.
  36. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    568
    No worries!

    There's no time frame for it yet, but its on the list :)

    - Mel
     
  37. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    568
    DataKit_Header.png

    Hi everyone,

    I've just released a new tool called Data Kit - The Reimagined Data Serialization System For Unity.

    DataKit is a unique cross-platform data serialization system to automatically handle most aspects of saving and loading your game's data. Features include local and global data, save slots, save points, data groups, obfuscation, encryption and even automatic screenshots. Another great DataKit feature is the intuitive visual debugger, allowing you to view, edit, delete and restore your serialized data in real-time while testing your games in the Editor! DataKit is a powerful core asset that any game project would benefit from!

    As with all of my Unity plugins, it uses visual inspectors in an effort to make things as easy to use as possible (although some scripting is required). There are quite a few tutorial videos on the DataKit forum page but please check out this introduction video to see how DataKit can help with your own projects!



    DataKit is currently on sale with a 50% launch discount! For more information about DataKit check out the Asset Store page HERE. If you have any questions or suggestions for DataKit, please use its own unity forum page HERE.

    ... OK, now back to PoolKit! :)

    - Mel
     
    Duffer123 likes this.
  38. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    568
    Hi everyone,

    POOL KIT v1.0.2 IS NOW LIVE!

    PoolKit v1.0.2 is now LIVE on my site, and should hopefully be available on the Asset Store soon.

    It's a small update which fixes a bug when caching IPoolKitListeners on newer versions of Unity ( and also some performance improvements as a result ).

    I'll let everyone know when the Asset Store version has been approved! :)

    - Mel