FPS Tower Defense Toolkit

Hi there, thanks for your generous feedback. :slight_smile:

I’ll go over the 2nd question first since that’s the easiest to resolve. So I don’t own that turret pack, but could you tell me if the pack uses static or skeletal meshes for the turrets?

If they have static mesh models, then you can just head over to the DT_TowerData data table in the Tower folder and change these two parameters as required:

The TowerMesh parameter can be used to change the mesh used by the Tower while the OffsetFromGridCell parameter controls the position of the mesh relative to the underlying grid cell. So like, say, for example, if the tower appears half underneath the ground, you can set the z value to half the height of the tower so that it is spawned above the ground.

Once you’ve modified these two parameters for the required tower, just head over to BP_TowerManager blueprint and press compile (maybe I’ll make some changes in the next update so that this step is not required). When you return to play the game, the tower model should reflect the changes that you’ve made in the data table. If it still doesn’t work, we’ll look into what else might be causing the issue.

Now if the turret pack comes with skeletal meshes for the turrets, there will have to be a few more changes. So let me know if that’s the case.

It’s a bit late at night here on a Saturday. So I’ll get back to you with the remaining queries tomorrow morning. Cheers. :slight_smile:

1 Like

Alright, so moving on to the third question, the guns in the pack seem to be skeletal meshes, similar to the ones provided in the toolkit. So you can just swap out the meshes as shown below for each of the provided guns:

Optionally, if the guns in that pack come with an animation blueprint, you’ll have to set that as well through the blue highlight option.

Apart from that, I don’t know how big the blueprints for those weapons are, but I’d suggest copying over all the blueprint nodes and variables from there to the weapons from the toolkit. Parent weapon blueprint to BP_BaseWeapon blueprint, and similarly for each corresponding child weapon blueprints.

And I just saw the video of your game. It’s good to see the toolkit being put to good use. :smiley:

I’ll be uploading new tutorials over the coming weeks since some of the existing tutorials are based on older versions of the project. So hopefully, that’ll be of help to you as well as other customers going forward.

As for the co-op support, I don’t have any experience working on the networking and multiplayer side of Unreal. But if you have any doubts regarding the current implementation, you can always reach out to me here or through the support email.

1 Like

Thank you so much for the detailed responses! I’ll jump in with my ChatGPT and Youtube accomplices and get stuck in!

Moving on to the 1st question, each Tower has its own attack logic but you can find them straightaway in the even graph if you open the Tower blueprints.

For the Laser Tower, I’ve provided a placeholder laser particle system, but you can replace it through the “LaserBeamParticleSystem” parameter.

The Machine Gun Tower & Sniper Tower both use a similar hitscan firing system and just apply instantaneous damage. But you can spawn a particle system just before that in the section marked below:

The Shockwave Tower just applies damage to all enemy units in range, but you can spawn your particle system right before the for loop in its AttackEnemyUnits function.

I’ll share the steps for weapon projectiles as well soon.

Also, on a side note, I haven’t used ChatGPT for Unreal development yet. Does it help with blueprint programming or general usage of Unreal Engine?

You are such a legend lol! Thank you!

Let me know if you are available to work on projects or if you are too busy (I imagine you are very busy!)

As for ChatGPT, without it I would be completely clueless!

Well then, I’ll give it a try as well. I was thinking of using it to help me create tutorials more quickly. Didn’t really think of using it for development.

I’m available to work on blueprint-based projects, but I’d like to know the scope of the project and if it’s within my skill set. You can share more info about your requirements either through private messages or my marketplace support email.

1 Like

Ooh Great!

Expect some spam from UncleFunk!

@Stormrage256 Can you port it to the FAB marketplace i really want to purchase this asset? Thank you!

The toolkit is now available on Fab with a brand new v3.16 update.

Change Log:

I. Revamped the AI Controller and Behavior Tree for Enemy AI with a much more streamlined system that’s less complicated and easier to work on, while having all of the previous features including AI being able to choose between the Power Core vs the Player as its target based on proximity, visibility, as well as any damage inflicted in recent memory.

II. Made improvements to the Tower Constructor/Highlighter UI both in terms of UI design as well as using event dispatchers to make the HUD updates happen in a more automated fashion. Also included are UI design improvements to other aspects of the HUD.

III. Created a data-driven model for setting up Enemy AI stats & behaviors. You can just customize or create new entries for enemies through the DT_EnemyData data table as shown below:

IV. Changes to wave spawn controller to prevent circular dependency issues for Enemy AI classes.

V. Bug Fixes for Enemy AI targeting that was present in v3.15.

Hi, thanks for this toolkit.

I’m having a problem when I try to package my project. It always fails. With this error message:

UATHelper: Packaging (Windows): LogProperty: Error: FStructProperty::Serialize Loading: Property ‘StructProperty /Game/FPSTowerDefenseToolkit/Blueprints/WaveSpawning/BP_WaveSpawnController.BP_WaveSpawnController_C:GetDataForEnemyType:ReturnValue’. Unknown structure.
UATHelper: Packaging (Windows): LogProperty: Error: FStructProperty::Serialize Loading: Property ‘StructProperty /Game/FPSTowerDefenseToolkit/Blueprints/WaveSpawning/BP_WaveSpawnController.BP_WaveSpawnController_C:GetDataForEnemyType:CallFunc_GetDataTableRowFromName_OutRow’. Unknown structure.
PackagingResults: Error: FStructProperty::Serialize Loading: Property ‘StructProperty /Game/FPSTowerDefenseToolkit/Blueprints/WaveSpawning/BP_WaveSpawnController.BP_WaveSpawnController_C:GetDataForEnemyType:ReturnValue’. Unknown structure.
PackagingResults: Error: FStructProperty::Serialize Loading: Property ‘StructProperty /Game/FPSTowerDefenseToolkit/Blueprints/WaveSpawning/BP_WaveSpawnController.BP_WaveSpawnController_C:GetDataForEnemyType:CallFunc_GetDataTableRowFromName_OutRow’. Unknown structure.
UATHelper: Packaging (Windows): LogProperty: Error: FStructProperty::Serialize Loading: Property ‘StructProperty /Game/FPSTowerDefenseToolkit/Blueprints/WaveSpawning/BP_WaveSpawnController.BP_WaveSpawnController_C:StoreEnemyDTRowHandles:CallFunc_GetDataTableRowFromName_OutRow’. Unknown structure.
UATHelper: Packaging (Windows): LogProperty: Error: FStructProperty::Serialize Loading: Property ‘StructProperty /Game/FPSTowerDefenseToolkit/Blueprints/WaveSpawning/BatchedSpawning/BP_BatchedWaveSpawnController.BP_BatchedWaveSpawnController_C:RetrieveSpawnCountDataForUpcomingWave:CallFunc_GetDataForEnemyType_ReturnValue’. Unknown structur
PackagingResults: Error: FStructProperty::Serialize Loading: Property ‘StructProperty /Game/FPSTowerDefenseToolkit/Blueprints/WaveSpawning/BP_WaveSpawnController.BP_WaveSpawnController_C:StoreEnemyDTRowHandles:CallFunc_GetDataTableRowFromName_OutRow’. Unknown structure.
PackagingResults: Error: FStructProperty::Serialize Loading: Property ‘StructProperty /Game/FPSTowerDefenseToolkit/Blueprints/WaveSpawning/BatchedSpawning/BP_BatchedWaveSpawnController.BP_BatchedWaveSpawnController_C:RetrieveSpawnCountDataForUpcomingWave:CallFunc_GetDataForEnemyType_ReturnValue’. Unknown structure.
UATHelper: Packaging (Windows): LogInit: Display: LogProperty: Error: FStructProperty::Serialize Loading: Property ‘StructProperty /Game/FPSTowerDefenseToolkit/Blueprints/WaveSpawning/BP_WaveSpawnController.BP_WaveSpawnController_C:GetDataForEnemyType:ReturnValue’. Unknown structure.
UATHelper: Packaging (Windows): LogInit: Display: LogProperty: Error: FStructProperty::Serialize Loading: Property ‘StructProperty /Game/FPSTowerDefenseToolkit/Blueprints/WaveSpawning/BP_WaveSpawnController.BP_WaveSpawnController_C:GetDataForEnemyType:CallFunc_GetDataTableRowFromName_OutRow’. Unknown structure.
UATHelper: Packaging (Windows): LogInit: Display: LogProperty: Error: FStructProperty::Serialize Loading: Property ‘StructProperty /Game/FPSTowerDefenseToolkit/Blueprints/WaveSpawning/BP_WaveSpawnController.BP_WaveSpawnController_C:StoreEnemyDTRowHandles:CallFunc_GetDataTableRowFromName_OutRow’. Unknown structure.
UATHelper: Packaging (Windows): LogInit: Display: LogProperty: Error: FStructProperty::Serialize Loading: Property ‘StructProperty /Game/FPSTowerDefenseToolkit/Blueprints/WaveSpawning/BatchedSpawning/BP_BatchedWaveSpawnController.BP_BatchedWaveSpawnController_C:RetrieveSpawnCountDataForUpcomingWave:CallFunc_GetDataForEnemyType_ReturnValue’. Unknown s

I’m using Unreal Engine 5.4 and I tried with your toolkit without my modifications and it gives the same error.

Do you have any ideas? I’m new to Unreal Engine and haven’t been able to solve it myself.

Hey there, yea this should be an easy fix. So all of these issues seem to be coming from just two class: BP_WaveSpawnController & BP_BatchedWaveSpawnController. These can be found in the folder Blueprints >> WaveSpawning and its subfolders. So just try this out first:

Open both of the above-mentioned blueprints. Select File on the top left side of the toolbar, click on Refresh All Nodes, then compile as save as shown here: Unreal Engine Tips: Fixing "Unknown structure" Packaging Error

If you try packaging it these again, these errors should be gone. If you see more of the same type of “FStructProperty UnknownStructure” errors, just go to the blueprints mentioned and repeat the above step. If the issues still persist, just let me know and we’ll take a look into what else might be causing it.

The v3.17 update is now Live on FAB

Change Log:

BPC_Hitpoints System Overhaul

I. Switched to an enum-driven system for retrieving hitpoint stats, making it easier to access specific values like Health and Shield. This significantly improves HUD integration and reduces the need to modify logic whenever new stats are introduced. A similar system for Tower stats is planned for a future update.

II. Introduced a new Shield stat alongside Health, with support for both additive and multiplicative modifiers applied to either stat.
III. Added shield regeneration that kicks in after a short delay if the player avoids taking damage.
IV. Shield functionality is currently limited to players, as enemy health bars haven’t yet been updated to support shield UI. Support for shielded enemies will be added in the next update.

HUD System Revamp

I. Completely reworked the HUD update logic using Event Dispatchers to respond to all gameplay state changes.
II. Other gameplay classes no longer need direct access to the HUD widget, improving modularity and reducing cross-dependencies.


Upcoming Features:

  • Performance improvements for enemy nav path display calculations
  • Shield bar support for enemy units
  • Minor performance and design improvements across the board for all blueprints