Download

Tower Defense Starter Kit

The v2.5 update for Tower Defense Starter Kit has gone live on the Marketplace.

Change Log:

  1. Introduced an improved data-driven model for defining Towers. Unlike the previous model centered around grouping base towers & their upgrades together in one place, the new approach treats each upgrade level of every tower class as a separate entity in itself, and can be defined through the data table ‘DT_TowerData’.

The modular & decoupled nature of this design should facilitate the addition of new features with far greater ease than the previous system. For example, adding branching tower upgrade paths (similar to the final upgrade in Kingdom Rush) would require very little modification in this scenario & prevents the need to deal with unwieldy nested struct arrays.

Moreover, changes to the data table, like the addition of new towers, will automatically reflect itself in the UI owing to the data-driven workflow.

  1. The Upgrade & Recycle/Sell functionalities have been separated from the Tower Functions category, which now explicitly deal with features like Overdrive & Repair modules. A new data table ‘DT_TowerFunctions’ has been added to define these tower functions.

  1. The tower interaction (Construct/Upgrade/Recycle/Tower Functions) workflow has been modified as per the following design:
  • Player Interaction >> User Interface >> Player Controller (Interface) >> Tower Manager >> Towers & Tower Constructor
  1. Added a new ‘GridCellHighlighter’ object to highlight grid cells under mouse cursor focus.

  2. New interface (BPI_TargetInfoDisplay) added to retrieve information about selected actors.

  3. The Loadout menu has been modified to use the new tower data model and will dynamically reflect alterations made to the data table. Players can now select towers directly from this screen instead of traversing to a separate Tower Selection menu.

All changes within the blueprints are tagged with the boolean variable ‘Version2_5’ in order to easily identify the new changes.

The v2.6 update for Tower Defense Starter Kit has been submitted to the Marketplace.

Change Log:

  1. The Loadout Menu now enables players to select Global Abilities at the start of a level.

  1. New UI elements for displaying slots left in the player’s loadout for Towers & Global Abilities.

  2. Introduced a Global Ability Manager to handle systems controlling the use of Global Abilities. The abilities themselves are now using a data-driven workflow that enables users to add new Global Abilities in just a few steps. No UI changes required; Just a new entry in the data table and an actor containing the logic to be executed. Tutorial for the same will be uploaded before the end of the week]

  3. Added v4.22 compatibility.

All changes within the blueprints are tagged with the boolean variable ‘Version2_6’ in order to easily identify the new changes.

Thanks to the changes introduced in the latest v2.6 update, adding new Global Abilities can now be done in a matter of minutes. I’ve shared a simple 4-step tutorial that covers the process of creating and adding your own Global Abilities from scratch.

The next update will see the addition of a few more abilities on top of the existing roster of Airstrike & Tower Guardians. I’ve received a couple of suggestions like proximity mines and traps that can be placed on AI paths. But more ideas are always welcome. So if anyone has other suggestions, feel free to share them.

So i’ve bought this and i’m trying to develop my own game from it and i keep getting this
UATHelper: Packaging (Windows (32-bit)): LogInit: Display: Warning/Error Summary (Unique only)

UATHelper: Packaging (Windows (32-bit)): LogInit: Display: -----------------------------------

UATHelper: Packaging (Windows (32-bit)): LogInit: Display: LogNavigation: Error: [/Script/Engine.RecastNavMesh] found in the DefaultEngine.ini file. This class has been moved. Please rename that section to [/Script/NavigationSystem.RecastNavMesh]

UATHelper: Packaging (Windows (32-bit)): LogInit: Display: LogProperty: Error: UStructProperty::Serialize Loading: Property ‘StructProperty /Game/TowerDefenseStarterKit/Blueprints/WaveSpawningSystems/BP_BatchedWaveSpawnController.BP_BatchedWaveSpawnController_C:LinkWaveSpawnDataToDataTableEntries.CallFunc_GetDataTableRowFromName_OutRow’. Unknown structure.

UATHelper: Packaging (Windows (32-bit)): LogInit: Display: LogProperty: Error: UStructProperty::Serialize Loading: Property ‘StructProperty /Game/TowerDefenseStarterKit/Blueprints/WaveSpawningSystems/BP_WeightedWaveSpawnController.BP_WeightedWaveSpawnController_C:RunBotSpawningSystem.CallFunc_GetDataTableRowFromName_OutRow’. Unknown structure.

UATHelper: Packaging (Windows (32-bit)): LogInit: Display: LogProperty: Error: UStructProperty::Serialize Loading: Property ‘StructProperty /Game/TowerDefenseStarterKit/Blueprints/WaveSpawningSystems/BP_WeightedWaveSpawnController.BP_WeightedWaveSpawnController_C:PrepareAISpawnWeightDistArrayForNewWave.CallFunc_GetDataTableRowFromName_OutRow’. Unknown stru

cture.

UATHelper: Packaging (Windows (32-bit)): LogInit: Display: LogProperty: Error: UStructProperty::Serialize Loading: Property ‘StructProperty /Game/TowerDefenseStarterKit/Blueprints/WaveSpawningSystems/BP_WeightedWaveSpawnController.BP_WeightedWaveSpawnController_C:SortAISpawnDataInIncreasingThreatOrder.CallFunc_GetDataTableRowFromName_OutRow’. Unknown struc

ture.

UATHelper: Packaging (Windows (32-bit)): LogInit: Display: LogProperty: Error: UStructProperty::Serialize Loading: Property ‘StructProperty /Game/TowerDefenseStarterKit/Blueprints/WaveSpawningSystems/BP_WeightedWaveSpawnController.BP_WeightedWaveSpawnController_C:LinkAISpawnDataToDataTableEntries.CallFunc_GetDataTableRowFromName_OutRow’. Unknown structure.

UATHelper: Packaging (Windows (32-bit)): LogInit: Display: LogUObjectGlobals: Warning: Class /Script/Engine.NavigationSystem is not a child class of Class /Script/Engine.NavigationSystemBase

UATHelper: Packaging (Windows (32-bit)): LogInit: Display: CookResults: Warning: Unable to find package for cooking /Game/TowerDefenseStarterKit/Maps/Map_DynamicNavMeshPathDemo

UATHelper: Packaging (Windows (32-bit)): LogInit: Display: LogCook: Warning: Unable to find package for cooking /Game/TowerDefenseStarterKit/Maps/Map_DynamicNavMeshPathDemo

UATHelper: Packaging (Windows (32-bit)): LogInit: Display: LogLinker: Warning: Unable to load PhysicsSerializer with outer InstancedStaticMeshComponent /Game/TowerDefenseStarterKit/Blueprints/GameplayActors/BP_GridGenerator.BP_GridGenerator_C:GridCell_GEN_VARIABLE because its class does not exist

UATHelper: Packaging (Windows (32-bit)): LogInit: Display: LogLinker: Warning: Unable to load PhysicsSerializer with outer InstancedStaticMeshComponent /Game/TowerDefenseStarterKit/Blueprints/GameplayActors/BP_GridCellDetector.BP_GridCellDetector_C:GridCellHighlighter_GEN_VARIABLE because its class does not exist

UATHelper: Packaging (Windows (32-bit)): LogInit: Display:

UATHelper: Packaging (Windows (32-bit)): LogInit: Display: Failure - 6 error(s), 5 warning(s)

UATHelper: Packaging (Windows (32-bit)): LogInit: Display:

UATHelper: Packaging (Windows (32-bit)):

UATHelper: Packaging (Windows (32-bit)): Execution of commandlet took: 7.50 seconds

UATHelper: Packaging (Windows (32-bit)): Took 18.9222119s to run UE4Editor-Cmd.exe, ExitCode=1

UATHelper: Packaging (Windows (32-bit)): ERROR: Cook failed.

UATHelper: Packaging (Windows (32-bit)): (see C:\Users\RoHil\AppData\Roaming\Unreal Engine\AutomationTool\Logs\D+Program+Files+Epic+Games+UE_4.20\Log.txt for full exception trace)

UATHelper: Packaging (Windows (32-bit)): AutomationTool exiting with ExitCode=25 (Error_UnknownCookFailure)

UATHelper: Packaging (Windows (32-bit)): BUILD FAILED

PackagingResults: Error: Unknown Cook Failure

anyone know how to fix this , cause I’m basically a noob at this

Hi, may I know which version of the engine you’re using?

The v2.7 update for Tower Defense Starter Kit has been submitted to the Marketplace.

Change Log:

  1. Added support for multiple Exit Points to be linked to a single Spawn Point. Individual AI units can now either move towards a designated objective (set for each spawn point) or use their own dynamically selected objective instead of being restricted to a single common path.

  2. Added support for visualizing parallel spline path generation directly from the editor.

As shown in the video, only 6 spline points are defined manually. The parallel lanes are generated automatically based on data from the primary spline.

Additional Notes:
Search for Version2_7 in the blueprint editor to identify all the new changes in this update.

The v2.8 update for Tower Defense Starter Kit has gone live on the Marketplace.

New Features:

  • Added a new Global Ability: Proximity Mines. You can now deploy mines along the AI paths that deal area damage when triggered.

ezgif.comoptimize-1.gif

Bug Fixes:

  • Towers that fire projectiles no longer gain XP at twice the default rate.
  • Information about upcoming waves now shows an accurate count for different AI classes. Duplicate entries in the list have been removed.

Additional Notes:

The v2.8.2 hotfix update for Tower Defense Starter Kit has gone live on the Marketplace.

Change Log:

  • Fixed a bug that causes AI to not move in new maps. [Search for Version2_8_2 in the blueprint editor to identify the changes.]

Known Bugs:

  • Node connection error in BP_SpawnPoint due to a variable name change, preventing the game from loading in the editor. I’ve already submitted an update to fix it, but meanwhile here is the solution if anyone’s having trouble with running their projects:

The v2.8.3 hotfix update for Tower Defense Starter Kit has gone live on the Marketplace.

Change Log:

  • Fixed the node connection error in BP_SpawnPoint that prevented the game from starting up in v2.8.2.

  • Added a new optional Rush Mode option to the Runner AI class (now Rusher), that when activated will enable it to disregard predefined spline paths & rush (requires navmesh) straight for the exit point. The Rush Mode can be enabled by setting CanActivateRushMode? in BP_EnemyAI_Rusher to True.

    The default behavior is set such that it happens when their health goes below 25%. The health percent threshold (normalized to the 0-1 range) can be customized through the RushActivationHealth%. Alternatively, you can activate Rush through other triggers by calling the RushToObjective event.

    [Note: The Rush Mode is relevant only while using predefined spline paths for AI navigation. It will make no difference in the navmesh example since the AI is already taking the direct route to exit point.]

Additional Notes:

  • Search for Version****2_8_3 in the blueprint editor to identify all the new changes in this update.

I used this project to create a scenario myself, but the tower of scenario can’t be created in the BP_GridGenerator you gave me. What options have I set less?

Hi, I’ve uploaded a tutorial for setting up new Towers using the toolkit:

You should be able to get your towers working by following those steps. If you do run into issues, just let me know.

@Stormrage256

Hello sorry for my bad english.
Can you tell me how to fix these mistakes ?

Imgur

Alright, so what’s happening is that the AI units are not able to access their spline paths and hence unable to run their movement logic. May I know whether you’re using the nav mesh pathing or the custom spline path option for AI movement?

No problem with UE4 version 4.22.
But using UE4 4.23 shows these errors.
This happens on one of the cards included in the package.

I have not tested it in v4.23 since it’s still in the preview version. But thanks for letting me know beforehand. I’ll see if I can reproduce the issue at my end. Also by cards, could you be more specific which asset you’re referring to?

Hi @polkovnika , I was able to reproduce the issue in v4.23 preview 7. It’s caused by the spline components being set to null for some reason.

I’m not sure if its an engine bug, but what seems to be happening in 4.23 is that every time the spline construction script runs in the editor, it keeps retaining references to the components created in the past as you can see below:

The print strings within the green border are how it’s supposed to be. Three spline components: the middle one created by the user and parallel splines on each side generated automatically through the script. However, in v4.23, you can see ‘TRASH’ references (within the red border) to additional spline components and more keep getting added every time you compile.

You can fix this by adding the following node at the beginning of BP_SpawnPoint_SplinePathing’s construction script:

I believe that should take care of the issue. Let me know if it works out.

The v2.9 update has been submitted to the Marketplace.

New Features:

  • Added support for branching tower upgrade paths: Now you can have tower upgrades branch out along specialized paths in just a single step. Simply add new tower models to the UpgradesTo: array for your tower in the DT_TowerData data table and you should be good to go. [Note: Tower Models required to have entries in the data table.]

The Tower Interaction UI systems will automatically calculate positions for upgrade buttons using the data table information. No script changes required for displaying multiple upgrade options.

Other Changes:

  • Tower Upgrades now destroy & spawn new towers instead of modifying the attributes of base towers. Tower XP still carries over to the upgraded towers.
  • Unique hardcoded UI Stats for Mining Tower removed. All towers now directly use the stats specified in the data table.
  • Toolkit updated to Unreal Engine v4.23.

Bug Fixes:

Additional Notes:

  • Search for Version2_9 in the blueprint editor to identify all the major changes in this update.

The v2.10 update has been submitted to the Marketplace.

New Features:

  • Added a new Data Table driven workflow for defining waves when using the Batched Wave Spawning System. Compared to the previous struct array setup, data tables offer far greater ease of use when it comes to defining waves, especially when dealing with large hordes comprising multiple clusters of enemies within each wave.

[Note: Tutorials on how to use the new system will be posted on Youtube once v2.10 hits the Marketplace. You can find them in the Tower Defense Starter Kit playlist: [https://www.youtube.com/playlist?lis...Ky4HRAkYVzIuPg](https://www.youtube.com/playlist?list=PLMrUFryxCzn6fhL-pzjKy4HRAkYVzIuPg)]
  • Added support for spawning Boss enemies at the end of waves. Simply select the data table entry for the wave, set the SpawnBossAtEnd? variable to True, & define the BossSpawnData (similar to normal enemy spawn data) parameters.

Other Changes:

  • Revamped the BP_WaveSpawnController workflow to incorporate the new features as well as to make it easier to understand. The visual setup now displays every step of the wave spawning system in a neatly arranged manner so as to enable identifying all working parts of the system in a single glance as soon as you open the blueprint.

    [Note: If you need the old setup for reference, it’s still available when you download the v4.22 edition as no changes have been made to this blueprint while making the transition to Unreal Engine v4.23.]

Additional Notes:

  • Search for Version2_10 in the blueprint editor to identify all the major changes in this update.

Hi, I’ve uploaded a new tutorial for setting up waves using the Batched Wave Spawn (spawning AI units in batches) Controller, taking into account the changes that were introduced in the latest v2.10 update.

[Note: If you’re using the Weighted Wave Spawning system, the old workflow still applies since the waves are not explicitly defined through data tables in that scenario.

It’s a simple 3-minute tutorial. So you should be able to create your own customized waves and have them up & running in just a matter of minutes. Have fun! :slight_smile:

Hi Stormrage,

First, I wanted to say great job on this project. It’s got a ton of features, and I really love how modular this has gotten over its lifetime. Very nice, props!

I have a few suggestions that I think would be nice in this project. I’m in the process of implementing these features in my project, and thought they may be of use to others.

  • Muzzle flash emitters upon firing. Minor, easy to do, but I ended up throwing the logic in the base class (which means I can’t update super easily in the future) so all turrets had it if needed.

  • Damage types and armor types. Bolding this one because it’s kind of a staple in TDs.

  • It’d be awesome to have a table with each armor type and the multipliers for damage types. A tank’s armor, for example, could reduce all damage other than piercing. An entry in the table of “default” could make all unspecified damage types use that multiplier.

  • Projectile collision sounds would be pretty easy with this in place as well. Ricochets and metal “tink” sounds for metal armor. Fleshy sounds for unarmored units. Etc.

  • Ammo pool with recharge time upon depletion. Example, a rocket turret with 8 rockets. It can fire all 8 and the fire rate can account for the delay between them. However, once those 8 rockets are depleted, a recharge time which is totally independent of the fire rate is incurred before the next pool of 8 can be cycled through.

  • Turret thumbnails. It would be nice if I could just throw a thumbnail into the TowerData table, and if it exists, show it instead of the abbreviation. Only fall back to abbreviations when a texture isn’t provided for a thumbnail.

  • SpawnPointIndex value of -1 to randomize the spawn point in the Batched Wave Spawn system. Example, I know I want 10 of unit A and 10 of unit B. I don’t want it to be perfectly distributed to exactly the same point each time. The value of -1 would just pick a random spawn point for all 10 of unit A and B.

They’re mostly minor, but I’d really love to see damage types and armor types. If it actually uses physical materials, great, but totally not necessary imo.

Admittedly I haven’t even tried the latest version on 4.24, but looking forward to seeing the update for 4.24 as well.

Thanks, and again great work!