Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.

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:
    766
    Hi everyone,

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



    About PoolKit v3.0.2

    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: Aug 3, 2021
  2. f1chris

    f1chris

    Joined:
    Sep 21, 2013
    Posts:
    335
    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:
    766
    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:
    766
  5. AndroYD

    AndroYD

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

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    766
    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:
    766
    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:
    766
    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,293
    Would like to know if/how i can use it with unet in a multiplayer game?
     
  10. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    766
    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:
    766
    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:
    766
    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:
    17
    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:
    766
    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:
    145
    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:
    766
    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,215
    @melgeorgiou ,

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

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    766
    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,215
    @melgeorgiou , excellent. Thanks for confirming so quickly. Will now save up to buy... ;)
     
  22. melgeorgiou

    melgeorgiou

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

    Censureret

    Joined:
    Jan 3, 2017
    Posts:
    361
    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:
    766
    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:
    361
    That helped thank you so much
     
  26. melgeorgiou

    melgeorgiou

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

    KitChristopher

    Joined:
    Mar 4, 2019
    Posts:
    6
    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:
    766
    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:
    6
    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:
    766
    No worries! :)
     
  31. dKaiser20

    dKaiser20

    Joined:
    Mar 4, 2018
    Posts:
    15
    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:
    766
    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:
    15
    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:
    766
    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:
    15
    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:
    766
    No worries!

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

    - Mel
     
  37. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    766
    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:
    766
    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
     
  39. Censureret

    Censureret

    Joined:
    Jan 3, 2017
    Posts:
    361
    Hey guys. is it possible to change the spawn points for the spawner at runtime?
     
  40. melgeorgiou

    melgeorgiou

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

    I'm away from my computer at the moment ( so wasn't able to verify ) but I believe something like this should work...

    Assuming you're trying to change the first Vector3 position of a spawner:

    Code (CSharp):
    1. // using HellTap.PoolKit;
    2. mySpawner.spawnpointPositions[0].spawnPoint = Vector3.zero;
    ... I think I'll be simplifying this into a more compact API method in the next update, lol.

    Hope this helps! :)

    - Mel
     
  41. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    766
    POOL KIT v1.0.3 IS NOW LIVE!

    I've just updated PoolKit to v1.0.3 to make updating spawner positions easier via scripting. In this version, updating vector3 positions can now be achieved like this:

    Code (CSharp):
    1. mySpawner.SetSpawnPointPosition( 0, Vector3.zero );
    The first parameter is the index of the position (the first index is 0), the second parameter is the new vector3 position you want to use. The documentation has also been updated.

    PoolKit v1.0.3 is already live at my website but should be available on the asset store shortly :)

    - Mel
     
  42. Censureret

    Censureret

    Joined:
    Jan 3, 2017
    Posts:
    361
    Hey, when i create my pool while using unity terrain my prefabs (units) pool spawns the instances outside of the navmesh and then when it activates moves that prefab to the spawn position. this is a problem as the instantiating then happens outside of the navmesh which creates issues.

    ive tried moving both the pool and the spawner onto the navmesh however without any luck can you help?
     
  43. melgeorgiou

    melgeorgiou

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

    As this is a very specific issue to your project could you please PM / email me with your invoice number and I'll be happy to offer a few suggestions :)

    - Mel
     
    Last edited: Aug 7, 2019
  44. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    766
    POOL KIT v1.0.4 IS NOW LIVE!

    Hi everyone!

    PoolKit v1.0.4 is a small update that improves how parenting works to avoid some console warnings ( specifically when using RectTransforms ).

    The update is already live at my website but should be available on the asset store soon! :)

    - Mel
     
  45. colony3z

    colony3z

    Joined:
    Jul 8, 2014
    Posts:
    25
    Spawn stuff easier huh!?
     
  46. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    766
    Hi @colony3z,

    Thanks for your interest!

    Feel free to check out the trailer and tutorial videos! :)

    - Mel
     
  47. MikhaskoS

    MikhaskoS

    Joined:
    Jun 24, 2018
    Posts:
    42
    Hi. Today started learning Pool Kit.
    It is possible to execute two spawn prefab at the same time from one spawn point?
     
  48. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    766
    HI @MikhaskoS,

    Yep, it's all down to setup.

    If you get stuck, please send me a PM / Email with your invoice number and I'll be happy to help! :)

    - Mel
     
  49. MikhaskoS

    MikhaskoS

    Joined:
    Jun 24, 2018
    Posts:
    42
    Hello.
    Pool Manager works well, but spawn system is difficult to use 100%.
    There are many ways to solve my problem, but the program has great potential to be a good spawn system.

    I have multiple Spawn Points and multiple prefabs in one Spawner.
    I want to spawn 2 prefab from a single point. It is enough to add Spawn Duration: At the same time in the settings.
    With the help of settings I was not able to do this (I did not get an answer either). Since I couldn't do it manually, I
    I wanted to use the API for precise control of Spawn Points. In this case, I could do the necessary Spawn on the active Spawn Point myself.
    However, in the code I did not find any open methods to get the index of the active Spawn Point.

    Maybe I'm stupid somewhere. Sorry for bad English.
     
  50. melgeorgiou

    melgeorgiou

    Joined:
    Nov 3, 2012
    Posts:
    766
    Hi @MikhaskoS,

    As I previously stated, I'll be more than happy to help provided you send me a private message / email including your invoice ID (proof of purchase). As far as I can tell you haven't sent me anything yet?

    After that we can delve into your issue and come up with a solution :)

    Thanks!

    - Mel