[SUPPORT] Advanced Turn Based Tile Toolkit

Hi Monokkel,

Version of ATBTT is 1.7, maybe. Version that I used, is not with multiplayer, certainly. For this, I created the project with Unreal Engine 4.17, and I switched version of Unreal Engine to 4.23. About why I did like that, I’will tell you later. anyway,

With ATBTT ver 1.7, If I set like below, grid manager seems could not make data of edges. And character can not move.

Condition is:

  • Hex grid: ON.
  • Pregenerate: ON.
  • Heightmap: One Level or MultiLevel.
  • Default mash is SM_Tile_Hex.

I recorded steps to reproduce, and uploaded to youtube.

When I do those in latest version of ATBTT, There is no problem. But I want to keep working with 1.7.
I started debugging harder about this, but there is no clue yet. Do you have any good idea about this?

It was short asking, Here goes a little longer story.

Three weeks ago, I got a very good chance to suggest to my boss, in my work, about game I want to make. But I didn’t have a time. Time I got was about 2 month. Yes. Untill this year. And I need a playable prototype to suggest.

I want to make a turn based strategy game. And fortunately, I saw ATBTT!

I’m game designer. I have little experience for unreal engine 4. But about programming, I’m not good. I’m just newbie. But I know how easy to learn blueprint, and potential of unreal engine. Further more, when I see the reviews of ATBTT, I got confidence. I can feel the solidirty. And many people said about good tutorial videos.

People nearby me told me about unity engine. But 2~3 days later, I choose and purchased this.

I saw the tutorial video first. I can feel - something is different. The structure of folder in tutorial video, was not same as what I downloaded. But, I tried to track the difference between tutorial video and what I downloaded. There was not big problem, at least, untill second video, as my thought.

I found that difference was not small, from third video. At that time, I could see the exist of old version of ATBTT, difference between old version and latest version. I got confusing for getting the concept of action system, ability system, and turn manager. But more confused thing was this: In playlist of tutorial video of ATBTT, there are both video about very long video about old version (about three hour XD), and many videos about latest version. (not short and not small.)

So I decided to try old version of ATBTT. And… What the! The old version of ATBTT was much more easy to understand! That was more clear and linear. There is no jumps between modules which looks abstract and confusing! It was a heaven to me. And, working with old version was fun and exciting for me at that time. How sweet it was! Thanks to you, Monokkel!!!

In my plan, multiplayer is not needed. I want to make like this - whole unit is overwatching at enemy’s turn, and they can attack when enemy unit enters their sight. Player has to choose to fire, or don’t do that (and wait until enemy comes closer), at all of each found. In this situation, for multiplayer, all of players must wait for other players too much long. So I choose to abandon about multiplayer, at early time.

Because of this, if I use the latest version of ATBTT, There will be unnecessary cost for making the game what I want, as my thought. For making the prototype for suggestion to my boss, it was more like that.

In this reason, I tried to find which version of ATBTT is more later, but does not have multiplay functionality. over many versions of unreal engine.

It was hard time for me.

It takes long time, but I think that was needed, at least at that time for me. And I found - If I create a project with unreal engine version 4.17, I can get the latest version “without” multiplayer. After that, I switched that project to unreal enigne 4.23.

At now, through many debugging, working, and compareing old version and latest version of ATBTT, latest version of ATBTT looks better for me. On performance, and its design of code. But still, If I switch to version with multiplayer functionality, I have to pay much time to learning and understanding, even re-work for all I did until last three weeks. I don’t have much time. This makes me hurt now. If I have just few weeks more, I want to use ATBTT with multiplayer, but I don’t.

And that problem. I need heightmap. The height is important for game that I want to make. I will use 1~2 days to debugging for that. But if there is not some result, I have to give up something, but I don’t want that.

I hope to get good news from you soon. Really.
And,Thank you. Those time was very happy for me. Maybe In whole my life time, it will be hard to find more better time.

In my thought, It would be better - If there was two different version of toolkit. One is with multiplayer functionality, and the other one is without multiplayer functionality. I feel that those are very different things. Specially, if beginners for unreal engine 4 like me.

Here are some stuff I worked in last three weeks. At beginning this, I was newbie for unreal engine. (still now.)

Added: It was much more difficult to me to understand because there was not subtitles in some tutorial video, specially this: UE4 - ATBTT - The Action System - 2/3.

Happy to help :slight_smile:

I did not version control the old projects I made to demonstrate these features earlier, so if possible I’d prefer not to rebuild them. I’ll go into more detail, though.

For elemental damage: In my earlier post where I showed how to add elemental weakness to units/abilities I did so partly in the ExecuteAbility function in a copy I made of BP_Ability_Attack. You would basically do the same thing, but with a duplicate of BP_Ability_MoveAttack instead. The part of ExecuteAbility in this ability is basically identical for the top part where dealing damage is handled (top right after the final branch). Try doing the same thing here as I suggested for BP_Ability_Attack and come back to me/show me screenshots of your setups if something goes wrong, so I have a better idea what specifically you need help with.

Second question: At the end of the ExecuteAbility function before returning you would create a branch that checks the same conditions that results in the different types of damage handled by TakeDamage right before. Whether or not these conditions resulted in a super effective attack can be used as an input to the branch. If true get the owning unit and set its currentAP to min(MaxAP, CurrentAp+1).

Test it out yourself first and give me your specific results if something goes wrong, and I’ll try to guide you the right way.

Thanks! The Ability System tutorialis your best current starting point. Though I am overdue to create a more practical tutorial for ability creation, as the current tutorial is more descriptive than hands-on.

For your first question I’m not 100% sure what you mean. Are you thinking of something similar to the BP_Ability_Sprint ability in Maps/JungleRaid? This ability has two move ranges, displayed in different colors, for using 1 or 2 Action points. Are you after something different than this?

For your second question I’d also prefer if you could be a bit more specific. What is a finisher? Is it an attack that does a special animation if it ends up killing its target? An ability that can only be used if the target has a certain amount of health remaining? Something else?

Hey HyalineV, I’ll have to try to remember how the toolkit was a few years ago, but I’ll do my best.

Hmm, not sure what exactly is happening. Is this an issue that only happens when Pregenerate is on, though? I don’t recommend using pregenerate for anything other than some forms of debugging. I originally made it as a way to improve performance (by not having to generate the grid again at runtime). However, I later learned that this only works in the editor, and in a packaged project there will be no performance improvement. I only kept it in the toolkit so you can visualize grid indexes and edges in the editor when debugging your game. If you enable pregenerate the grid manager will keep the edges and indexes it had when it was last modified or compiled, and with the way you switch it on and off and switch between different kinds of heightmap settings it is hard to know what exactly is happening here. If this only happens when pregenerate is on I suggest you just leave it off.

2 months is not a lot of time, especially when you’re learning the tools as you go, so make sure to keep a very tight focus and throw out any ideas that are not essential to your prototype. I’ll do my best to help you along, though.

Too bad to hear that you find the old version that much simpler. I can understand it, though. The current toolkit is a lot more modular and powerful than the older versions, and a lot less stuff is hard coded to enable simpler modification. This did come at the cost of making it less immediately straightforward. This is exacerbated by the fact that my oldest videos became outdated. My later videos have been an attempt to start building up a new tutorial series that combines theory and practical examples, but I still have a lot more to make there before it covers all of the toolkit’s features.

I understand your pain. With two months you had to prioritize and chose the version that was simpler to grasp. It is too bad you were not given more time, so you could have spent a few more days learning the new features of the toolkit. They are more difficult to understand immediately, but once you have learned them they make many things easier.

Heightmaps should work in the version you are using, but maybe there is some old bug in that version that I have forgotten. I need a bit more information. If Pregenerate is off and heightmap is enabled do you still have problems? What are those problems specifically?

I’m glad you enjoyed working on it! Programming games is a lot of fun. I’m more or less addicted to game programming, so welcome to the club :slight_smile:

I have considered making a simplified version, for the reason you describe, but it would be too much work to maintain two different versions. The action system also does a lot more than simply enable simple replication for multiplayer. That is mostly a side benefit. The best thing about the action system is that it allows you to put a lot of stuff in an action queue in the same tick and then have it play out asynchronously.

The alternative to this is to have a spaghetti code chain of abilities calling functions and event dispatchers back and forth between various blueprints in a way it is easy to lose track of and cumbersome to code. I know it might look simpler to not use it, but with the old system the code in your final game would likely look a lot more complicated. I’ve decided that the toolkit I make is the one I would personally want to use to make my own games.

I try to keep it is beginner friendly as possible within these constraints, but I try to never compromise when it comes to the toolkit’s flexibility, performance and iteration speed for experienced developers.

Looks very cool :slight_smile: Thanks for sharing your videos.

Yeah, that is a problem. No idea why subtitles are not enabled there. They are automatically generated by YouTube, but I don’t know why they are not for that video. There is a maximum video length for subtitle generation, but that should be much higher. I’ll investigate and see if there is anything I can do.

Here is some screenshots of the Ability_MoveAttackElement the only thing that has me stuck is trying to make the character have full movement before attacking.

Thanks, EagleEyeGamma.

Another question i have as well is there something that can end an effect like a buff in a turn?

Thanks, EagleEyeGamma.

Ah… I thought pregenerate is needed to me, but it was wrong. After I hear your said, specially “this only works in the editor”, I decide to turn off pregenerate. That problem is happened just when I turn on pregenerate. At now, there is no problem. Thank you!

I had to tell you more clearer. I’m really sorry. It’s my bad.

But if you have more information, there will be better, as my thought. I heard that - there is always potential possibility about hidden bug, So information about bug always has own value. I heard like this, from programmers nearby me. In this reason, I will tell you about this. If you don’t need, just forget it.

  1. Install unreal engine 4.17
  2. Create a project with ATBTT.
  3. And open the project.
  4. You can see Map_Grid_Example.
  5. Select grid manager, and set these option at same time, in grid manager.
  • Pregenerate Gameplay Grids

  • Heightmap (to one level or multilevel)

  1. And Play. Then, these symptom will be happened.
  • Character can not move anywhere.

  • Markers had to be appeared where character can go to. But There is no marker.

  • When I move mouse cursor on grids, spline had to be displayed. But it is not displayed.

If just one option in my describe below is set to turn off or set differently, at least, then character can move, and grid manager will work correctly. For reproducing symptom, these combination is needed in grid manager, in old version.

  • Hex grid (Already on in Map_Grid_Example.)
  • Set SM_Tile_Hex as default mash. (Already this is set in Map_Grid_Example, too.)
  • Pregenerate Gameplay Grids
  • Heightmap (to one level or multilevel )

Really really thank you so much for your words, and your understanding. You won’t know how much your words are helpful for me. In fact, last night, I tryed again to understand latest version of toolkit, with some courage. I feel - maybe I can do what I did more faster than my thought, with toolkit with multiplayer functionality. It might be possible for me, to make fog of war, with updating with character’s each move for one grid to grid, as same as my work, with ability system in latest ATBTT, in my thought. I decided to try it.

Added by edit: I’m looking at BP_StealthSystem now. For fog of war, here looks better start point than ability system.

I described at upper more details, but at now, I decide to not use pregenerate function. Do more work would be not necessary, as my thought.

Last three weeks was magical time for me. Rollercoaster of emotions, lots of things learned, happiness when I see what I did works well… how addicted!

I can totally understand your said. Maintaining two different version will be nightmare for you. And someday, or more sooner, maybe that performance will be need for me, too. I agree you totally. And from your point of view, making your own game, must be most important thing.

Thank you very much! Your words make me more confidence!

There is something like sound of cooling fan in your tutorial video. In my thought, change of noise looks like to disturb making subtitles. It’s just my guess. If I am you, I will make that video again, with the same content, and with keeping mic away from PC. Just consider it please.

Still, I don’t know whether… it might be good for me if I try to latest ATBTT with multiplayer functionality. Or keeping work with old version might be better for me. This is big worry for me. But, I have more understanding about blueprint, and unreal engine now, unlike when I started this. I have liitle bit deeper understanding for ATBTT, too now. As like as starting this whole works was tough, but as like it was good challenging and good experience for me, It might be good experience for me, too. Or it would be not? This makes me headache, painful, but anyway I had to make descision… I will try to make same thing with latest version of ATBTT.

There is another reason why I want to try latest version of ATBTT with multiplay functionality. I want to make all player unit move first at same phase, and then enemy moves happen next. But this is already made in latest version of toolkit, as “BP_TurnManager_Strategy”. And, when I make that fog of war, the performance issue make me difficult. In old version, by using your slow loop, I solved this. And I had a thought to modify old version like latest version in just only grid manager. As my thought, latest version looks got more performance than older version. If I success to understand and to use latest version, I don’t need to optimization work in old version. In this reason, trying to latest version looks better… If my thought looks wrong to you, please tell me.

Thank you for all of these. If I have something to ask, I will post again. Thank you!

Added: I solved this problem below. In ability blueprint (BP_Ability_MoveAttack) check grid manager based on name of blue print, but If I duplicated grid manager, then name of blueprint is changed. and result of check is changed, then problem happens. I had to change that name of blueprint in check node.


It was very tough rollercoaster. wheeew. At now, no problem!!! I will keep going to make fog of war based on latest version of ATBTT!

Added again:

I was scared very much by this problem. So I spent some time looking for a solution to a similar problem. And… I got these XD!!!

Hi Monokkel, New problem with latest version!

If I duplicate example level and BP_GridManager_Hex, and use them, then the move hover marker apeared as square, not hex.

  1. I duplicated Example Level. Name of new level is “DuplicateTestMap”
  2. I duplicated BP_GridManager_Hex. Name of new BP is “BP_GridManager_HexDuplicated”
  3. I opened the level “DuplicateTestMap”
  4. I deleted old grid manager “BP_GridManager_Hex”
  5. I added duplicated grid manager, “BP_GridManager_HexDuplicated” into level.
  6. Select All of units, tiles, and walls, and unset and set “Auto Grid Placeent”, So they can reference new grid manager, and they can get new grid index from grid manager. (sometimes, I just move them little on gird for this.)
  7. play
  8. then, move marker apeared is blue square, as you see that screenshot. This looks “SM_Marker_Move”, not “SM_Marker_Move_Hex”.
    But, value of “Default move marker” of grid manager, is set as “SM_Marker_Move_Hex”, as you can see in that screenshot.

This is latest version of ATBTT, with Unreal Engine 4.23. So, You can reproduce this very easy.

Is there Something I forgot or missed? I’m looking BP_Ability_MoveAttack now, but there is something confusing. If this is more clearer, I will post here agian.

I suspect this, too. I experience something like this link said:
But, I made that grid manager with “duplicate”, not with “making child”.

I suspected - some kind of problem by SVN version control system. Because, sometimes SVN prohibit writing, so unpredicted problem happens.
But, I tested this by creating new project without version control system. In this case, problem was happened again. so, SVN is not cause.


  • If I use grid manager made through duplicating, in new level, same thing happens.
  • If I make a child from BP_GridManager_Hex, same thing happens.
  • When I change the value of “Default Move Marker Mesh” of grid manager, If that grid manager is child of BP_GridManager_Hex, or duplicated from BP_GridManager_Hex, then changed value is not applied. But, when I use just BP_GridManager_Hex, changed value of “Default Move Marker Mesh” is applied well.
  • This problem seems some kind of bug of unreal engine, like that link that I said above. I want to cry. should I try another version of unreal engine?


  • I tryed with unreal engine verson 4.20. when I duplicate the BP_GridManager, It failed to compile, with ModifyBigUnitArrayByUnit function. but when I delete and remake node of ModifyBigUnitArrayByUnit, then it compiled well. but, after it, unit snapping on grid does not work. Shouldn’t I use the duplication and making child of blueprint?

@HyalineV: Glad to see that you figured it out yourself. I’m sorry, but I tried to reply to you earlier, but Epic did not allow me to log in until now. Gave me an error message because I loggen on too frequently.

Do you have any remaining questions that you have not fixed yourself?

Edit: By the way, the code for setting up the marker meshes in the abilities is mostly there for ease of setup when you’re experimenting and switching between grid types. If you use your own marker meshes or make your own abilities you can also just set the static mesh of the markers directly in the component list:

Hey Monokkel,

I still haven’t figured out the movement but I have made it so only the super effective attacks allow people to go again.

Thanks, EagleEyeGamma

Hey, sorry for ignoring your previous posts. Just absent-mindedness. You can use a status effect for temporary buffs. On activation you would apply the buff and on UnitEndTurn you would revert the buff. Check out the BP_SE_MindControl status effect for an example of a temporary effect. Just replace the mind control stuff with your buffing.

Your setup seems reasonable. Only thing I would change is that you spawn the emitters during the ExecuteAbility function, which is dedicated to game logic. You should keep the visual stuff within the AnimateAction events (unless it is truly immediate stuff that is not queued and displayed to the client, such as moving mouse hover markers etc.). If not, the emitters might trigger before the rest of the attack is played.

I’m sorry, but I don’t understand what you mean when you want the player to have full movement before attacking. Do you want to click a unit and have the active unit automatically both move and attack?

I want to make it so after they make an attack they gain full movement again and then repeat until they make a effective or not effective elemental attack.

Thanks, EagleEyeGamma.

Hey, I was wondering, what’s the best way to change the camera settings so that it doesn’t hop around as the active unit changes. Also, what would you recommend for making the sky visible when played? Even in a new level with a sky, when I play the project it disappears.

Thanks :slight_smile:

@Monokkel At now, I’m ok. No problem. Thank you!

If you’re using BP_Ability_MoveAttack as a base, when the ability is activated 2AP means the unit can move and attack and 1AP means that it can only attack. If you want it to be able to do both after an attack, make sure that the unit’s current AP is set to at least 2.

Great :slight_smile:

From a standard topdown template project how would I go about adding a turn
based encounter?

Take a look at the “Hybrid” map in Maps/Experimental. It shows how to set something like that up using the Third Person template. You should be able to do something very similar with the top down template. Try following that approach and let me know if you run into any difficulties.

Heya Monokkel,

I am using the hybrid/experimental version of ATBTT to create my game with free roam until combat. I would like to use a radial wheel to have the player select possible actions (movement, attack types, magic, etc…). Can you suggest a good spot in the code to insert my radial wheel creation? Any other suggestions for this type of game would be greatly appreciated.


Sounds kind of like the ability bar used in the Advanced map, but displayed on a wheel and that can be hidden/shown by clicking? If this seems right use the ability bar as a starting point, but change the layout to a radial wheel. Then in the player controller you can tie an input event to showing and hiding the wheel.

You can access the ability box like so:

Hi @Monokkel !

Because your help, my work is going good:D! Thank you!

Today, I got a suggestion. Of course, decision is yours. But consider this once please.

This is function “SetupTileMarkers” in BP_Ability

It check if grid manager is hex, then set the tile marker mesh and decal to hex.

I changed like this


In yours, for checking grid manager is hex or not, you use name of grid manager by GetClass.
Because of this, When I use new grid manager with inheritance, I have to change name of those parameter of GetClass functions.
To check if grid manager is hex or not, using the class name of grid manager looks not good in flexibility.

Especially, if I use many different grid managers in same game, this can be problem.

In here, I use casting to BP_GridManager_Hex, but I don’t think it’s best way. Maybe gameplay tag will be good option. Or, there will be more better way that I can’t imagine now.
(There are simmilar things in ATBTT. From now, I have to modify all of them.)

How do you think about changing the way to check if grid is hex or not? And, If you have more good idea about this, please tell me:)
I want to use your toolkit when you upgrade ATBTT continually, So I suggest this:)

Thank you!

Thanks for the suggestion :slight_smile: I agree that this part is one of the ugliest hacks in the toolkit, but it is mostly there for debugging purposes. In a real game I would probably not use that code at all, and it is set up so that it is ignored if the ability does not use the default hover marker mesh. In an actual game I expect people to either use only hexagonal grids or only use square grids, so there is no reason to have code that checks what type of grid you are using. So when making abilities for your game I recommend just selecting the components directly in the ability’s component hierarchy and assigning the mesh manually. The code is simply there for simple testing and debugging, so I don’t worry too much that it is not extendable, as I would not recommend extending on this code unless you’re making a very uncommon TBS that utilizes both hexagonal and square grids using the same abilities. Regardless, what you have changed might be a cleaner solution than what is currently in the toolkit and I will consider adding it in a future update.