[SUPPORT] Advanced Turn Based Tile Toolkit

I meant that there was no interaction between the units and the blocking tiles, like if the CoverSystem was not working at all. Sorry to mix both components in the same sentence. I have read it again and it’s kind of misleading.

I will double check on the Stealth system and try to understand why it is not working as intended.

Yup, we are already having a little chat and has helped me with some tricks and hacks :smiley:

Thanks for your time!

Ok, try this out. You should do some testing to see if it gives you the results you want. Pay close attention to the nodes I have highlighted here to make sure you add all the relevant changes:

Ok, great! Let me know if you need any input.

good day. it is posible tu use Blueprint in puppets? i have the aset of units but they are in blueprint.

I make not wolking tail but is the same problem the fly unit can ignor walls and go to next hex

Hi, sorry for the very late answer. You had not given me permission to view the video so I was unable to view it. I am able to see it now, though. The problem here is that you are trying to assign a blueprint actor to a variable that requires a skeletal mesh input.

[quote=“ser.man94, post:3909, topic:21930, full:true”]I make not wolking tail but is the same problem the fly unit can ignor walls and go to next hex


[/quote]

Hmm, hard to know what is going wrong here. If you follow the tutorial and use terrain types that block movement for ground units and not for flying units it should work. Maybe the tiles you have placed on the map block WallTrace or something? I’m just guessing here, as it is a bit hard to know. The terrain you have placed there are just GridActors right? Not BP_Tile actors with edges etc.?

sorry i make linc can’t see any one but something get wrong. and i give the access. exist a possibility to create a variable between skeletal mesh and blueprint? i buy some assets and all creatures are maiced in blueprint.for building and wall is not a problem but for puppet is need to do spmething. thank you for your time

yes i make from video tutorial step by step the price work great but they can ignor the wall.

I’ve been away from UE4 for a while so please forgive the silly questions. There is another asset on the Marketplace that has a similar movement format to ATBTT except that instead of just highlighting a square to move to, he uses a movement cylinder (not a big deal) but when the cursor (cylinder) moves adjacent to cover a ghosted version of the UE4 mannequin appears in a cover animation (i.e. if you click to move the character will do so and then assume a cover pose based on the cover – high or low, like in ATBTT. While that is quite interesting to me, there is a further plus in that when you move the cursor to the edge of the cover the character will assume a peeking animation (well, I think it’s cool). All that said, the other asset has nowhere near the functionality of ATBTT(nor the level of support) so, naturally, I want my cake and eat it too. Would mechanics like these be doable in ATBTT or would I be looking at a complete exercise in frustration? Thanks

For the skeletal meshes, you can’t simply add the blueprint you bought on the marketplace as a puppet. You will have to do some manual work. I recommend checking out my three “Puppets” videos on YouTube. You should watch all three, but the last one goes into how to add puppets with non-standard skeletons.

For the issues you have with walls it is still hard to know what might be wrong here. Here is how I would do it, building upon my tutorial. If you are doing anything differently, please let me know. Using the terrain system you can define for each unit what terrain they can move through. So to have walls that flying units can move through I would create a “Wall” terrain type. Flying units would be set up so that they are allowed to pass through the “wall” terrain type, while other units would not. The walls would just be Grid Actors that add Wall to the GridTerrain map variable at the appropriate tiles. This would not be a tile actor that has any edge costs set up or that has collision blocking the Wall channel. Is this what you are doing?

Hi Dijon, long time no see! What you are describing sound very doable in ATBTT. That is just visual stuff with no impact on gameplay, and the way ATBTT keeps visuals separate from gameplay code means that you don’t need to do any major refactoring in the code to set something like this up.

Changing the move marker to a cylinder is trivial. Just replacing the mesh in the GridUI you are using. Showing the ghosted mannequin will take some more work, but the principle is similar to how I show the hover meshes arround surrounding tiles. You could use the same setup I use for finding which adjacent tiles have cover and then place and animate the ghosted mannequin as appropriate.

Note that in the last update I added crouching animations for when a unit moves into cover (in the new Demo map). This should give you a starting point for adding your own cover animations.

1 Like

@ Indeed, it’s been a long time. I was unaware of the most recent change so, yes, that will be a big help. Regarding the setup that you have for determining which adjacent tiles have cover, could you point me to where you do this? It’s going to take me some time to get around this again.

Also, as usual, thank you for the great reply. I wish all devs were this good.

Hey, thanks! You should look in the ServerHover event of BP_AbilitySprint. Specifically this part:

This is the move ability used in the JungleRaid map. It needs to have the cover system added to the GridManager to function.

1 Like

That’s awesome, thanks. I seem to recall that, once upon a time, you had a video tutorial that talked about program flow. Does that sound familiar? When I look, for example, at your image, there is a “GridManagerRef” but it’s not immediately obvious where that reference is obtained? I’m also curious about the difference between Move and Sprint.

Some actors have a grid manager reference set during BeginPlay or in their ConstructionScript, but for those that don’t you can now use a Get Grid Manager function, which is contained in a function library, so that it can be accessed by any actor.

There are a few different move abilitites included. Move is the most basic one. Very straightforward without anything special. Sprint is designed to be more like movement in XCOM. It shows movement that costs more than 1 AP in a different color and shows cover icons around surrounding tiles when moving the cursor.

By the way, another new thing since you last worked with the toolkit is that we have a fairly active Discord channel now. Feel free to drop by! Link is on the marketplace page.

1 Like

Thank you. I’m glad that the size of the community is getting larger; this truly is an amazing asset. Would you prefer that I post future questions to Discord or do you prefer them here?

Yeah, kind of wish I had started such a community sooner. Means it is easier for devs using my assets to help each other as well. For longer questions that require that I reply with multiple screenshots, this discussion thread is better. For shorter questions Discord is more practical.

i try to add component of unit sepparat but they not worc

I’m working through the first tutorial on custom puppets and I noticed that you don’t touch the Child Actor setting in your example with Golden. The skeletal mesh of my duplicate unit_anim_bp stays at the default mannequin. Dragging the character into the scene and changing the puppet there works as yours does, but on the Jungle map, it doesn’t take cover.

So, is it normal that the base unit anim bp and its children only show the default mannequin, and what would you recommend as a starting base class? Would it still be bp unit anim and then just add abilities, or is there a better starting bp for cover and things like that? Thanks.

[quote=“ser.man94, post:3921, topic:21930, full:true”]

So for the first one you will likely have to change the puppet a bit. Animation of puppets in ATBTT works through the AnimateMovement and AnimatePuppet events. Normally these call interface events on the animation blueprint of the skeletal mesh. In this case you have multiple skeletal meshes with (I’m guessing) multiple animation blueprints. If this is the case you will have to loop over all of these and call AnimatePuppet on each.

For your second issue, you are adding the ability system to the puppet, which will not work. The puppet is only for stuff that is not relevant for gameplay. Rather add the ability system to the Unit (not Puppet).

I generally recommend to create your own version of BP_Unit_Anim (so a duplicate) as a starting point, so that it is easier to modify stuff, but a child actor of that works as well. BP_Unit_Anim serves kind of like a binding between the Unit and the Puppet, so Unit_Anim (and its children) have added and overriden functionality over BP_Unit so that it queues actions etc., using the Puppet as input. The crouch and climb stuff is in BP_Unit_Anim_Demo. This is something you can look at when deciding how to build your own Unit_Anim variant.

Hi Monokel,
I have “Tower” units that do not move, only attack. Is there a way to skip unit activation if there are no enemies in range? When there are a bunch of towers, it can take a while for the game cycling through the towers doing nothing that would be better if skipped.
Thanks!!

Hi, so the way unit selection currently works is that when a unit is selected an action is queued to show the selection. For AI units, determining if an ability can be used happens after this action has been queued, so without modification this will always trigger, even if no abilities can be used. Also there is a constant delay between turns which is set in BeginNextValidActorTurn in the Turn Manager.

To achieve the result you are after, the action must only be queued after we know that an abiliy will be used. Also, we will need to modify the dealy between turns if no ability was used. Where and how to do this depends on if your towers are using the AbilitySystem component or not. Are they using it or just going by their DefaultAbility?

DefaultAbility