Announcement

Collapse
No announcement yet.

[SUPPORT] Advanced Turn Based Tile Toolkit

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Glad to hear it! It's downloading in the background as I type, I've been a big fan of the toolkit for a while now and it's just getting better. Thanks again!

    Comment


      I hope it lives up to your expectations, Micah! I have put a ton of work into this update and a lot of stuff has been changed. Everything should hopefully be cleaner, faster and more flexible than ever before. Because of the sheer amount of changes there are bound to be some bugs that my testing has not picked up, however, so I encourage anyone using the toolkit to report anything that doesn't seem to work as it should or is not well enough commented. I hope the transition will be painless for old users and hope you will agree with me that all the changes are worthwhile.
      The Advanced Turn Based Tile Toolkit (Marketplace page - Support thread - Discord)

      Comment


        Thanks for the update. I will look into it when I get the time. Initially I will just do a digital port of the board game I talked about, but we'll see what happens after that.

        Comment


          Update seems great so far though the new zooming broke my custom zoom changes

          Ah well, worth it for all the other stuff and I can work to change my code

          Comment


            @<a href="https://forums.unrealengine.com/member.php?u=77286" target="_blank">AxelRantila</a>: Looking forward to seeing the digital version board game!

            @<a href="https://forums.unrealengine.com/member.php?u=78627" target="_blank">tamaster92</a>: That is to be expected, I'm afraid. Lots of changes, but they should all be for the better

            First new tutorial video is up! Enjoy it while I start working on the next.



            Edit: And here is another!

            Last edited by Monokkel; 04-02-2016, 05:12 PM.
            The Advanced Turn Based Tile Toolkit (Marketplace page - Support thread - Discord)

            Comment


              Thank you!

              Comment


                Hi, I've been trying to work on a system that would allow some amount of randomness when attacking an enemy. Like xcom's random roll for damage/hit success, I'd like a weighted random number generator that will determine whether or not an attack is successful, and if possible how much damage was done to the enemy. I've gone astray somewhere along the line, and it would be greatly appreciated if someone could show me the way. I'm including a screen shot of my mess of a blueprint to show where I've made the changes and hopefully figure out what I'm doing wrong. Thanks!
                Click image for larger version

Name:	Blueprint_RandomInt.jpg
Views:	1
Size:	177.3 KB
ID:	1103807

                Comment


                  The condition in your branch is set to always be false so your attack will always miss (or to be more specific it will end without printing "missed" 50% of the time in the CompareInt or reach the always false branch the other 50%). If what you want is a 50/50 chance of hitting you could remove the branch, connect the ">" on your CompareInt to Set Current Health and the "==" to the Print String. From how I understand your blueprint this should work.

                  Edit: After I got home I threw together another way of doing this. The nodes below are inserted into the Attack Unit part of Unit_Parent's event graph since I feel it makes more sense to calculate miss chance as part of the attack instead of when receiving damage. Here I have added two new public floats to Unit_Parent called Accuracy and Dodge. To hit chance is calculated by subtracting the dodge of the target from the accuracy of the attacker. An attacker with an accuracy of 0.9 attacking a target with a dodge of 0.3 would have 0.9 - 0.3 = 60% change to hit. Hope you find this solution satisfactory. If not I think it is a good starting point for many other ways of calculating hit chance.

                  Click image for larger version

Name:	vLkB9BM.png
Views:	1
Size:	162.0 KB
ID:	1103834
                  Last edited by Monokkel; 04-05-2016, 06:20 AM.
                  The Advanced Turn Based Tile Toolkit (Marketplace page - Support thread - Discord)

                  Comment


                    Wow, way more than I ever expected. Heartfelt thanks, the toolkit and the support have been amazing!

                    Comment


                      Happy to help! Just let me know in this thread if you need help with anything else.
                      The Advanced Turn Based Tile Toolkit (Marketplace page - Support thread - Discord)

                      Comment


                        hello monokkel,
                        i have bought your great product a few days ago, i am wondering, how difficult it will be, to implement a game setting , where you are able to control your player characters for example like in a jagged alliance style.To be me more specific, you control your player character(s) over the tile map without movement restrictions until a battle begin.

                        Comment


                          Hello again, I am trying to figure out how I might implement a rather complicated concept within the toolkit. In my game, there are certain tiles that have to be occupied by a player unit. For instance, in my first level there are three tiles that the player must control on the board. These are "city" tiles, that the player must control within a limited number of turns. The AI is charged primarily with defending these tiles, and the player must wrestle it away from them. This presents three problems: (1) how to create a new place-able tile-type (I thought perhaps something like the Tile_Hex_Cost tile type in the example game) within the toolkit that (2) the AI will defend to the death and/or attempt to (re)capture, and (3) how to limit the number of turns the player has to capture all the city tiles on the map. If the objective tiles are not controlled when the number of turns runs out, the player loses the match. I was hoping that you might have some ideas how to implement this in blueprints, as nobody knows the toolkit as well as you do. Whether you can help me or not, thanks for this amazing toolkit!
                          Last edited by MicahM; 04-08-2016, 05:56 AM.

                          Comment


                            Hi,

                            I've been checking your toolkit from time to time, how is the dungeon crawler features progress going?

                            Also, what about multi-character tiles, is that possible? Like in many dungeon crawlers that 4 monsters share the same square space.
                            ProBoon, Old-School FPS, Open Source & Tutorials
                            Support Project Boon on Patreon

                            On Steam Soon, Click Below

                            Comment


                              @MicahM: Hi! Some of what you are asking is easy to achieve, while some of it is a bit more difficult. To create a city tile I would create a child actor of Tile_Actor. Tile_Actor is an actor I made specifically for the purpose of creating new sorts of actors that can easily be set up to interact with the grid. Essentially all this does is to give the actor the appropriate index and allow it to snap to the custom grid. Ending the game when a certain number of turns have passed is simple. There is an integer variable which is increased by one each time all units have acted (designating the start of a new turn). I did however discover a bug with this counter while I was testing this stuff out. It increases by the number of remaining units each turn instead of 1. I had not discovered this bug before since I do not use the counter for anything. This is fixed in the graph below. You should check the value of this variable in ATBTT_GameMode and end the game if it has reached an arbitrary amount. Here is how I check whether all cities are occupied by players after time has run out (In ATBTT_GameMode):

                              Click image for larger version

Name:	qPLYKZP.png
Views:	1
Size:	271.4 KB
ID:	1104096
                              Above I check whether we have reached the max amount of turns and run Time Is Up if it has. You would probably want to use a public variable instead of an integer entered manually.

                              Click image for larger version

Name:	agGC2Cn.png
Views:	1
Size:	207.3 KB
ID:	1104097
                              Above I check if any of the tiles with GA_City actors on them are not occupied by player units. I end the game and display the appropriate message depending on the outcome of this check.

                              The trickiest part of what yo are asking is getting the AI to defend the cities, though this is certainly doable. It is harder or easier depending on how rigid you want the bahaviour to be. If you want the AI to always move to a city tile if there is an unoccupied one in move range it is realively straightforward. What I would do after an AI unit has run Pathfinding is to get all actors of type City and check their index variable against the value of Pawn Array at that index. If this index returns empty order the AI unit to move to this tile. If not, proceed with AI behaviour as normal. Here is how I have solved it:

                              In ATBTT_AIController

                              Click image for larger version

Name:	nXNR1v7.png
Views:	1
Size:	149.2 KB
ID:	1104100
                              After pathfinding I check if there are any cities in move range. If there are I want to move to one of these instead of towards a unit.

                              Click image for larger version

Name:	JCbSLpH.png
Views:	1
Size:	159.1 KB
ID:	1104101
                              Afterwords I choose a city in range at random to move towards (you could add some nodes to choose a city based on any number of paramaters, of course. Maybe do a check to see which cities in range have player units in attack range).

                              In BP_GridManager (new function)

                              Click image for larger version

Name:	ab2FlmK.png
Views:	1
Size:	137.7 KB
ID:	1104102
                              Here I look at all GA_City actors and see if any of them are unoccupied and withing move range.

                              In Unit_Parent

                              Click image for larger version

Name:	YeQxW3O.png
Views:	1
Size:	214.8 KB
ID:	1104103
                              Somewhat lazy addition, but it works. This reactivates the unit after movement has ended if there were cities in move range when this unit was activated. As it currently stands the unit should always end its movement on a city if it found one in move range, so that the array is larger than 0 means that the unit must be standing on a city tile. If you make changes so that this is not always the case you would need to change this to something more robust. If not for these nodes the unit would not try to attack any units in range the same turn as it moves to a tile. This is a quick fix to prevent this.

                              I hope this is enough to get you started. AI is often the most difficult part of TBS games and I hope this helps you understand how you can work on AI within the framework of my toolkit. These solutions are not the most elegant as I thought them up pretty quickly, but they should do the job well enough.

                              Edit: I had to add some nodes to make sure a ranged unit with a preferred range other than Least Move does not leave a city it is standing in. Also in ATBTT_AIController:

                              Click image for larger version

Name:	Ix0JvzR.png
Views:	1
Size:	226.8 KB
ID:	1104104

                              Also you should add a delay macro after checking for cities in range to make sure turns move in the same pace when cities are in move ranges as they usually do:

                              Click image for larger version

Name:	CZoNlX0.png
Views:	1
Size:	115.6 KB
ID:	1104105

                              @masterneme: Hi there! That depends a bit what you mean. In the newest version of the toolkit I have included a 2D dungeon crawler example, though this is closer to a simple roguelike than something like D&D.

                              What dungeon crawler style features are you most interested in? Having 4 monsters sharing the same space is not very hard, and can be done by adding four skeletal meshes to the same unit. Going the other way and having a single creature occupying four tiles is significantly more difficult, but certainly doable. I have experimented with this before and have found some solutions that work pretty well, but it becomes more difficult depending on how flexible you need it.

                              Having a single category of big units that is only controlled by the AI and only function on single-level grids is fairly easy to add. Having units that can occupy an arbitrary number of tiles in any direction, which work with both multi-level grids hexagonal grids and whose tiles in move range are displayed in an aesthetically pleasing way when controlled by a player is much more difficult.
                              Last edited by Monokkel; 04-08-2016, 05:45 PM.
                              The Advanced Turn Based Tile Toolkit (Marketplace page - Support thread - Discord)

                              Comment


                                Again, thank you! I wish there was a way to add a half dozen more stars to the review. Your toolkit and your support have gone a long way to making this project of mine a commercially viable product.

                                Comment

                                Working...
                                X