Search Unity

  1. Unity 2017.2 beta is now available for download.
    Dismiss Notice
  2. Unity 2017.1 is now released.
    Dismiss Notice
  3. Introducing the Unity Essentials Packs! Find out more.
    Dismiss Notice
  4. Check out all the fixes for 5.6 on the patch releases page.
    Dismiss Notice
  5. Help us improve the editor usability and artist workflows. Join our discussion to provide your feedback.
    Dismiss Notice

50% off sale! [Released] Core GameKit! Pooling / Spawning / Combat

Discussion in 'Assets and Asset Store' started by jerotas, Jan 27, 2013.

  1. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    4,544
    50% off for a limited time! Normal price: $50

    Full pooling, spawning & "dead simple combat" systems included!

    Our pooling system "Pool Boss" is also available as a standalone plugin here.

    Contact us for discounted team & student licenses (support@darktonic.com).

    Dark Tonic is also available to provide training in our Plugins Master Audio & Core GameKit. Contact us at support@darktonic.com for more details!


    Works with Unity V 4.6+!

    Dramatically speed up your time to market for your new 3D or 2D game with Core GameKit! We've covered most of your bases with full pooling & combat systems, pickup support (for coins / health packs etc.), Player (and enemy) stat modification, enemy wave set up and level design tools with all the options you need! All done in minutes with no coding required!

    Core GameKit is Unity 4.6 & 5 integrated!
    5 Stars and 360+ reviews on the Unity Asset Store! Over 5,600 satisfied users!
    Purchase now at: https://www.assetstore.unity3d.com/en/#!/content/6640


    Third Party Integrations:
    - Playmaker
    - NGUI
    - Behavior Designer
    - NodeCanvas
    - ICode (was AI for Mechanim)
    - Dialogue System

    Key features:
    • Totally modular feature system - you can pick and choose which features you want to use. Unused features will not take any "overhead".
    • Full-featured pooling system to maximize your performance.
    • Set up global waves - each can trigger any number of spawners. This helps speed up level design greatly because you control timing of multiple spawners at once when you tweak the global waves.
    • Wave spawners - you can use elimination waves or timed waves with extremely deep parameters control for each. You can make waves like Fruit Ninja, Galaga, Gauntlet, or anything else. Preview mode shows you the wave pattern as you tweak in the Scene!
    • Triggered Spawners - these do not use the global wave setup but spawn when certain events occur, like a trigger, becoming visible, custom events, etc.
    • Prefab Pools - this allows you to set up probability of what's spawned from spawners, such as item A should appear 5 times as often as item B.
    • Killable - this Swiss army knife script gives you hit points, attack points, full combat system, layer and tag filters for fine hit detection control, prefab replacement and manipulates world variables upon "death". Easily make a tower defense, shooter game, side scroller and many other game types!
    • World Variables - you can set up any number of World Variables like score and health and have Killables change them when you destroy enemies, pick up health packs, etc. You can also set up waves to repeat until World Variables reach a certain value and a lot more!
    • Use the value of a World Variable in any Core GameKit Inspector (a la Playmaker)
    • Support for Unity 2D collisions and triggers!
    • Extensive video tutorials and thorough documentation!
    • All source code is included and is lightweight to work with mobile games.
    Purchase now at: https://www.assetstore.unity3d.com/en/#!/content/6640

    Main features sample:

    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]


    Click here for up to date documentation.

    Click here for the programming API.

    Click here for Web demo of "zero coding" enemy boss!

    "Pool Boss" pooling setup in a 3d game and adding spawners:


    "Prefab Pools" probability-based random spawning:


    Triggered Spawners and Despawners (any genre can benefit from these):


    Killables (combat) & World Variables!


    Quick Start for spawners:


    There are more videos in the Playlist, so watch them all!

    Core GameKit is coded in C# (still compatible with Javascript) and works on Unity 3 4, pro and free versions, all export platforms. You won't need to write any code to use any of the features. If you want to get super-custom, it is extensible through Listener events and the code you write will be minimal and simple.

    As always, if you have any ideas for features you'd like added, drop us a line at support@darktonic.com! We are committed to being the "best of breed" in our plugin categories.


    Purchase now at: https://www.assetstore.unity3d.com/en/#!/content/6640


    Changelog in V 3.2.7.3
    • Bug fix: A killable dying that isn't in Pool Boss will not spawn up to the limit of its Death Prefab in a huge loop. As a result, many Killable methods that were void are now boolean. Your subclasses will need to reflect that.
    • Bug fix: Respawn Custom Events for Killable would not fire if your Respawn Delay was > 0 seconds.
    • Added "Initialize Time (Frames)" field to Pool Boss. Defaults to 1. Now you can configure how many frames it takes to create all pools. You can set it between 1 and the number of different prefabs you have in Pool Boss.
    • Added PoolBossListener with methods: ItemSpawned, ItemDespawned, PercentInitialized, InitializationComplete.
    • Added Universal Custom Event Receiver script with the option to do one of the following when a chosen Custom Event occurs: Despawn, Destroy (Killable), Deal X Damage (Killable).
    • Now if a World Variable Listener becomes visible later on, it will show the correct updated World Variable value immediately instead of waiting for the next change.
    • Added a peak indicator on Pool Boss. Shows the max number that were spawned of each item since you hit Play. You can click the number to reset it to zero. There's also a Clear Peaks button at the top.
    • Added ability to pad beginning of World Variable Listener display with zeros for a fixed number of digits.
    • Added extension methods for all methods in PoolBoss that take a Transform parameter so you can call them from the Transform with 1 less parameter.
    • Added PoolBoss.DestroyCategoryPoolItems and DestroyPoolItem methods, only to be used when loading a new Scene with a persistent PB.
    • Added shift up / down / clone level buttons to global Level config.
    • Added Level/Wave Sort button to Syncro Spawners so you can get the Waves in order of level/wave at any time.

    Changelog in V 3.2.7.1
    • Breaking change: Valid Qty field for Custom Events (used for Closest or Random X Receivers option) has been changed to be able to select a World Variable value as well as entering a number. If you were using / want to use Random/Closest X, then you will need to delete existing Custom Events and create them again.
    • Added an Awake method to Killable Listener. That will be called when Spawned is not, that is, when a Killable starts already in the Scene and is not spawned the first time.
    • Added the new method to Killable's Playmaker Listener too.
    • Added Global wave shift up/down buttons.
    • Added a pop up prompt to make sure you want to delete / add / shift up / down Global waves because it can't be undone.
    • Fixed some Garbage Collection in Pool Boss.
    • Increased Group H.P. for Damage Prefab to max of 100,000 instead of 5,000. If you find it does not let you increase past 5,000 you will need to remove and re-add the Killable component.
    • Bug fix: PoolBoss.NextPoolItemToSpawn returned null even when Allow Instantiate More is checked.
    • Added Wave Description field for Global waves.

    Changelog in V 3.2.7
    • Add an option for spawners to "Spawn Outside Pool", meaning with no parent Game Object instead of under Pool Boss. Default is still under Pool Boss.
    • Added OnSameGameObject, OnChildGameObject & OnParentGameObject custom event Send To Receiver modes.
    • Breaking change: FireCustomEvent now takes a Transform instead of Vector 3. You must change any code that was calling it.
    • Updated Playmaker optional package to fix compile errors due to the above change.
    • Fixed bug where reloading a Scene would log errors for Custom Event Listeners in the Scene.
    • Fixed compile errors for Unity 2017 beta.

    Changelog in V 3.2.6.9
    • Fixed compile error for Unity 5.5
    • Fixed max qty mismatch in Pool Boss Inspector.
    • Fixed Pool Boss lookup prefab name error.
    • Fixed bug in PoolBossDespawn Playmaker Custom Action that would not despawn 2 different objects if the property changed.

    Changelog in V 3.2.6.8
    • Added ChangeTimerDelay method to TimedDespawner.
    • Can now see Global Wave name when the wave is collapsed in the Inspector.
    • Added Level name field for Global Waves. You can see it even when the level is collapsed.
    • Renamed "Level Waves" to "Levels & Waves" in the LevelSettings Inspector.
    • Killables can now send Knockback Damage regardless of gravity setting on their Rigidbody. They only can't receive Knockback damage if not gravity.
    • Killables with a CharacterController now can receive Knockback Damage. It's an instant knockback though since there's no physics force to apply.
    • Added PoolBoss.NextPoolItemToSpawn method to get you the next item that will spawn for a Pool Item.
    • Documentation fix for Knockback on Killables.
    • Refactored Knockback code to be more understandable.
    • Fixed UI of Inspector for Triggered Despawner. It now shows a checkbox for each trigger you enable instead of making you "expand" them to denote active, which was really inintuitive.
    • Added new API method: LevelSettings.RestartGame() - it will set IsGameOver to false and go to level 1, wave 1 if you have Global Waves enabled.
    • Added new API method: LevelSettings.ContinueGame() - it will set IsGameOver to false and continue from where you died.
    • Added button to "Restart Game" to Level Settings Inspector when game is over. Will also reset any World Variables marked as "Reset To Starting Value" back to that value.
    • Added button to "Continue Game" to Level Settings Inspector when game is over. Will also reset any World Variables marked as "Reset To Starting Value" back to that value.
    • Renamed MechanimCustomEvent to MechanimStateCoreCustomEvents so it wasn't so close to the Master Audio script of MechanimCustomEvents. Please delete the old named file before upgrading.
    • Added "Collapse All Sections" button to LevelSettings.
    • Added "Collapse All Sections" button to Killable.
    • Added "Collapse All Events" button to Triggered Spawner.
    • Added "Fire!" button to Triggered Spawner Inspector during runtime, to activate the preconfigured wave for any event so you don't have to wait for it to happen.
    • Added "Spawn Position" dropdown for Death Prefabs in Killables. Choices are Death Position (default) and Respawn position. If you never set Respawn position via code, then it is the original spawn position, which lets you spawn death prefabs from the original spawn position if you choose.
    • Added LevelStarted method to LevelSettingsListener!
    • Fixed compilation errors for Windows Phone 8 platform.
    • Fixed bug where WaveEnded and WaveEndedEarly methods on LevelSettingsListener passed out the wrong wave info.
    • Added random rotation options to Killable's Death Prefab.
    • Category active item counts in PoolBoss are now clickable to select all items in the category that are active.
    • Added Text Item Filter textbox for filtering out what you see in Pool Boss. Helps a ton when you have a lot of prefabs pooled.
    • Added RefillPool method to WavePrefabPool class, so you can refill the pool at any time, taking into account any weights or World Variable values that have changed since the last fill.
    • Added "Deal 1 Damage To All" buttons to Pool Boss item, category and "all" so you can deal damage to test things at any time (runtime only).
    • Changed Damage / Despawn / Kill buttons in Pool Boss to icons.
    • Now only show Damage / Despawn / Kill icons in Pool Boss for the item if there is at least 1 of it spawned. Otherwise they wouldn't do anything.

    Changelog in V 3.2.6.7
    • Fixed bug: selecting a prefab with Triggered Spawner visualization turned on in ProjectView would spam the Console window and create top-level visualization objects.
    • Added RelationsInspector integration (free version included). Can view Killable chains and what global waves spawn what prefab. Both are launchable with context from the CGK Inspectors.
    • Moved icons in Gizmos folder into a new subfolder "CoreGameKit" so it's more obvious what they are for.

    Changelog in V 3.2.6.6
    • Added optional Custom Wave Classes feature (for your own use, no base implementation) to classify Global waves as whatever you like - you specify the names. Useful to display custom icons per wave or other things.
    • Added property drawer for Custom Wave Classes. Decorate a string variable with CoreWaveClassAttribute to use it.
    • Fixed bug where changing the Prefab To Spawn in a Syncro Spawner wave would not update the visualization, if enabled.
    • Fixed bug where Recycle Oldest didn't work properly in PoolBoss.
    • Fixed bug where "Add to PoolBoss" had Inspector error when no LevelWaveSettings game object is in the Scene.
    • Fixed bug where TriggerEnter2D wave didn't spawn correctly on Triggered Spawners.
    • Added a "prefab icon" in Pool Boss so you can navigate to the prefab in Project View even when the Pool Item is collapsed.
    • Added a "New Item Category" dropdown above the drag area for Pool Boss so you can choose what category new items are created in when you drag them in.
    • Added fix for PoolBoss. Previously as pooled prefabs created the inactive clones during Awake, anything with a NavMeshAgent might log a warning about "NavMeshAgent not close enough to NavMesh". Now this is fixed, but make sure you turn off the NavMeshAgent component for each pooled prefab. PoolBoss will detect if it is there and enable it whenever it spawns.
    • Added ability to despawn all / kill all in Pool Boss Inspector for a single category.
    • Revamped Pool Boss Inspector. Now looks like the other custom Inspectors. Added a spawned prefab count widget at the category level for quick visual feedback.
    • Added PoolBoss.CategoryItemsDespawned and PoolBoss.CategoryItemsSpawned methods for programmers to use to get counts of items in a single category.
    • No longer displaying a "Kill All" button for a Pool Boss item if Killable is not on that prefab.
    • Added Inspector alert when having 2 wave settings of the same level / wave in syncro spawner. This is not supported and currently you had to click play to get an error in the Console.
    • Added LevelEnded method to LevelSettingsListener and PlaymakerLevelSettingsListener. Called when the last wave of a level is completed.
    • Added option for Wave Offsets in both spawner types to be chosen randomly or used in order. Defaults to the original setting of random.
    • Re-added missing methods to PoolBoss that were erroneously deleted in the last update.
    • Fixed bug in Unity 5.X where a Killable that takes lethal damage will only battle with a single other Killable even if it hits multiple at the same time.
    • Fixed bug where sometimes uGUI clicks would not work when using Triggered Spawner on that element.
    • Prefab Pools, where used, now have a gear to take you to them to edit / inspect.
    • Add a way to use less than all spawners for global waves (random 1-X spawners).
    • Make all prefab fields tell you when something is not set up in Pool Boss with option to add it with X copies in a category of your choice.
    • Buttons in LevelWaveSettings to refresh all / hide all / disable all Visualized waves from both spawner types so updated prefabs will have the correct clones when spawned prefabs were changed after the last visualization.
    • Added Visualize Wave and Hide Visualization buttons next to each Custom Event in the LevelWaveSettings Inspector. Will rebuild all clones of everything spawning from that Custom Event.
    • Changed some WorldVariable code to allow oldValue / newValue. To fix compile errors, please re-import all 3rd party plugin packages included in CGK if you use them.

    Changelog in V 3.2.6.4
    • Now 2 versions of the Visualized Wave Item icon. One for disabled game objects (blue) and one for enabled (light gray).
    • UndoHelper moved into the DarkTonic.CoreGameKit namespace to avoid naming conflicts with other plugins
    • Fixed error when dealing 1 damage to Killable from Inspector button.
    • Fixed compile errors on Unity 5.3
    • Added new World Variable code to support oldValue and newValue in the Listeners.
    • Updated optional packages for NGUI, Playmaker and TextMeshPro to compile with new World Variable changes.
    • Fixed compile errors for Unity 4.7

    Changelog in V 3.2.6.3


    • Upgrade note: Moved our plugins into Plugins folder to help speed up compile times in your projects! Make sure and drag the entire Assets/DarkTonic folder into Assets/Plugins before upgrading to this version!
    • Added Mechanim Behavior "MechanimStateCustomEvent" which allows you to fire a Custom Event when a Mechanim state is entered and/or exited. Just add it to the Mechanim state in the Animator window!
    • Added Sort Alpha and Collapse / Expand All buttons to Custom Events section.
    • Fixed Playmaker custom action: Master Audio Group Set Pitch now has max of 3, not 1.
    • Fixed bug: Spawned method in KillableListener got called twice on first spawn.
    • Fixed bug: Triggered Spawners ignored Retrigger Limits and Spawner Active Mode fields and always spawned waves.
    • Fixed bug: "Per Hit" Damage prefabs in Killable would not spawn Damage Prefabs when invincible.
    • Fixed bug: No longer spawning damage prefab when getting hit while invincible on Killables.
    • Added Spawned and Despawned events to TriggeredSpawnerListener.
    • Added "Invincible after damaged" for X seconds option to Killable. This will make the Retrigger Limit section usually not needed.
    • Removed "Explosion Prefab" from Killable top section. This was not needed as it does the same thing (but far less options) as the Death Prefab feature.
    • Removed "Retrigger Limit Mode" from Killable. Use "Invincible after damaged" feature instead.
    • Added IsDead property to Killable. Other non-CGK scripts may want to know whether the Killable is dead (doing death animation etc) to stop their effects.
    • Added all Killable Listener methods as virtual methods to Killable class. Now you may never need to use a Killable Listener if you create Killable subclasses.
    • Added "Deal Damage Prefab" section to Killable for specifying a prefab to show for each Killable you damage.
    • Wave Offset is now applied on top of Random Positioning for both spawner types.
    • Custom Position X/Y/Z on spawners is now float, not int, for more precise positioning. Note that any values you had before will be reset to zero.
    • "Use Spawner Position" renamed to "Spawner Position" in Position Mode for spawners.
    • Added 3rd Position Mode to spawners: Other Object Position. This lets you drag in another game object and use its position to spawn.
    • Added option to pause Global Waves at end of each Global Wave. This way you can show a message or whatever and unpause the Global Waves when ready to proceed.
    • Added DestroyImmediately method to Killable, which ignores the DeathDelay. Updated Playmaker custom action "Core GameKit Killable Destroy" for this as well.
    • Added "Valid Receivers" dropdown to Custom Events. Choices are All, Random & Closest. For Random & Closest you get to specify a number. That way you can say the closest 3 or a random 1 Receiver will receive the event only.
    • Added "Vanish prefab" settings in Death & Despawn Triggers section of Killable. This prefab will be spawned if the Killable despawns without being "killed".
    • Added "Invince Hit prefab" settings in Invincibility section of Killable. This prefab will be spawned if the Killable gets hit while Invincible.
    • Renamed method "SpawnDamagePrefab" to "SpawnPrefab" since it was used by more than just Damage Prefabs. If you had a subclass of Killable and were overriding this method, you will need to change the method name to match.
    • No longer allow selection of 0 items in Pool Boss during runtime since you lose your selection if you do that.
    • Added "game status panel" section on Level Settings game object during runtime. Shows status of "game over" (or not), current level and wave, whether global waves are paused, and buttons to pause/unpause/end wave.
    • Syncro / Triggered Spawners and Killable now show at top whether they are active based on wave pause and "game over" status as well.
    • Added prominent red box saying "Despawned and inactive" at top of Killable and Triggered Spawner components while they are despawned in Pool Boss.
    • Now have a "visualized wave item" eye icon in the Hierarchy for each item shown under spawners in edit mode for visualization purposes.
    • Added TextMeshPro package for displaying World Variable values with no code!
    • Added new method CreateNewPoolItem to dynamically (via code) create new Pool Boss items at runtime, including creating new category.

    Changelog in V 3.2.6.2
    • Added property SpawnedWaveMembers to Syncro Spawners to get a list of items spawned and not yet destroyed of the current wave.
    • Added checkbox to Visualization Waves of Triggered Spawners just like Syncro Spawners have!
    • Added check in Pool Boss for Trail Render or Particle Animator components with auto-destruct enabled and show a warning in the Inspector if so. Pool Items should never be destroyed, only despawned!
    • Added "StopDeathTimer" and "StartDeathTimer" methods to Killable.
    • Fixed bug: Visualize Wave in Level Settings (showing multiple spawner waves all at once) only worked if that Global Wave is not collapsed.
    • Fixed bug: With multiple waves having visualization turned on for a Syncro Spawner, only the lowest one gets rendered always.


    Changelog in V 3.2.6.1

    • Added NodeCanvas integration optional package to our plugin.
    • Added "Spawn on Death Hit" checkbox (defaults to off) for Damage Prefabs, so you can choose to have damage prefabs during the final death hit or not.
    • Added Incremental Offset (Vector3) to Killable's Damage Prefab section, to add to the position of each additional Damage Prefab after the first.
    • Added Incremental Offset (Vector3) to Killable's Death Prefab section, to add to the position of each additional Death Prefab after the first.
    • Added "Allow Non-Killable Hits" checkbox when using HP Death Mode of "Collision or Trigger" for Killable. This allows you to permit collisions with a non-Killable to cause the Killable to die!
    • Fixed bug where having another class named "Button" in your project would cause a compilation error in CGK.
    • Fixed all compile warnings for Unity 5.1
    • Added "travel distance death" section to Killables so they can automatically die after moving X distance from spawn point.
    • Added category feature to Pool Boss (for visual organization only). Each category's items are alpha sorted and the categories can be shifted up and down.
    • Removed alpha sort and shift up / shift down buttons from Pool Boss.
    • Add color coding to Pool Boss during runtime to show which Pool Items have nothing spawned (red) and things spawned (yellow).
    • Added "Triggered Spawner Activate Wave" task for Behavior Designer.

    Changelog in V 3.2.6
    • Small setting will be lost! Removed single setting for Wave Offset in waves of Syncro Spawner and Triggered Spawner. Replaced by ability to add any number of randomly chosen Wave Offsets. You will lose any settings you had for Wave Offset, so take note of them before upgrading to this version!
    • Moved UndoHelper into main Editor folder. No need for extra folder when it can't be shared with our other plugins. Please delete the old one in DarkTonic\Editor folder when updating.
    • Fixed World Variable Listeners for Unity 4.5 - they were not working.
    • Fixed World Variable Listeners for Unity 4.6+ - they were not working.
    • Fixed Unity 4.6 example scene, it had some missing scripts.
    • Renamed "Wave Spawn Bonus" to "Wave Spawn Bonus & Events" because it now can fire any number of Custom Events.
    • Added ability to fire custom event(s) from wave start on Triggered Spawner.
    • Fixed Custom Event endless retrigger bug that can be set up on accident.
    • 2D Knockback now works correctly. Previously only "knock up" worked for 2D. Now it knocks you left or right depending on the location of the other Killable compared to yours (x coordinate).
    • Added ability to clone Global wave.
    • Added ability to clone Syncro Spawner wave.
    • Added ability to clone Pool Boss item.
    • Added ability to clone Prefab Pool item.
    • Added missing position parameter to FireCustomEventIfValid new method.
    • Changed ModifyWorldVariables method in Killable to public virtual so it can be changed in a subclass.
    • Renamed "Respawn Settings" to "Respawn Settings & Events" in Killable's Inspector.
    • Added Respawn Custom Events section to Killable's Respawn Settings & Events section. Now you can select any number of Custom Events to fire each time the Killable is respawned!

    Changelog in V 3.2.5
    • Fixed bug where ResetVelocity call in Killable would throw a Null Reference error for Rigidbody2D.
    • Fixed bug in Triggered Spawners where the wrong event's layer/tag filters cause "endless" waves to stop.
    • Added field to Global Waves called "Last Level Completed". Choices are "Win" (default) and "Repeat All Levels From Beginning". This allows you to make the levels go on forever.
    • Removed BoltEngine partial code. Bolt is stalled and not usable on Unity 5. May be added back later at some point.
    • Updated BehaviorDesigner package with their latest updates.
    • Created CoreCustomEvent attribute that you can decorate any public string field in your classes with. Holds a dropdown list of all Custom Events in the Scene.
    • Added Initialization Options section to LevelSettings up top. Now you can select any number of Custom Events to fire when LevelSettings has finished initializing!
    • Added Wave Completion Custom Events section to LevelSettings global waves setup. Now you can select any number of Custom Events to fire when the wave is completed!
    • Added Wave Repeat Custom Events section to Syncro Spawner waves setup. Now you can select any number of Custom Events to fire each time the wave is repeated!
    • Added Wave Repeat Custom Events section to Triggered Spawner waves setup. Now you can select any number of Custom Events to fire each time the wave is repeated!
    • Added Damage Custom Events section to Killable's Damage Prefab Settings / Events section. Now you can select any number of Custom Events to fire each time damage is taken!
    • Added Death Custom Events section to Killable's Damage Prefab Settings / Events section. Now you can select any number of Custom Events to fire when the Killable is destroyed!
    • Added Custom Events section to World Variable's Inspector. Now you can select any number of Custom Events to fire each time the variable is updated!
    • Added checkbox option for Wave Spawn Bonus to "Use On First Spawn". Default is on. That way you can use the Wave Spawn Bonus for wave start, each repeat, or both.
    • Renamed "Wave Repeat Bonus" to "Repeat Bonus" in Syncro Spawner.
    • Renamed "Damage Prefab Settings" to "Damage Prefab Settings & Events" in Killable's Inspector.
    • Renamed "Death Prefab Settings" to "Death Prefab Settings & Events" in Killable's Inspector.
    • Moved Retrigger Limit into Damage Settings for Killable where it belongs.
    • When restarting randomly ordered Global Waves, re-randomize the order of all waves in a Level.
    Changelog in V 3.2.4
    • Breaking change (if you have written code): All classes are now in the DarkTonic.CoreGameKit namespace. You will need to add "using DarkTonic.CoreGameKit;" at the top of all scripts you've written that use the Core GameKit API.
    • Updated NGUI package to add the namespaces.
    • Updated Playmaker package to add the namespaces.
    • Updated Behavior Designer packages to add the namespaces.
    • Fixed bug: Knockback damage didn't check receivers for IsGravity on the rigidbody before sending.
    • Fixed compile bug on Web Player.
    • Fixed rare bug with Pool Boss not finding prefab of previously despawned prefab.
    • Now the value of all Inspector fields set to "self" can be dragged like normal Unity fields. Just drag left or right on the I or F (for Int and Float) next to the value. Awesome for the new wave visualization feature!
    • Now Knockback settings work on Rigidbody2D as well.
    • Ignore Offscreen Hits now defaults to false. Since more people are probably using sprites, that old default is going to interfere more than help.
    • Added property "KilledBy" to Killable, which returns a reference to the other Killable that dealt lethal damage to it, if any. Resets itself to Null each time it respawns.
    • Added "If Parent Destroyed?" section below "If Spawner Destroyed" in Killable Despawn & Death Triggered. You can select: Die, Despawn, or Do Nothing (default). This will allow you to make giant ships or fortresses that destroy their limbs when the whole is destroyed or other cool effects!

    Changelog in V 3.2.3.9
    • Fixed gap in some Inspectors' button rows with 0 items.
    • Added overridable methods to Syncro Spawner so you can subclass and use network Instantiate commands if you like!
    • Added a #define BOLT_ENGINE in LevelSettings.cs that you can uncomment to use GlobalWaves on Bolt Engine for multiplayer games (requires other changes too, which will be detailed soon).
    • Added Knockback Damage section to Killable!
    • Made LevelSettings.WaveRemainingItemCount public in case you want to display something for "enemies remaining".
    • Added visualization capability in Syncro Spawners! Shows you visually where the things will be spawned (Incremental Settings / Post-nudge, etc) as you tweak. Very useful!

    Changelog in V 3.2.3.8
    • Fixed bug with Console spamming with certain Damage Prefab settings.
    • Added overridable methods to Killable so you can subclass and use network Instantiate commands if you like!
    • Added overridable methods to TriggeredSpawner so you can subclass and use network Instantiate commands if you like!
    • Fixed Playmaker package.
    • Fixed World Variable inspector. It wasn't showing the correct starting value for float types.
    • Inspector for Pool Boss now updates counts automatically when things spawn or despawn.
    • Added drag area for Prefab Pool's Inspector so you can add multiple items at once (by locking Inspector).
    • Added drag area for Pool Boss' Inspector so you can add multiple items at once (by locking Inspector).
    • Added "Alpha Sort" button to Prefab Pool' Inspector.

    Changelog in V 3.2.3.7
    • Used ReSharper to fix all warnings and errors in the entire code base. Should not affect any of your settings.
    • Fixed Killable Respawn bug where it would sometimes spawn you the first time in the wrong position.
    • Made the Respawn section of Killable not respawn if "Game Is Over" unless you switched Game Over Behavior to "Behave as normal". No more unlimited respawns unless you want it!
    • Added properties to LevelSettings.cs: SyncroSpawners (returns all Syncro Spawners), and RandomSyncroSpawner, which returns a random spawner.
    • Fixed Playmaker custom actions package errors.
    • Fixed Pool Boss so that uGUI elements are parented correctly if you're spawning them.
    • Added new methods to Pool Boss to spawn a prefab by name instead of needing a Transform reference.
    • Added Spawned and Despawned methods to KillableListener
    • Made it possible to use normal width Inspectors now. "Killer Variables" didn't need to be nearly as wide.
    • UI makeover showing grouped controls within boxes, just like we just did for Master Audio plugin. Much easier to tell what control goes with what now.

    Changelog in V 3.2.3.6
    • Fixed bug: When you have Damage Prefab settings turned on but didn't specify which prefab, you got an undetailed error. Now it tells you the reason instead.
    • Added more methods to Pool Boss for information on each prefab (despawned count, spawned count).
    • Added method to Killable: AddAttackPoints(int);
    • Added methods to WaveMusicChanger for MuteMusic and UnmuteMusic.
    • Added 3rd Rotation Type for Pool Boss Spawn custom action to use rotation of the FSM's game object. It's called "Spawner Rotation".
    • Added a checkbox to "End Early If All Destroyed" for timed waves. It only works when none of the spawners' waves repeat themselves. For example, level 1 wave 2 has 3 spawners. None of the 3 spawners' waves for level 1 wave 2 can repeat. Once everything has been spawned from all 3 spawners, and everything is destroyed or despawned, the wave will end early.
    • Changed the tracking of Custom Event Receivers for better scaling (separate list per event instead of all together).

    Changelog in V 3.2.3.5
    • Added an optional Unity 4.6 package, containing a duplicate of Example Scene 1, but using uGUI to display World Variables. This package is in the ExampleScenes root folder.
    • Added "Recycle Oldest" option to Pool Boss. It's a checkbox that's visible when Allow Instantiate More is off. If it's checked, Pool Boss will reuse the oldest active clone of the item you're asking to Spawn if there are no inactivate clones available. Good for decals and other non-particle, non-essential things that won't matter if they disappear.
    • Added code to Flush the "Cached Player Prefs" every time a new level loads or ends. This should fix the Android problem of not saving World Variables in edge cases.
    • Fixed bug: If you had another class called Button or Slider (besides Unity GUI ones), TriggeredSpawner script wouldn't compile.
    • Added safety check to not allow a Custom Event to be fired more than once per frame.
    • Fixed bug: If you had another class called Text, WorldVariableListener wouldn't compile.
    Changelog in V 3.2.3.3
    • Added WaitingToDestroyKillable method to KillableListener, so you can play a death animation, etc.
    • Added a checkbox to Layer / Tag Filter section in Killable, allowing you to "Ignore Killables I Spawned" (defaults to checked). This is useful to allow you to put all the Player's weapons in a layer, put that layer in the Player's layer filter and only be able to damage *other* players in multiplayer games.
    • Added uGUI support to Unity 5. Requires beta 17.

    Changelog in V 3.2.3.2
    • Added Unity version detecting code for Unity 4.6 UI for a new "Text" World Variable Listener. Both old and new versions exist in the same file and the correct one is chosen automatically.
    • Added "Persist Between Scenes" checkbox to LevelWaveSettings in the top section. Defaults to off.
    • Removed checkbox for Minimal Mode on Triggered Spawners. Now it's always Minimal Mode.
    • Changed display name of most events in Triggered Spawner & Triggered Despawner to match with the more understable names used in our Master Audio plugin. Should not affect anything you've already made with them.
    • Added all Unity 4.6 UI events to Triggered Spawner: Slider.onValueChanged, Button.onClick, PointerEnter, PointerExit, PointerDown, PointerUp, Drag, Scroll, UpdateSelected, Select, Deselect, Move, InitializePotentialDrag, BeginDrag, EndDrag, Submit, Cancel
    • Added a dropdown in TriggeredSpawner to select between Legacy and uGUI events if you're on Unity 4.6. Then the other won't be shown or work (so many options in the dropdown now!) Note that any Unity 4.6+ users will now default to uGUI, so if you want to use Legacy events, you will have to switch this dropdown back on each component that uses it.

    Changelog in V 3.2.3.1
    • Fixed bug where Killable Listener called DamagePrefabFailedToSpawn when it did in fact spawn, and vice versa.
    • Fixed bug with Spawn Tracker logging a Null Exception error sometimes.
    • Note: Please check all your Triggered Spawner waves and change the new Max To Spawn field to equal Min To Spawn, or you will be seeing less things spawn. Added Max To Spawn in Triggered Spawner so it has Min and Max (for random) like Syncro Spawners.
    • Added "Sync H.P. Variable" checkbox to Killable, which appears if you are using a World Variable for Start Hit Points. Defaults to off. If you check the box, the World Variable will be updated with the Current Hit Points of that Killable every time they change. This is good for a player Killable to update a Health variable for instance. It is not a good idea to use this on a prefab that has more than one instance in the Scene, because the World Variable value will not be predictable and may jump around.
    • Made the WorldVariables Inspector refresh automatically when variables change.
    • Made the Immediate Actions in the Killable Inspector invisible when object is despawned.

    Changelog in V 3.2.3
    • Fixed text on expand / collapse buttons for World Variable Tracker. They were swapped
    • Fixed bug with the IsInitialized property in WorldVariableTracker. It caused lots of errors in custom WorldVariableTracker scripts.
    • Fixed bug where retrigger limit > 100 seconds wouldn't allow a Triggered Spawner wave to happen at all.

    Changelog in V 3.2.2.9
    • Added a button to Pool Boss so you can now click the yellow "X/10 spawned" text to select them all in the Hierarchy.
    • Added a public property "SpawnedFromObject" to Killable so other scripts can read the spawner, if any.
    • Changed confusing icons to actual text buttons (expand all / collapse all / Add).
    • Added DeathDelayStarted method to Killable Listener, so you can play a death animation or other effect.
    • Moved game over music settings into Use Global Waves section where it belongs.
    • Fixed bug: - game over music mode shouldn't do anything when global waves are off. It logged an error when game over is triggered.
    • Added new methods SpawnOutsidePool and SpawnInPool for PoolBoss. This allows you to specify the parent Transform when the object is spawned.
    • Removed support for Pool Manager. SpawnUtility.Spawn and Despawn methods are removed and now PoolBoss.cs is used directly. If you are using Core GameKit's Behavior Designer tasks or Playmaker Custom Actions, you will need to reimport those updated packages to compile again.
    • Added ability to make "Composite Killables". This allows you to, for instance, have a destroyed version of several turrets (or other secondary enemy "parts") on a larger object, like a boss mothership or fortress. Added "Keep Same Parent" checkbox (defaults to true) for Killable Death Prefab to enable this. However, it is a known issue that there is currently no way to respawn the larger object in its original state if one or more of its sub-Killables has changed. Unity does not provide a way to revert prefab instances at runtime. Therefore, you cannot reuse "Composite Killable" objects from the pool if you use this feature and have destroyed or despawned a child. Core GameKit will set the prefab to disabled instead of returning it to the pool when they are destroyed or despawned if they have had any children Killables destroyed or despawned. If they have not, they will be able to respawn and will return to the pool as normal. Make sure to not turn on any despawn checkboxes on the child Killables (like Invisible), because if they despawn before the parent, the parent also will not return to the pool when it dies or despawns. Composite Killables can have multiple levels of sub-Killables.
    • Added new example scene for Composite Killables with a 3-level deep Hierarchy of Killables (a boss enemy) which rotates turrets to fire at you. This can be done with zero coding.
    • Moved Invincibility Settings into its own section in Killable.
    • Added "Invincible while children alive" checkbox, which will make sure a Composite Killable's top-level object cannot take damage while any of its children Killables still exist.
    • Add an option under Invincible While Children Alive to disable colliders on the top-level Killable as well while children alive.
    • Moved Killable and Click To Damage scripts into a new Combat folder instead of Utility folder. They also now appear on the Component -> DarkTonic -> Core GameKit -> Combat menu instead of Utility.
    • Custom event receivers now have an option to "look at" event (the things they spawned already did, this rotates the spawner as well).
    • Added ClickToKillOrDamage2D script for 2d games.

    Changelog in V 3.2.2.8
    • Added "Use Death Timer" setting to Killable's Death & Despawn Triggers section. You can add a timer where after X seconds it will either despawn or die (you choose).
    • Fixed compilation error on Unity 3.5.7.
    • Added Custom Events feature, which Triggered Spawners can now use. You can make them distance-based, so that all Triggered Spawners within a certain distance will spawn a wave they specify for that event. Can also spawn the wave items looking at the event origin point. This can make enemies attack a player when a custom event happens. Very powerful!
    • Playmaker custom actions for Triggered Spawners have been updated for Custom Events, please reinstall the custom actions from the new version or you will not be able to compile.
    • Behavior Designer tasks for Triggered Spawners have been updated for Custom Events, please reinstall the custom actions from the new version or you will not be able to compile.
    • Added new Example Scene 5 for Custom Events.
    • Added CustomEventReceived method to Triggered Spawner Listener & Playmaker Listener for Triggered Spawner.
    • Moved Use Music Settings and Syncro Spawners Off buttons inside "Use Global Waves" section in Level Settings.
    • Added CoreGameKitFireCustomEvent Playmaker Custom Action.

    Changelog in V 3.2.2.7
    • Some minor adjustments for World Variables for the "high score" variable types in the last version.
    • Changed code to compile and work with Unity 5 beta!
    Changelog in V 3.2.2.6
    • Added LevelNumber and WaveNumber properties to LevelSettings script. These can be used with the GetProperty method in Playmaker to read the current level and wave number.
    • Added checks for missing LevelSettings in scripts so there are no Null Exceptions logged if so.
    • Removed band-aid code for 2D collider Killables to both hurt each other when one dies from a collision.
    • Note: to get the bullet above to still work, go open the Physics 2D screen from Edit -> Project Settings -> Physics2D and turn off the checkbox labeled "Delete Stops Callbacks". This is important because Unity 2D collisions are treated differently by default.
    • No longer calling CoRoutine to destroy Killable unless you have a death delay > 0. Less allocation is always good.
    • Added "Modifications Allowed" dropdown to World Variables. Choices are Any (the default), Only Increase and Only Decrease. This allows you to control whether a variable can be decreased, increased, or neither. For example you might use Only Increase for a High Score variable.
    • Fixed "set World Variable" code so that it triggered Game Over if you have set a Game Over value for the variable and also calls the listener event.
    • Global Waves now should show a row for each spawner in the wave and you can click to go to it.
    Changelog in V 3.2.2.5
    • Fixed performance bug in Triggered Spawner Inspector. It would constantly refresh the Inspector causing frame drops. No longer!
    • Added Position Settings section to Triggered Spawner. Now you can choose the spawn position (x, y and/or z) to hard-code or read from a World Variable.
    • Added Position Settings section to Syncro Spawner. Now you can choose the spawn position (x, y and/or z) to hard-code or read from a World Variable.
    • Fixed bug where Triggered Spawner was checking wrong variable for active waves for Enable and Disable waves.
    • Added HasActiveWaveOfType method to Triggered Spawner, so you can tell if a wave is already spawning and not trigger it to start over again yet.
    • Added optional Behavior Designer package with 34 tasks - all the Playmaker custom actions are now tasks.
    • Added new Playmaker Custom Actions: Core Game Kit Triggered Spawner Has Wave Type & Core Game Kit Triggered Spawner End Wave
    Changelog in V 3.2.2.4
    • Added Spawn Offset (Vector3) to Damage Prefab section in Killable so it doesn't have to spawn at exactly the same position as the Killable.
    • Added EliminationWaveCompleted method to WaveSyncroSpawnerListener & the Playmaker version . This event is sent every time a syncro spawner elimination wave is completed (all repetitions), before it pauses for wave repeat delay.
    • Added new Playmaker custom actions: Core GameKit Pool Boss Despawn Prefabs Of Type, Core GameKit Pool Boss Kill Prefabs Of Type, Core GameKit Pool Boss Despawn All Prefabs, Core GameKit Pool Boss Kill All Prefabs
    • Added Lose event to LevelSettingsListener and the Playmaker listener as well. This fires if game over is reached and you didn't win (waves not all completed or other trigger).
    • SpawnOneItem() in Syncro Spawner script now returns the spawned transform for reference.
    • Changed the Playmaker custom action Core Game Kit Syncro Spawner Spawn One so that you can assign the item spawned to a variable.
    • Added GotoWave(level#, wave#) in Level Settings. Ends the current wave immediately and spawns that level / wave. Can even go to an earlier level or wave!
    • Added a new Playmaker custom action: Core Game Kit Goto Wave, which does the GotoWave(level#, wave#) action in the bullet above.
    Changelog in V 3.2.2.3
    • Pool Boss now automatically renames spawned prefabs with numbers, like "Enemy (Clone 1)" for easier debugging when the names aren't all the same.
    • Added max field to each Pool boss item. If you have Allow Instantiate More checked, this field is visible and controls the max that will be allowed to be created. Otherwise it is not used.
    • Added "Kill all" and "Despawn all" buttons to each Pool Boss item. Kill all will kill all of that game object active in the Scene, if it's Killable (otherwise no effect). Despawn all will return all active prefabs of that type to the Pool Boss and deactivate them.
    • Added "Kill all" and "Despawn all" buttons to top-level of Pool Boss (and to SpawnUtility.cs if you wish to script them). It's the same as the previous per-item button, but does it for all items at once.
    • Added new methods to SpawnUtility.cs: KillAllOfPrefab, DespawnAllOfPrefab, KillAllPrefabs, DespawnAllPrefabs.
    Changelog in V 3.2.2.2
    • Changed Core Game Kit Killable Attack Or Hit Points Change (Playmaker custom action) to the name Core Game Kit Killable Attack Or Hit Points Add because the name was not accurate. If you were using this action, you will need to remove it and add again with the new name.
    • Added new Playmaker Custom Action "Core Game Kit Killable Attack Or Hit Points Mod", which can change the remaining hit points and/or attack points of a Killable.
    • Added "Wave Order" dropdown within each Level. Choices are "Specified Order" (the default), and "Random Order". If you choose Random, all waves within the Level will be randomly rearranged before the first wave starts. Note that starting on a Custom Start Wave of 1/3 will actually start on whatever the 3rd wave is of Level 1 after randomly ordering the waves.
    • Fixed bug where Killables colliding with another KillableChildCollision would not do combat (big bug).
    • Added demo version of Behavior Designer (with their new Core GameKit integration, which duplicates all the Playmaker custom actions) as an optional package. Their package requires Unity 4.0 or higher. Do not open it on Unity 3, it will crash.
    • Changed folder of 3rd party optional packages now we have a few different ones, to reduce clutter.

    Changelog in V 3.2.2.1
    • Added Immediation Actions row of buttons at the top of Killable's Inspector. Actions are: Kill, Despawn and Take 1 Damage. These do not appear or work in edit mode, only while playing.
    • Fixed bug with rigidbody2d used on Killable script expecting 3d rigidbody to reset velocity.
    Changelog in V 3.2.2
    • Added a new Playmaker Custom Action: "CoreGameKitKillableGetCurrentHitPoints". Does exactly what it sounds like.
    • Now resetting the velocity of Killables when they die, if it's a gravity Rigidbody.
    • Changed OnClick and NGUI Click events in Killable to Destroy, not just despawn. So now you get the death prefab and World Variable modifiers.
    • Added section labels to Killable to make it more clear which triggers are for despawn and destroy events.
    • Fixed bug: Damage prefabs didn't spawn from zero damage on "per hit" Spawn Frequency.
    • Fixed bug: Damage prefabs didn't spawn when invincible set on "per hit" Spawn Frequency.
    • Added "Damage World Variable Modifiers" section to Killables, which are modifed each time the prefab takes a hit.
    • Changed Killable Listener ModifyingWorldVariables method to ModifyingDeathWorldVariables. If you have created any subclasses, you will need to change the method name accordingly. Playmaker action was also updated, so install the optional Playmaker package as well.
    • Added ModifyingDamageWorldVariables method to the Killable Listener.
    • Added Killable death time delay (for death animation to play). It's under the Death Prefab section.
    • Added Respawn Delay to Killables. Now you can have them respawn after X seconds.

    Changelog in V 3.2.1.9
    • Fixed all inspectors so that they don't require a Scene save unless a field is actually changed (most already did this).
    • Changed the labels of Killable Attack Points and Hit Points to "Start Attack Points" and "Start Hit Points" so it's more clear.
    • Now allowing negative attack points for Killable. That will allow you to increase the health on your player by pickup up drops automatically, and other such things.
    • Added "Max Hit Points" to Killable. This value can not be exceeded by gaining HP from collisions with negative hit points Killables.
    • Note: you will need to check and re-set the value of all your Killables' Attack points because I had to change the variable for negative hit points and they will be lost.
    • Note: you will need to install the latest Master Audio plugin as well if you use that to get it to compile again.
    • Note: you will need to delete and re-install the Core GameKit Playmaker package as well if you use that to get it to compile again.
    • Moved the Taking Damage listener point into the TakeDamage method in Killable. That method virtual and can use overrides.
    • Added a DamagePrevented method to KillableListener. This is called when your Killable gets hit while invincible.
    • Added an overridable method "IsInvincible" to Killable so you can subclass it and add your own custom logic if you like.
    • Added an overridable method "DetermineScenario" to Killable so you can subclass it and add your own custom logic if you like.
    • Added "band-aid" code to get around the new Unity 4.5 2D collision despawn bug. It has been reported fixed in the next Unity version but you don't have to wait now.
    • Bug fix: Keep Velocity variable for Death Prefab in Killable wasn't checked. It always kept the velocity.
    • Added "follow player" checkbox to Player Spawner. Previously it always respawned you exactly where you died. Now you can choose whether this happens or not. This defaults to off, which is the opposite of the old behavior.
    • Added "Update Spawn Position" method to Player Spawner. This way you can update the spawn position based on checkpoints or things like that.
    • Player Spawner now works if you already have a Player in the Scene, and won't spawn another one if you do until the player dies.

    Changelog in V 3.2.1.8
    • Added Respawn section to Killable. You can choose to have the Killable respawn in its original spawn position instead of despawning when it dies - a set number of times, or infinite.
    • Bug fix: Now if Killable records zero point damage, it doesn't register on the Retrigger time or frame.
    • Bug fix: Setting Int or Float World Variable value directly didn't correct for negative values and won't fire "is game over". Now it does.
    • Bug fix: Race condition in Killable sometimes wouldn't kill Killable when its spawner was destroyed if you had turned that setting on.
    • Added lazy lookup of the cached Transform property in Killable to prevent errors in race conditions.
    • Added more overridable methods to Killable for subclasses, including DespawnThis, Despawned, and a cached lazy-lookup property of the Transform component.
    • Added optional "parent Game Object" to Pool Boss Spawn custom action, which will parent the spawned object under a parent Game Object you specify.
    • Added "end wave when opposite event occurs" checkboxes (that's not what they really say, they are labeled more coherently) for Triggered Spawner events, so for example: you can have the "visible" event stop when "invisible" triggers, regardless of whether you have an event configured for invisible.
    • Attention: your custom start level / wave settings will be wiped out from this version. Now we have made the custom start level / wave option in Level Settings able to use World Variables now.

    Changelog in V 3.2.1.6
    • Attention: make sure you delete the entire Core GameKit folder before updating so this next part will import properly. Moved these files into the "don't include in build" folder: killerwavespawnwidget.fbx, killerwavewidgettexture materials.
    • Fixed WaveOffset to use rotation instead of World Space.
    • Greatly improved CPU load of all custom inspectors. They were needlessly redrawing constantly.
    • Added EndWave method to TriggeredSpawners. This take an EventType parameter and will end the currently spawning wave of the same Event Type, if any.
    • New Triggered Spawner Listener method "WaveEndedEarly" for the above bullet.
    • Added ability to propagate the EndWave call to Triggered Spawners into their child spawners (respects the same Trigger Source field that "propagate events" uses).
    • New Triggered Spawner Listener method "PropagatedWaveEndedEarly" for the above bullet.

    Changelog in V 3.2.1.5
    • Changed "no copies left to spawn" message in Pool Boss to a warning instead of error logged.
    • Redid the code for Timed Despawner. Now it is many times more efficient, no script is run during Update.
    • Added methods and properties to Pool Boss: PrefabIsInPool, PrefabCount
    • Note: Please delete your Core GameKit custom actions folder before importing the newest one, if you unpacked the optional included Playmaker package.
    • Added Playmaker custom actions for Pool Boss: Spawn, Despawn (renamed Core GameKit Despawn action), PrefabCount, ItemIsInPool, ItemTotalCount, ItemDespawnedCount, ItemSpawnedCount

    Changelog in V 3.2.1.4
    • Added ClickToKillOrDamage script for mouse clicking (or finger tapping) to kill or damage Killables.
    • Changed example scene #4 to have no player. You click to damage the enemies.
    • Added "Wave Completion %" field to waves in Syncro Spawners that are during an Elimination Global wave. Defaults to 100. You can lower this to make a wave complete at X% destroyed so the wave can repeat or end.

    Changelog in V 3.2.1.2
    • Note: please delete the CoreGameKit/Sources/Textures folder (or delete the entire CoreGameKit folder) before upgrading to this version. The textures are now located elsewhere so they don't take up room in builds.
    • Fixed bug: Triggered Spawner's visible event only worked the first time.
    • Made all CoRoutines perform better with up front YieldInstruction creation.
    • Fixed some editor errors when LevelSettings.cs is not in the Scene.
    • Fixed an error with the NGUI World Variable Listener in edit mode.
    • Made the main coroutine in LevelSettings happen every .1 seconds instead of the old .3 seconds. This will allow faster wave transitioning.

    Changelog in V 3.2.1.1
    • Added new Killable HP Death Mode "Collision or Trigger". This will cause the Killable to be destroyed even when invincible when it hits things. Useful for projectiles so they don't go through objects if they're both invincible and triggers.
    • Fixed bug where Killable would instantly die on spawn if not spawned from a spawner when "if spawner destroyed" set to destroy or die. This no longer happens.

    Changelog in V 3.2.1
    • Added "mouseDown" despawn trigger to Killables.
    • Added "Invincible On Spawn" checkbox to Killable and "Invincible Time" setting under that. Now you can make Killables not take any damage for X seconds when they first spawn.
    • Added method: Killable.TemporaryInvincibility(float seconds) to make the Killable invincible for X seconds. You could use this for a fighting game and make the character invincible during the first part of their attack. Also created a Playmaker Custom Action to do this.
    • Added "Auto start waves" checkbox to LevelSettings. Defaults to on. If you uncheck it, the first wave won't start (technically it's paused), until you call LevelSettings.UnpauseWave();

    Changelog in V 3.2
    • Added "every frame" checkboxes to all Playmaker custom actions where it makes sense to have them.
    • Added a parameter "hasWon" to LevelSettings Listener event GameOver so you can tell whether the player won or not (both Win and GameOver events are fired when you complete all Syncro waves).
    • Fixed bug where Pool Boss would let you double despawn a prefab, making it disappear mysteriously later when re-used by the pool.
    • Fixed bug where LevelSettings.RestartWave would throw an error when no waves are set up.Added Wave Restart Mode to Level Settings. Choices are Leave Spawned, Despawn Spawned and Destroy Spawned. Destroy spawned only works on Killables and calls their Destroy method (which spawns death prefabs etc).

    Changelog in V 3.1.9
    • Fixed player projectile. After pooling, gravity was moving them out of 2d collision space on the Y axis.
    • Added Playmaker Custom Actions to get the value of a World Variable. 2 because 2 types (int and float).
    • Added optional max value setting for World Variables. This way you can prevent Health from going over 100 for instance.
    • Added Death Prefab Offset (vector3) field to Killable. Now you can move the death prefab a certain distance away from the one dying with this.

    Changelog in V 3.1.7
    • Added Spawn Layer Mode Spawn Tag Mode settings to both spawner types. Choices are UseSpawnPrefabSettings (default), UseSpawnerSettings, and Custom. Custom lets you specify a layer and / or tag to apply to all prefabs spawned by the spawner.
    • Added RestartWave for Syncro Spawners method in LevelSettings. It will reset the repeat count to zero as well for spawners that use that wave. Wave is unpaused as well if it was paused.
    • Added a LevelSettings Listener method for WaveRestarted.
    • Added Playmaker Custom Action for RestartWave.
    • Added Playmaker Listeners for each of the normal Core GameKit Listeners. These allow you to fire off an event in a Playmaker FSM on the same game object as the Playmaker Listener. You get to select the FSM and event from dropdowns. Couldn't be simpler!
    • All Listeners now hook themselves up automatically if you put them on a GameObject with a matching source. i.e. Putting a Killable Listener onto a GameObject with a Killable will hook up the Listener automatically.

    Changelog in V 3.1
    • Performance upgrade: Changed all repeatedly called CoRoutines into looping CoRoutines.
    • Added wave offset field to Triggered Spawners and Syncro Spawners. This is a Vector3 field and is added to the Spawner position prior to any Incremental Settings and Post-Spawn Nudge Settings to choose a custom spawn location.
    • Added "disable event after" checkbox to Triggered Spawner events. That way you can make it only work once.
    • Added controls to Killable Child Visibility script to despawn the Killable if not visible too long - same as Killable controls.
    • Fixed all Inspector errors when selecting the LevelWaveSettings prefab in the Project View and disabled the Inspectors there, telling you to select the one in the Scene.
    • Added a button to Instantiate a LevelWaveSettings prefab from the main CoreGameKit one when you select it in Project View. That way there will be no prefab connection to the main one and you will not lose data when upgrading even if you don't make your own prefab in Project View.

    Changelog in V 3.0
    • Breaking Change: Rename your "KillerWaves" folder under the DarkTonic folder to "CoreGameKit" before upgrading.
    • Breaking Change: Playmaker custom actions have all been renamed, so don't re-import the Playmaker package if you don't want to lose all your old Killer Waves custom actions.
    • Breaking Change (if anyone was using it). World Variable Resetter script removed. You now use the normal LevelWaveSettings prefab on a main menu screen instead to do what it did. The Readme section has been updated with instructions on how to do this. It's less confusing this way and less to learn.
    • Updated UI with buttons and collapsible sections similar to Master Audio. Cleaner and more polished now.
    • Added "KillerInt" support to Killables. Now for any integer value in that inspector, you can either specify an integer or tell it to use a World Variable value. Warning, this will delete any non-default values you had in these fields.
    • Added "KillerFloat" support to Killables. Now for any float value in that inspector, you can either specify an integer or tell it to use a World Variable value. Warning, this will delete any non-default values you had in these fields.
    • All variable modifier collections can now specify another variable as well as a number.
    • These Killer Int / Float and total refactoring will mean that you will lose almost every integer and float value you have specified, so it's best to start from scratch after upgrading, or re-enter all variable modifiers and values. I give very detailed errors on invalid World Variables specified everywhere upon clicking Play.
    • Added dropdown for variable modifications, choices are add (the default), set, subtract and multiply.
    • Fixed compile errors on Unity 4.0 - 4.2 from Unity 4.3 2D additions
    • Fixed bug where World Variable Listeners didn't show the initial value.
    • Fixed bug where elimination waves would repeat endlessly when repeat was on.
    • Fixed bug where elimination waves set to repeat until a World Variable is above / below a certain value would instead only do the "number of repetitions" you specified before switching to that mode.
    • Fixed bug where 1-2 prefabs would spawn from a disabled syncro spawner.
    • Now clicking on the Core GameKit graphic banner in any Inspector will take you to to the LevelWaveSettings prefab in the Scene.
    • Added "keep center" checkbox for spawner Incremental Settings. That will make sure half go to the left and half to the right.
    • Removed Playmaker Custom Action KillerWavesWorldVariableChangeValue. Please delete this from your project if you already opened the Playmaker optional package.
    • In its place, we added 6 Playmaker Custom Actions. KillerWavesVariableFloatSet, FloatAdd, FloatMultiply, and the same 3 for Integer variables.
    • Added Spawn Rotation Mode to both spawner types (Killable already had it). Options are: use prefab rotation, use spawner rotation and custom rotation. Note that any random rotation options in the spawner will happen after the spawn rotation mode is used as a root.
    • Added wave repeat bonus variable modifiers section to syncro spawners.
    • Added wave spawn bonus variable modifiers section to Triggered Spawners. Optionally you can have each repetition of the wave (in the repeat section) trigger the modifiers again.
    • Modified World Variable listener to support float and int. Added fields for "use commas" and number of decimal places to display.
    • Updated NGUI optional package with World Variable changes.
    • Prefab Pools now show during runtime the number of each item still in the pool.
    • Added ability to change World Variable value during runtime.
    • Added list of Syncro Spawners with settings icons on them in the Level Settings prefab.
    • Added list of Prefab Pools and World Variables with settings icons in the Level Settings prefab.
    • Added "Pool Boss" section under LevelSettings for PoolManager - type object pooling (this avoids Instantiate and Destroy calls). Uses OnSpawned and OnDespawned events, same as PoolManager!
    • Added Character Controller support to Killable.
    • Fixed endless Inspector bug in some configurations in LevelSettings prefab.

    Changelog in V 2.7.8
    • Breaking change: (not really, but need to pay attention). Added a container folder "DarkTonic" for the top-level Killer Waves folder. This way we're able to avoid duplicate class errors from UndoHelper if you use more than one of our products. When upgrading to this version, please delete the Killer Waves folder first or create a "DarkTonic" folder in Assets and move the Killer Waves folder into it before upgrading.
    • Fixed false Inspector error.
    • Fixed bug where co-routine for "despawn when not visible too long" didn't work after re-spawning the same object.
    • Find Select buttons for Prefab Pools now find Killables Triggered Spawners as well as Syncro Spawners.
    • Added "Invincible" checkbox to Killable. This makes the Killable not take any damage from other Killables while checked. Good for temporary invincibility.
    • Added "If Spawner Destroyed" modes to Killable in the Despawn Triggers section. Choices are Do Nothing, Despawn and Die. This enables "mothership-powered objects" that die without whatever spawned it. I updated the 2nd example scene to make the small fighters spawned by the mothership to use this.

    Changelog in V 2.7.7
    • Added 2D collider and 2D trigger support to Triggered Despawner script.
    • Added support for 2d collisions and Triggers to Triggered Spawners. Now everything has 2D support!
    • Added nicer error if LevelSettings not in Scene.
    • Added "Use Global Waves" checkbox in LevelSettings. You can turn this off if you don't need Syncro Spawners and then you don't have to create long fake waves so that Triggered Spawners don't shut off after your Global Waves end. There was always the Game Over Behavior which could get around this, but that's not necessary any longer.

    Changelog in V 2.7.6
    • Added 2D collider and 2D trigger support to Killable! It "just works". No extra settings.
    • Added full Undo support for Unity 4.3. Unity 3.5.7 users can still use the package, just no undo.

    Changelog in V 2.7.5
    • Moved PlayerSpawner code into Start instead of Awake so it would work with Pool Manager.
    • Added KillableChildCollision class (similar to KillableChildVisibility) to trigger the parent's collision events from child prefabs.
    • Added arrows to syncro spawners to re-order waves visually.

    Changelog in V 2.7.4
    • Made WebPlayer mode conditionally omit the Cached Player Prefs part at compile-time because it didn't compile on that platform.

    Changelog in V 2.7.3
    • Added multiple "scenarios" (sets) of World Variable Modifiers. The "Destroyed" scenario is the default. If you want to use other scenarios, you can specify the scenario name in the Playmaker Killable Destroy Custom Action, call the DestroyKillable method yourself from code, or make a subclass of the Killable class and override the DestroyKillable method to change the scenario name parameter based on your own logic.
    • Added Killable Despawn and Killable Destroy, Playmaker Custom Actions.
    • Added DestroyingKillable event to Killable Listener. You can take action before the Killable is destroyed.
    • Added DeterminingScenario event to Killable Listener, so you can add logic to use a different Scenario (set of World Variable modifiers).
    • Made Inspector classes work for subclasses of Killable, Triggered Spawner, Syncro Spawner, Triggered Despawner (only works in Unity 4).
    • Fixed bug where elimination waves would always have 15 repetitions or more regardless of what you specified.

    Changelog in V 2.7.2
    • Added setting to "use music" or not. Switch this off if you don't want Killer Waves to require WaveMusicChanger script.
    • Changed warnings to appear underneath for W.V. Ranges so you can actually continue typing when they show up.
    • Added spawn limit and time limit to to repeat sections of both spawner types. This way you can increase the # of items and time but not pass the limits.

    Changelog in V 2.7.1
    • Now showing current world variable values during runtime in Inspector.
    • To be consistent, changed "Active item mode" and "Active spawner mode" both to "Active mode" in Inspectors.
    • Fixed bug where music volume didn't work.
    • Fixed bug where switching a previously "number of repetitions" waves didn't repeat enough times when switched to Timed waves.
    • Added Wave Repeat spawn increase and time increase fields to progressively modify all repeated waves on Triggered Spawners.
    • Add non-elimination repeat options to timed spawner waves with "Timed Repeat Mode". Kept old "elimination type" as well.

    Changelog in V 2.7.0
    • Added KillableChildVisibility script for cases when your renderer is in a child object of Killable. That way we can get the visible and invisible events to work properly still.
    • Added "Log Events" checkbox in Killable Inspector so you can find out why collisions aren't registering when it happens.
    • Added Active Mode dropdown for Triggered Spawners. Choices are Always, Never, "World Variable in range" and "World Variable outtside range".
    • Removed "Active" checkbox for Syncro Spawners. Replaced it with Active Mode dropdown the same as Triggered Spawners got above.
    • Added Wave name to Inspector. For display and identification purposes.
    • Added display of Spawner count using each wave in Level Settings Inspector.
    • Added "Wave Ended" event to Level Settings Listener.
    • Added Wave Completion Bonuses section so you can add to Score or any other World Variable when a wave is completed normally.

    Changelog in V 2.6.9
    • Added Skip Wave Type to Waves in Level Settings. You can choose None, Always, IfWorldVariableValueAbove or IfWorldVariableValueBelow and add WorldVariable conditions to skip the wave.
    • Added Wave Skipped event in LevelSettingsListener.
    • Removed "Active" checkbox on Prefab Pool Items. Added Active Item Mode instead. Choices are Always (default), Never, IfWorldVariableInsideRange IfWorldVariableOutsideRange. This lets you control which items are in the Prefab Pool based on XP, Score, etc. They are re-evaluated each time the Prefab Pool re-fills.
    • Added Custom Start Wave setting in Level Settings so you can start playing on the level and wave you select. You can toggle this on and off. Great for testing higher waves!

    Changelog in V 2.6.8
    • Removed "exhaustive list" checkbox for Prefab Pools when non-random. Only applies to random.
    • Added up and down arrows for Prefab Pool items, for organizational purposes.

    Changelog in V 2.6.7
    • Fixed up Owner properties of Playmaker custom actions. They had bad code.
    • Added PauseWave and UnpauseWave methods to LevelSettings. Added Playmaker custom actions for these as well.
    • Added Pause Wave Behavior for all spawners, so you can selectively choose to ignore the wave pause setting if you want.
    • Fixed bug where Death Prefab of Killable would use the same prefab in Prefab Pool instead of picking a new one each time.
    • Added the ability to specify a "no prefab" item in Prefab Pools, to enable "spawn nothing" moments in spawners.

    Changelog in V 2.6.6
    • Exposed "TakeDamage" method in Killable.
    • Added Playmaker Custom Action to force the current Wave to end.
    • Modified Playmaker Custom Action "KillableAttackOrHitPointsChange" to add to Current Hit Points as well so it can kill the Killable.
    • Added Playmaker Custom Action "KillableTakeDamage" to inflict damage on a Killable.
    • Added Player Spawner script. Handles spawning, respawning, and an optional spawn particle automatically.

    Changelog in V 2.6.5
    • Added Repeat Mode to syncro triggered spawners (number of repetitions and endless are the choices).
    • Added Repeat Mode "Until World Variable Above" and "Until World Variable Below" to both spawner types. Both allow infinite wave repetition until 1 or more World Variables reach target values you set in the Inspector.

    Changelog in V 2.6.4
    • Added Killable despawn mode "None" so your prefab won't die automatically at zero hit points. You can manually kill or it whatever you want to do now.
    • Made Killable hit points not able to go below zero.
    • Added "current hit points" to the Killable Inspector so you can see and manipulate the current HP.

    Changelog in V 2.6.3
    • Redid the way Prefab Pools are referenced due to a Unity 4 bug that won't "remember them" after you apply changes to a prefab. Unity 3.X worked fine.
    • Fixed Inspector bug where it would forget new waves you create when you pressed Play in the editor.

    Changelog in V 2.6.2
    • Added Time remaining in current wave property, which transmits to the LevelSettingsListener every time the number changes (seconds).
    • Added "remaining active spawned items in wave" for repeat and elimination waves. It transmits to LevelSettingsListener every time the number changes.
    • Renamed trigger event to Trigger Enter
    • Added "Trigger Exit" event for Triggered Despawners and Triggered Spawners
    • Added a KillableListener subclass example script to Example Scene 1. It's on the Main Camera, listening to the Player prefab's Killable script.
    • Added a "spawn one" Playmaker custom action for Syncro Spawners. It will spawn one regardless of speed settings as long as its during a wave the spawner has settings for.
    • Added a "Killer Waves Despawn" custom action.
    • Fixed bug in first 2 Playmaker actions for "Owner" variable.

    Changelog in V 2.6.1
    • Added ability to specify 0 attack points for Killable (for pickup non-damage items like coins).

    Changelog in V 2.6
    Added Playmaker custom actions:
    • Killable Change Attack Or Hit Points
    • World Variable Change Value

    Changelog in V 2.5
    • Added PlayerPrefs caching system to massively instease WorldVariable performance on mobile devices.
    • Added NGUI_KillerWaves package inside the main package for NGUI users.

    Changelog in V 2.4
    • Added random distance to the spawn distance limiter. Now you can specify a min distance that a random range of 30-50 instead of a fixed distance.
    • Added extra settings to the repeat wave section. Now you can make the wave larger (or smaller) with each repeat. You can also make each wave "time to spawn all" shorter or longer.

    Changelog in V 2.3
    • Added limitations for random angle, to enable Fruit Ninja fruit spawning.
    • Added "EndWave" method for LevelSettings, to enable countdown abort for tower defense games.

    Changelog in V 2.2
    • Performance fixes for elimination wave completion checking. Now event-based so it scales MUCH better.

    Changelog in V 2.1.1
    • Fixed bug for "not visible for time" mode on Killable.
    • Fixed bug for warning when having no music during waves.
    • Fixed VS-unfriendly yield returns.

    Changelog in V 2.1
    • Killable Death Prefab now can pull from Prefab Pools.
    • Killable now has Damage prefab. Spawn something when taking damage or x of the prefab for every Y hit points lost.
    • Random rotation checkboxes for damage prefab.
    • Added minimum distance limiter for syncro spawners. All spawned items must be min distance away from spawner before another will be spawned.

    Changelog in V 2.0
    • Added OnEnable / OnDisable events
    • Added "Despawn this" on some events for Triggered Spawners.
    • Added 2 Code-triggered Event types for Triggered Spawners.
    • Added retrigger limiters to Triggered Spawners so you can't repeat-trigger a wave continually. You can specify frames or time.
    • Added Killable script to easily allow multiple-hit targets, auto-despawning, explosions, prefab replacement and more!
    • Added OnClick event for NGUI to Triggered Spawners and Triggered Despawners.
    • Added minimal mode to triggered spawners to improve the increasingly busy UI.
    • Added "World variables" like health, score, etc that Killables can affect when destroyed. Stats are customizable by the user and carryable (or not) from scene to scene.
    • Added World Variable listeners you can hook into NGUI or whatever you like.
    • Added "game over behavior" to allow spawners and killables to shut off at game over (or not).
    • Added Child spawners (it's a settings of triggered spawners), which can be called by parent spawner. Choice to propogate events to children, any number of levels deep.
    • Added 9 listener classes for Syncro Spawners, Triggered Spawners Despawners, Level Settings, Killable, and more classes, so you can hook up custom code when things happen like wave start, wave end, item spawned etc. Each listener can be subclassed for your particular needs.

    Changelog in V 1.4.1
    • Added "spawn order" dropdown modes for prefab pools. Can be random (as originally designed, or original pool order).

    Changelog in V 1.4
    • Added "is enabled" checkbox for spawners (can also be changed through scripts)
    • Added "Game Over Music" section at top of Level Settings. Your existing music settings will probably be lost, please check them after updating to this version.
    • Added "Music Fade Time" for Silence music mode to fade previous music out over time.
    • Fixed bug where the same prefab would be spawned for each item in the same frame, even in a prefab pool.
    • Added new triggered spawner script to trigger waves from any prefab during collision, trigger, becameVisible, becameInvisible, spawn, despawn, mouse click and more.
    • Added ParticleDespawner
    • Add repeat wave time to triggered spawners, for projectile waves, etc.
    • Added Triggered Despawner script
    • Added Timed Despawner script

    Changelog in V 1.3
    • Added Incremental Settings to create "space invaders" type waves with spacing or rotation.
    • Now allowing elimination waves to repeat, and Added new field "# of repetitions" for elimination waves.
    • Fixed "down arrow" bug in inspectors.
    • Added Prefab Pools for random weighted spawn types.
    • Spawner script changed so that multiple items can be spawners per frame if "time to spawn entire wave" is very small.
    • Added Post-Spawn Nudge settings so you can create rings of enemies and other cool patterns.
    • Enabled 0 Time to spawn whole wave, which means the entire wave will spawn in one frame.

    Changelog in V 1.0 - 1.2
    • Released 1/31/2013 on the Asset Store.
    • Many Inspector refinements.

    Core GameKit was created for Wall Street Titan, which was chosen as one of the best Indie action games of 2012. The functionality helped us to speed up the level design iteratively in minimal time.

    Purchase now at: https://www.assetstore.unity3d.com/en/#!/content/6640


    For support email support@darktonic.com or use the Dark Tonic forums here: http://darktonic.freeforums.net/
     
    Last edited: Sep 3, 2017
    assetstoreoffers likes this.
  2. johny

    johny

    Joined:
    Aug 31, 2011
    Posts:
    133
    Looks cool. So does it send exactly what you specify depending on the wave or can you make it some what random but still strict depending on the difficulty of number of wave?
     
  3. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    4,544
    Edit: Prefab Pools allow what johny wanted.
     
    Last edited: Oct 29, 2013
  4. dark_tonic

    dark_tonic

    Joined:
    Mar 23, 2011
    Posts:
    106
    Brian, I thought of a feature that would make a nice addition.

    You know in Gauntlet when the little houses spawn ghosts and other creeps? It would be cool to have the house bounce a little to show when it is actively spawning something new (or about to).

    Basically, trigger an animation on a specific object (could be the specified spawner object) on spawn. This could be a particle or some other graphic effect, or an actual animation attached to a prefab.

    We talked about having a specified sound, just add in the ability to specify some animation or other function. Could work for a puzzle game like Tetris, to let you know when a new piece was about to fall, or a platformer so you know when a gun on a turret was about to fire at you.

    Something cool for v1.1 or 1.2
     
  5. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    4,544
    I like that! I'll put it on the list.
     
  6. dark_tonic

    dark_tonic

    Joined:
    Mar 23, 2011
    Posts:
    106
    screenshot of v1.2 with some spacing options for setting up rows/columns in 2d or 3d. This is a user requested feature and specifically useful for things like setting up Space Invaders / Infinity Gene style rows, Galaga style enemy patterns, etc. Could be used to spawn any type of object, though, including platforms or mining bricks, or whatever you have cooking up.

    [​IMG]
     
  7. daisyDynamics

    daisyDynamics

    Joined:
    Dec 29, 2011
    Posts:
    308
    It looks nice.

    If I drop a loop into the music slot, does it stop when all the enemies are dead (in elimination), or the time expires (in timed)? If so, is it possible to get it to fade out rather than stop abruptly? It would be great to just have a checkbox "Fade on wave end" and a slider where you could specify the fade out time.
     
  8. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    4,544
    No we never stop the music altogether. It will continue to play however it's set up (loop or not) until the clip ends (or never ends, if it's a loop). We only start a new clip playing when a new wave starts if you specify more than one audio clip in the Level Wave settings. The old clip will stop playing at that point, but there is no break in the sound when that happens.

    Thank you for checking it out!
     
  9. jrDev

    jrDev

    Joined:
    Nov 5, 2008
    Posts:
    1,557
    This needs to happen sooner than later. I will buy for this! My gameplay is dependent on this! I currently have a frankenstein setup to do this atm..

    BTW, when's the release?
     
    Last edited: Jan 31, 2013
  10. dark_tonic

    dark_tonic

    Joined:
    Mar 23, 2011
    Posts:
    106
    Hey jrDev, it just released a few hours ago! I'll confirm your needs with Brian although I'm sure he's already planning on getting that update in this week.

    We still need to do a proper release thread for it, but you can grab Killer Waves here: https://www.assetstore.unity3d.com/#/content/6640 for the half off intro price of just ten bucks.

    The intro price will just be for a few days, and then will go up as additional features go in, so grab it now for cheap and get us working for you, lol. :)
     
  11. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    4,544
    Hey jrDev, I am working on that at the moment. It should be in an update in about a week. Have no fear!
     
  12. daisyDynamics

    daisyDynamics

    Joined:
    Dec 29, 2011
    Posts:
    308
    I picked this up a couple of hours ago and I'm very happy with it, it's very easy to get up and running.

    One comment though: I had to define a tag called "spawner" and assign it to each spawner. I couldn't see that mentioned in the manual (although it may be there). Fortunately, the log messages built into the product are very descriptive (something like "cannot find a spawner with tag 'spawner' assigned"). :)
     
  13. jrDev

    jrDev

    Joined:
    Nov 5, 2008
    Posts:
    1,557
    Thanks! Pickin it up in a few hours!
     
  14. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    4,544
    Thank you for the feedback, I figured out after I submitted the package that it would not create the tag I was using in the projects it was imported into. So I've changed that to not need the tag. The next update (within a week) will have this fix.

    Also, the spawners will now be one level deeper under the LevelWaveSettings prefab. Hang in there! Glad you have a temp workaround.
     
  15. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    4,544
    daisy, I decided to submit a ".1" bug fix version. Sorry this got past me. I have a fix in for the tag thing. It will no longer be needed once this is approved. However all spawners will need to be under a "Spawners" container prefab under LevelWaveSettings. If you need to keep existing spawners, drag them out of LevelWaveSpawner, then revert LevelWaveSpawner to get the correct container prefab under it. Then drag the spawners back under that.
     
  16. ProjectOne

    ProjectOne

    Joined:
    Aug 9, 2010
    Posts:
    442
    Hi,
    Can the spawned objects be scripted objects? Your video-demo only shows spawning of non-animated sprites-type that get spawned and keep moving in a direction... BUT will it possible to spawn for example enemies that have their own scripted behaviours/IA, for example spawned enemies may rotate to face you, shoot, then fly away, come back... etc... Or is it limited to spawning not-animated and not-scripted one-direction obejcts?

    Thanks
     
  17. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    4,544
    Indeed they can have any behavior whatsoever. In our iOS game Wall Street Titan, we did exactly that with tanks and helicopters (using Killer Waves). They would rotate to face you and fire, then go offscreen to reload. I don't have any plans to add AI to this package as there are plenty of good plugins out there already for this. Our script for the demo spawned objects was very simple, but they can be as complex as you like.
     
  18. ProjectOne

    ProjectOne

    Joined:
    Aug 9, 2010
    Posts:
    442
    Excellent, no I didn't mean you adding AI to the package... just wanted to make sure your tool can spawn fully scripted objects and was indeed not limited to dead-objects sort of stuff :)
    Thanks
     
  19. dabrow

    dabrow

    Joined:
    Nov 15, 2010
    Posts:
    22
    Hi
    It looks great , I love it.
    Before I buy - can you describe or make video
    How to setup Killer Waves with Pool Manager ?

    Thanks
     
  20. pneill

    pneill

    Joined:
    Jan 21, 2007
    Posts:
    207
    I was wondering the same thing. The description in the asset store implies it works with Pool Manager. What's that integration like?
     
  21. daisyDynamics

    daisyDynamics

    Joined:
    Dec 29, 2011
    Posts:
    308
    I'm really enjoying this plugin, it's working perfectly. Regarding what I mentioned previously about sound fading: would it be possible to change the minimum number of enemies spawned (and the max) to include zero?

    If so, it would allow me to add a timed wave of 0 enemes after all other waves were completed. I could attach a short piece of non-looped music to this wave which fades out over a few seconds. I'm just trying to get around having a music loop end abruptly after the last enemy is killed.

    @ProjectOne: No issues at all - I'm spawning 20+ 3D enemies with AI in 3 waves over 10 seconds, with no noticeable slowdown, and as soon as they're spawned the AI takes over.
     
  22. ProjectOne

    ProjectOne

    Joined:
    Aug 9, 2010
    Posts:
    442
    Cheers daisyDynamics
     
  23. jrDev

    jrDev

    Joined:
    Nov 5, 2008
    Posts:
    1,557
    Bought!
     
  24. outtoplay

    outtoplay

    Joined:
    Apr 29, 2009
    Posts:
    740
    Could one assign an array of prefabs to a wave? So it wasn't just a single type of enemy? This would be mighty nice.
     
  25. SteveB

    SteveB

    Joined:
    Jan 17, 2009
    Posts:
    1,418
    It appears (though I'd like confirmation from Jerotas or Tonic as well) that you go into the SpawnUtility.cs and comment out the two lines in the Spawn function and single line in the Despawn function, then 'uncomment' the commented code that references PoolManager in both (it's noted in the code) and voila, should work.

    If there's more to it than this I'll wait on the guys to respond.

    Cheers!
     
  26. SteveB

    SteveB

    Joined:
    Jan 17, 2009
    Posts:
    1,418
    In other words, I suspect what I wrote above is all you have to do, including entering the name of your PoolManager pool into the string that says "YourPoolName" in both functions, and that then, by following the tutorial video, it should just work though using your PoolManager setup instead.

    This sound right Tonic?
     
  27. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    4,544
    SteveB is correct. If there's a single spawn pool, that's all you have to do. If there are multiple spawn pools and you guys have suggestions on what you need, I'll try to get it in if you give me a description of desired functionality.
     
    Last edited: Feb 2, 2013
  28. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    4,544
    If you want zero enemies for a wave, you simply don't create a wave in any spawner for it. The timed wave in LevelWaveSettings will go ahead and allow that time to be elapsed and do only the music changing part.
     
  29. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    4,544
    I'm working on this right now. I have prefab pools, where you assign weights to each prefab, so you can have a certain enemy appear (say) 10x as often as another type. And you can choose whether each random prefab from that group is a "new coin toss" or whether it depletes the pool and refills. Here's a screen shot. [​IMG]

    I finished it last night. Give me a fews days to do the documentation and videos and I'll put it on the Asset Store!
     
    Last edited: Feb 3, 2013
  30. daisyDynamics

    daisyDynamics

    Joined:
    Dec 29, 2011
    Posts:
    308
    OK perfect - thanks.
     
  31. jrDev

    jrDev

    Joined:
    Nov 5, 2008
    Posts:
    1,557
    Gimme gimme!
     
  32. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    4,544
    Killer Waves V 1.3 submitted to the Asset Store! This new version includes:

    - Fixed "spawner tag" bugs. No tags required anymore.
    - Fixed "down arrow" bug in inspectors.
    - Now allowing elimination waves to repeat, and Added new field "# of repetitions" for elimination waves.
    - Added Incremental Settings to create "space invaders" type row/column waves with spacing or rotation.
    - Added Post-Spawn Nudge settings so you can create circles of enemies and other cool patterns, in conjunction with Incremental Settings.
    - Added Prefab Pools for random weighted spawn types (video coming in the next few days!)
    - Spawner script changed so that multiple items can be spawners per frame if "time to spawn entire wave" is very small.
    - Enabled 0 Time to spawn whole wave (instead of .1), which means the entire wave will spawn in one frame.

    I still have a lot of cool scripts and things in mind to add as well! And as always I'm open to incorporating whatever cool ideas you guys may have. So speak up! Even if it doesn't seem possible. I'll be the judge of that :)

    I'd also be in your debt and very appreciative if any of you could post a review on the Asset Store. There are currently none, although this plugin has been selling pretty well. Killer Waves is here to stay and grow as far as possible, and of course that's more possible the better it does, which does depend somewhat on reviews.

    Thank you so much!
    -Brian
     
    Last edited: Mar 30, 2013
  33. daisyDynamics

    daisyDynamics

    Joined:
    Dec 29, 2011
    Posts:
    308
    Unfortunately the music continues to play after the wave's timer has expired. Is it possible to change that; i.e. stop the music when the wave ends? I guess an alternative is to play a one second loop of silence as a final wave.

    Also, how can I activate a wave from code? I assume it's a single line to enable/disable a wave you've created in the Inspector.

    As a feature request, can you activate a wave by being within a specified distance from a spawner? I guess I can just raycast to a spawner's z transform component, but I'm sure a lot of people would want something like that.
     
  34. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    4,544
    V 1.3 is live! Video showing off some of the new features can be viewed here.

     
  35. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    4,544
    Thanks for the questions. For the music, I'm going to add a field for "game over music" which would play whether you triggered game over from Script (player dying) or you ran out of waves. It could also have a "just end music" option.

    There is currently no way to activate / deactivate spawners or waves during play (other than the inspector). I was planning on adding an events-driven script that could activate/deactivate the spawner based on events like OnBecameVisible, OnCollision (with a tag dropdown), OnTrigger, etc. It possibly could activate only certain waves in the spawner, but that may be difficult to make a good understandable UI for.

    I was also going to add a new spawner script you could attach to anything that doesn't follow the global LevelWaveSettings timings at all, but still has the same wave settings as a spawner otherwise. It would just spawn a wave based on events such as OnBecameVisible, etc. So you could have an enemy that unloads a bunch of smaller enemies after it has been on the screen for 2 seconds or whatever.

    Would these cover all your bases or is there something additional you're thinking of? It seems with a trigger you could do what you want with your raycasting scenario (not needing a raycast though) and my new features.

    Could you guys tell me your top two things you want in the next version out of the above (or other). I'd rather do smaller chunks and keep cranking out updates more often instead of making you wait for huge updates. The music stuff is quick so I will definitely get that in.

    Thanks!
     
    Last edited: Feb 5, 2013
  36. jrDev

    jrDev

    Joined:
    Nov 5, 2008
    Posts:
    1,557
    Is there a global pool of max enemies? For eg. I have 2 spawners, and I only want to spawn a max of 10 enemies between them, and not max 10 enemies individually (equaling to 20 enemies being spawned), can I do that? Is weighting for prefabs global too? Follow up question is if we have access to the API so I can check how many enemies have been spawned totally and also how many enemies are currently in play?
     
  37. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    4,544
    The pools of enemies have no max "stopper" currently. Weightings for items in prefab pools only affect the item in that one pool, regardless of how many spawners are using the pool. So if you create a different pool containing the same prefab, it can have a different weight in that pool. They have no effect on each other.

    The spawners know how many items have been spawned and are still alive for elimination and repeating waves, but they currently don't keep track for timed waves.

    What is you are trying to do? Knowing that, I can make a plan best to solve it. However know that the initial goal of this plugin is to provide rich functionality without you having to write ANY code. Not that we cannot also add some code only features - we can. I will prefer a no code solution whenever possible though.
     
  38. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    4,544
    By the way, I've added a link to the documentation into the OP for those reading who don't own the plugin.
     
    Last edited: Feb 6, 2013
  39. jrDev

    jrDev

    Joined:
    Nov 5, 2008
    Posts:
    1,557
    What I am asking for is a global pool that I put my prefabs in, while also having multiple spawners that pull from this same global pool. The prefabs would also spawn at random spawners. Basically the killer waves spawners act as exclusive pools if i understand, but I wanted a global pool system. Plus I wanted to use the weighting. I currently have my own Frankenstein setup but I chose this because the interface is much more clean. The system seems to work perfectly with space shooters, but I was trying to get some general use. I can take a screen cap of my custom spawner setup if you want if you don't understand...
     
  40. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    4,544
    Ok, I take it you don't have Pool Manager? That would allow you to set maximum numbers globally for each prefab, with or without Killer Waves. Is that the only piece missing for you right now? It is doable to implement such a feature in KW, however I would make it a switchable feature so that people who don't use it don't have to go through an extra step.

    Eventually I may actually make a product to compete with Pool Manager, time permitting. Or add similar features into a version of KW. Who knows. It starts to make sense the more people ask for.
     
    Last edited: Feb 6, 2013
  41. jrDev

    jrDev

    Joined:
    Nov 5, 2008
    Posts:
    1,557
    I have PoolManager. In the image is my frankenstein spawner. It's currently set to do 10 waves. First wave set to have only 1 enemy prefab (C-Reaper).
    Max enemies controls the max amount of enemies that can be in play at a time.
    Spawn rate is time it takes to spawn another enemy.
    Spawn amount is the amount of enemies to spawn at same time.
    Wave limit is the total amount of enemies that were spawned during that wave to trigger the start of the next wave.
    Enemy Set gives option of 6 enemies prefabs that can be added for that wave. Gives amount to pool (higher amount of prefab type allows the prefab to be spawned more times - just like weighting).

    It's a frankenstein setup but it works (perfectly I might add) but Killer Waves has a great UI and I was hoping was something like my setup but more robust.
     

    Attached Files:

  42. daisyDynamics

    daisyDynamics

    Joined:
    Dec 29, 2011
    Posts:
    308
    Thanks – the option to have a “game over music” field sounds good. Essentially, I just need a way of fading music at the end of a series of waves (although not necessarily at the end of the game). So I may have 2 waves of enemies, and then play “game over” music when they’re all defeated. I would then have some non-combat gameplay, and then a couple more waves of enemies…and more “game over” music.

    Re activating the spawners, that’s not an issue actually – my AI can just handle that anyway. The idea of having spawner-based events is great, it would be very useful.

    I love the new prefab pool – great stuff, thank you!
     
  43. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    4,544
    Okay daisy, I will think about some music fading options too. It could step on the toes of our other plugin Master Audio's music ducker, but as long as I make that known and documented, it is ok :)

    Thank you for the support and great ideas!
     
  44. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    4,544
    jrDev, that is doable although not easy. There are a handful of things that would need to exist in KW before that functionality would be feasible. I do like most of those Features. I just need to think of a way to put them in without disrupting a more simple flow, for people that don't need all the bells and whistles. I usually am good at that. This is definitely not a trivial task to be sure.

    Please send me an email at jerotas2005@yahoo.com and we can continue the discussion in emails.
     
    Last edited: Feb 7, 2013
  45. ProjectOne

    ProjectOne

    Joined:
    Aug 9, 2010
    Posts:
    442
    Just started trying out Killer Waves and so far had some problem:

    1)
    - If I have PoolManager already imported, then I import Killer Waves I get 'red' errors in Unity as soon as I import Killer waves. (Sadly I closed that project to start a new one just with Killer Wavs so i cannot remember what the errors were. Using Unity 4.0.1f2)

    - Also, no idea why, but when I drag the LevelWaveSettings into my scene Killer Waves gives me no checkboxes/options in the Inspector, nothing at all, just shows the Killer Wave Level Settings with the script in it but not options = cannot use

    This scene had a few NGUI scrolling layers, a Player Sprite, some NGUI GUI elements, a PoolManager object



    2) on a brand new empty project I just imported Killer Waves and it shows up straight away a number of yellow warnings

    Assets/KillerWaves/ExampleScenes/Scripts/Player.cs(18,41): warning CS0618: `UnityEngine.GameObject.SetActiveRecursively(bool)' is obsolete: `gameObject.SetActiveRecursively() is obsolete. Use GameObject.SetActive(), which is now inherited by children.'

    Assets/KillerWaves/ExampleScenes/Scripts/PlayerSpawner.cs(15,29): warning CS0618: `UnityEngine.GameObject.active' is obsolete: `GameObject.active is obsolete. Use GameObject.SetActive(), GameObject.activeSelf or GameObject.activeInHierarchy.'

    Assets/KillerWaves/ExampleScenes/Scripts/PlayerSpawner.cs(21,40): warning CS0618: `UnityEngine.GameObject.SetActiveRecursively(bool)' is obsolete: `gameObject.SetActiveRecursively() is obsolete. Use GameObject.SetActive(), which is now inherited by children.'


    Assets/KillerWaves/Scripts/Utility/SpawnUtility.cs(25,56): warning CS0618: `UnityEngine.GameObject.active' is obsolete: `GameObject.active is obsolete. Use GameObject.SetActive(), GameObject.activeSelf or GameObject.activeInHierarchy.'


    WAV contains a MP3 file - file is unwrapped and reencoded (this might affect quality).

    WAV contains a MP3 file - file is unwrapped and reencoded (this might affect quality).

    Model 'KillerWaveSpawnWidget' contains animation clip 'Default Take' which has length of 0 frames (start=-1, end=-1). It will result in empty animation.


    -----

    it would be better to setup Killer Wave package in a way that doesn't shouts Yellow Warning on import. Not pleasant when importing on a complex scene

    Now on this totally empty scene when importing Killer WaceSettings prefab the Level Settings in the Inspector does show checkboxes/options



    PS: any issue that Killer Waves has with NGUI Sprites being used as Prefab To Spawn?
     
    Last edited: Feb 8, 2013
  46. ProjectOne

    ProjectOne

    Joined:
    Aug 9, 2010
    Posts:
    442
    Ok, tried to import Killer Waves in a different simple project which has some NGUI elements, again a few scrolling layers, project has Pool Manager 4 imported and one Pool Manager pool with one prefab in the pool

    I imported Killer Waves 1.3 with and without the example Scenes and as soon as it finished importing it gives the following errors:

    WARNINGS (YELLOW)
    Model 'KillerWaveSpawnWidget' contains animation clip 'Default Take' which has length of 0 frames (start=-1, end=-1). It will result in empty animation.

    Assets/KillerWaves/Scripts/Spawners/WaveSyncroPrefabSpawner.cs(26,17): warning CS0436: The type `PrefabPool' conflicts with the imported type `PrefabPool'. Ignoring the imported type definition

    Assets/KillerWaves/Scripts/Utility/SpawnUtility.cs(25,56): warning CS0618: `UnityEngine.GameObject.active' is obsolete: `GameObject.active is obsolete. Use GameObject.SetActive(), GameObject.activeSelf or GameObject.activeInHierarchy.'

    Model 'KillerWaveSpawnWidget' contains animation clip 'Default Take' which has length of 0 frames (start=-1, end=-1). It will result in empty animation.


    ERROR - RED
    Assets/KillerWaves/Editor/PrefabPoolInspector.cs(218,40): error CS0433: The imported type `PrefabPool' is defined multiple times


    AND ALSO
    the LevelWaveSettings prefab in the Hierarchy does not work, does not give checkboxes/options in the inspector. In the inspector it says - (LevelWaveSettings)
    - Script - LevelSettings-
    - The associated script cannot be loaded. Please fix any compile errors and assign a valid script
    (which is of course why I get no options in the inspector)



    Is maybe killer waves conflicting with Pool Manager ('PrefabPool') ?
     
    Last edited: Feb 8, 2013
  47. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    4,544
    That sounds accurate ProjectOne. I'll take a look tonight. It's probably the new PrefabPool stuff that needs a namespace. I'll also find some time to install Unity 4.0 and fix the rest of the warnings (where possible without breaking Unity 3.5.7). I'm not planning on fixing the mp3 warnings though. That's only on the example scene and wav files are much much larger. In any case, I'll make a hotfix for the red errors and send it to you in this thread.

    Thank you for checking it out!
     
  48. ProjectOne

    ProjectOne

    Joined:
    Aug 9, 2010
    Posts:
    442
    Excellent
    thanks for looking into it
     
  49. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    4,544
    ProjectOne, please send me an email to jerotas2005@yahoo.com and I will send you a new package with no conflict with PoolManager. If anyone else needs that, also email me with your Asset Store receipt, but I am submitting this hotfix in 5 minutes so it will be live very soon.

    Thank you for your patience and communcation. I am going to install Unity 4.0 and get the rest of the warnings to go away if possible in a backward compatible way. I'll post again after that is done. May take a day or so since I have to install Boot Camp and some more things.

    Also, no I don't think NGUI being the spawn object should be a problem at all.

    -Brian
     
    Last edited: Feb 9, 2013
  50. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    4,544
    Unfortunately, the warnings that are shown in Unity 4.0 can't be fixed in a backward compatible way (except possibly the model one, which I will investigate further). So I will maintain a Unity 4.0 version and if anyone needs that one, just buy the normal Killer Waves and email me your receipt. I will send you the 4.0 version. It should be noted that this package does now work on 4.0, it just has a few warnings when you import it.

    Thank you!

    Edit: These have been fixed.
     
    Last edited: Sep 3, 2013