[SUPPORT] Advanced Turn Based Tile Toolkit

Hello Curiosichi, there does not really exist a perfect way of upgrading from one version to another, though I do my best to make it easier by marking clearly where changes have been made. If you have the intention to upgrade to new versions in the future the best strategy is to to as you suggested and create child blueprints of the main ones. When it comes to folder structure that is actually something I’m doing a major overhaul of at the moment. Future updates will have the most important parent blueprints in a core folder and variants of these in other folders. The way I’m doing it at the moment is okay, but some of the folders are a bit redundant and asset naming could be more consistent. But in any case what you should be doing if you want upgrading to be as easy as possible is to make a separate folder for all your custom assets and child blueprints of the base toolkit blueprints (with its own folder hierarchy inside).

Hello, I tried to play around with the AI controller to make AI not consider a player unit that is “cloaked” as a potential target. I added a check inside Find Units in Range in the AI controller. Result: The AI doesn’t move to player unit, however a marker does appear under the player unit and the AI unit simply move to the tile at index 0.

Do I need to do the cloak check in multiple places? Is there a place I can do it once?

Thanks

I’m going to assume you’re using the latest update for this as I added some stuff there which makes this sort of thing easier to add. I would recommend adding this in the Choose Target part of the AI controller. If stealth is common in your game I recommend replacing the Keep Indexes With Relevant Units function with a duplicate of this function, where you also check if units are cloaked. In your duplicate function create a new boolean input, perhaps called Exclude Cloaked Units. After the branch in the function checking whether a unit has the appropriate faction add a new branch where you check if the same unit is cloaked. If it is, remove it from the Local Index Array. Remember to replace the Keep Indexes with Relevant Units function in the event graph of the AI controller with your new function.

I’ve created a child blueprint to add to the ‘unit_skill’, the child blueprint is basically a weapon blueprint, that holds all weapon information like, mesh, sound effect, damage, range, and all of that kind of stuff. I’ve also made my own Damage interface blueprint so I can freely pass variables from weapon blueprint, Unit blueprints and skill blueprints, and use my own formulas to calculate damage. I’m pretty sure I replaced all ‘Receive damage’ events with my own Damage interface but it’s not firing off when I test my game. Please explain to me, exactly how the scifi examples handles damage, so I can figure out what I’ve missed out, maybe didn’t replace, or a step I skipped during the transition from your damage to my own?
I apologise if this question feels quite vague, I just don’t know what kind of information you would need to help me out.

I might be misunderstanding your question, but damage is handled in a pretty straightforward way. The receive damage event is called in the event graph of any skill blueprint that deals damage (in the example map this means the laser and explosive shot blueprints). If you have trouble finding this, find the receive damage event in the Unit blueprint, right click it and search for references. Make sure to uncheck the box that limits your search to the current blueprint.

So I can’t get my own damage formula to work. So I’m starting again from a fresh project. What I’m trying to accomplish is; having all variables from ‘skills’ like laser and explosive shot to be taken from another blueprint. I wanted to create a weapon actor blueprint that holds all the data needed (damage min/max, range min/max, static mesh, sound effects, etc.) depending on the weapon, and passes what ever values are needed when a unit is using a ‘skill’ or is hovered over a skill (description displays damage accurately). So I needed a way for the weapon blueprint variables to be passed to the skill for each unit in a way that changes the ‘skill’ variables stats to match it, when attacking, receiving damage, showing damage range in description and where ever else damage info is taken.
My initial idea was to have a Interface blueprint to receive and pass on the values needed between blueprints regarding the damage. A simple ‘damage interface’ that was in the ‘Unit’ parent, ‘Skill’ parent and ‘Weapon actor’ parent. My weapon actor would be spawned as a child actor component to my ‘Unit_Skill’ pawns, and the variables inside the weapon actor would be set on the construction script based on a simple function; switch on ‘Weapon Name’ enum value, an enum that contained a name list of all possible weapons.
I’m not that great at coding but in theory it seemed like my idea would work, but in practise the ‘damage’ events weren’t changing and were still using the default values (laser 3-4 instead of my formula which would have calculated laser to be 35-50).

So do you think I’m going about this wrong? If so do you have any theory on how I can accomplish skill and damage values to be based on a individual units weapons? I want to replicate xcoms weapon system, in which one unit may use a sniper while another uses an assault rifle, both having different range and damage values but using the same ‘attack skill’- in this case the ‘laser skill’. Ideally after solving this, I want each unit to have a primary and secondary weapon, like an assault rifle (primary) and a pistol (secondary), with ‘skills’ that only work with certain weapons- that why I thought it might be best to create a weapon actor and use an interface to hold/pass all information between my blueprints.

Sorry for the late answer. I’ve looked into this now and found a solution that works. It is not identical to what you are describing, but it works. I’ve created a new blueprint class called BP_Weapon which I’ve added as a child actor to BP_Unit_Skill. This blueprint contains integer variables for damage and range (you could of course add more). Then, when activating a skill I set its range and damage to the same values as the ones stored in the BP_Weapon child blueprint. Here is how I do it in the Event Graph of BP_Skill_Laser:

Hope that helps!

No worries, I’ll give this a try.
How did you handle the hud display, to show the damage range values correctly before activating the skill by hovering over it? Wouldn’t it still display the old damage range until you select activate?
Did you spawn in the weapon bp in unit skill script or just add it as a component?
Thanks again dude.

Yeah, the HUD-display will need to be changed. I’m not sure what will be the best solution in this case, but you could always get the information from the owning unit in the GetHoverText function. In this case you would also need to make sure to set the owning unit variable appropriately when first spawning the skill. Like so:


I added the weapon as a component, but you could do it in any number of ways and it should still work.

Hey hope all is well.
Noticed something strange, just wondering if it is a current bug for you too.
Sometimes when I load up a map, the Grid x and y have set back to the default 3, which can be quite bothersome for the level design.
Encountered this?

Hi there! All is well, thanks :slight_smile:

I have encountered the bug you mention, but very rarely. I think I’ve only seen it when I’ve made major changes to the base grid manager when it has happened to some children of the grid manager placed in some of the maps. Does it happen frequently, and what version of ATBTT are you using? Are you using the base grid manager or a child actor?

Seems to happen to the sci-fi child more often.
Doesnt happen too frequently and using 4.15, just thought id let you know incase!

Ok, thanks. This is in all likelihood an issue with Unreal Engine and not ATBTT specifically. Child blueprints having their variables reset to the values of their parent blueprints is a bug that has been reported by several people in various projects. I cannot find the exact bug report at the moment, but I believe Epic are scheduled to fix it by UE4.16.

Forged of Blood

Hello,

Just want to thank for the wonderful toolkit which allows our team to be productive from day 1.

We just recently launched our kickstarter, Forged of Blood. If you are curious what this toolkit can do, you can see some of the video of on our tactical layer on the page. Our KS page is at: https://www.kickstarter.com/projects/criticalforge/forged-of-blood/

Thanks,
-Joe

Hi, I have a question that may seem rather simple but what I’ve tried has not seemed to work.

I have some characters meshes that are not rigged/animated and was hoping to use them similar to Hitman Go or some of the other Go style apps. The characters do not animate, simply move across the board similar to chess pieces.

When replacing the pawns SM that comes in the Unit_Player_Ranged BP I have a bunch of errors as the animations to not correspond. I was wondering if you could help in regards to this, if my characters do not have animations, state machines and rigging is this a big issue? or am I missing an easy fix?

I’m happy to hear you found it helpful! I think your game looks extremely cool and I wish you best of luck with the Kickstarter. It is certainly right up my alley and you note many of my favorite games as your inspiration at your website. I’ve become your backer, so you’ve gotten your investment from buying ATBTT back :wink:
The best thing about making this toolkit is seeing awesome games being made that have made use of it. I kind of wish I had discovered your blog before so I could have followed your progress up to this point, but I certainly will do so from now on. Makes me wonder what other games are being made out there that use ATBTT in some fashion (if someone is reading this who has such a project going that has a blog, YouTube channel or anything, please let me know!).
I particularly enjoyed watching the video where you show your progress from something that looks close to the base toolkit to the polished product you have now. Would you mind if I posted that video in this thread? I am sure it could serve as an inspiration to others here.

Hello there, if you are using units that are not animated you should not use the Unit_Player_Ranged blueprint, but instead make a new child blueprint of the base Unit blueprint and add a mesh. The four example units that are included in ATBTT are just the Unit blueprint with a skeletal mesh and animation logic added. Since you aren’t animating it in any way similar to what I’m doing there it does not make sense to use these.

Hey, thanks! You don’t have to feel obliged but we certainly appreciate it very much.Thank you very much.

With regard to progression video, please feel free to share or link as you think best. I’d do it but I’m currently on mobile and could not see the option.

Thanks,
-Joe

There is no way I’m missing out on playing something I’ve incidentally helped develop, and besides it does as mentioned look right up my alley. Can’t wait to play around with the spellcrafting system. It might also give me ideas of directions I can go when developing ATBTT further.

I will certainly be spreading the word :slight_smile: I’ve posted your video below showing your development progress. It is worth noting to anyone watching that the developers have improved it even further since this video was made. I encourage everyone to check out their Kickstarter.

lookin spiffy

Your fix for adding flying units worked like a charm, with one minor hiccup. I modified it so that instead of removing edges for impassible terrain, it just made the cost too high for a normal unit to transition. Next I changed the path-finding type to “Ignore Difficult Terrain” and sure enough my “flying units” could travel straight up the side of buildings/cliffs while non-flyers have to walk around. The hiccup occurs if I want to *toggle *“flying”. If my unit takes to the air, or lands it doesn’t register the change in path-finding type until I move again. Is there a way I can have it run the logic as if I moved when I toggle flight on/off so the variables are re-initialized without taking a step?