Cast to character, but multiple playable characters? Methods and tips?

Is there any good way to handle casting to a character, but not make it character-specific? As in, I have multiple playable characters, the player can select which character they want to play. But when setting up various functionality, especially when following tutorials, the cast to [insert specific character] is used extensively.

Now, I have gotten around this so far by using BPI messaging and events and all AI interaction has been fairly simple to set up this way. Currently I am making UI and inventory/equipment/skill systems and it’s getting very convoluted and difficult to keep track of.

So I was wondering, does anyone have any tips on ways to be able to communicate with character blueprints without referencing a specific character blueprint?

I would prefer not to use get all actors of class at all if possible because of the taxation on the engine.

I’ve been exploring the parent-child setup, ie you have basic character blueprint, and all your different playable characters are essentially made as a child class of that character blueprint. Anyone got any insight on this? The idea would then be to store all the shared variables and functionality, like item inventory, equipment, and various UI interfaces, in the parent blueprint and communicating with that.

for storing things like stats and other qualities that are common among many characters, inheritance (parent child) is the way to go. by taking advantage of inheritance you wont have to create a variable in each class for something like health, the child classes will inherit it from the parent class. it also means that you wont have to cast to multiple classes when trying to get the stats, you can just cast to the parent class. its like the relationship between pawn and character, characters can do everything a pawn can do and much more. so your parent class would have the basic functions and variables and the children would have things specific to the role like abilities.

Yeah that’s exactly what I was thinking, plus it eliminates the need for this constant BPI messaging and events, it simplifies everything. Thanks a lot, if you have any general tips on that I’d love to hear them.

I’ve essentially set up a basic character now which has a fairly big combat system, it can receive XP, it has talent trees, health etc. Now all my characters will have different combat systems. Any tips on how I should proceed, should I just start over with a parent class now, or should I complete a full character, take out the specific stuff and then transport that to the child class?

Another option I envisioned was doing kind of cascade from Cast to [Specific character], ie if cast fails then go to the next etc, but that seemed… dumb.

depends on how much youve already completed. its really not hard to recreate what youve done but it can be tedious. another option would be to create the base class then reparent the classes youve already made. to reparent a class you just need to open the bp then go to the class settings and in the details panel theres a parent option, just change that yo the base class you created.

another little tip is make sure you go into the my blueprint section of your bp, click the eye icon with a down arrow next to it, then check the box for show inherited variables.

one last thing to note, child classes inherit any scripting and custom events from the parent as well. so you could have the damage handling in the parent if you wanted. i used this once for simple ai by creating custom events for abilities, basically just ability1 ability2 etc, that way the children could have custom script but i could use one behavior tree that just calls the generic event.

Thank you, that is good advice. Recreating it should be fairly simple, it’s just a matter of copying the code and recreating the variables I suppose. Few hours and it should be working, barring some unforseen hiccups. I decided to complete a character implementation first, to kinda nail down functionality, then work on parent/child now that I know I can use a parent to cast to it should go a lot faster than trying to keep my tounge straight with the BPI stuff. I love BPI and it’s amazing for debuffs and sending experience to my character upon death etc (though it can also be done by cast of course), but when you’re doing stuff like UI widgets it is extremely cumbersome.

So far I have combat with combos, take damage, do damage, visual effects like weapon trails, blood splattering on the ground, xp and levels, skill trees, inventory and equipment nearly done. AI with range select and varying attacks, follow, search, go back etc (still got a problem with them returning though as they bump into each other and prevent movement - haven’t had much luck with turning off collisions there).

Amazing what you can do with unreal in a month when all I had was three cylinders in maya. Attacks alone are 28 different animations for a single character and those are just button combos before I start doing special skills. Fun stuff though.

I don’t use behavior trees to be honest, I found them very finicky and problematic whereas blueprint AI is so simple. I do implement actions in a similar way, I seperate functions and behavior and then add in the parts I need for different enemies.

I can tell you that casting to specific character may yield a result you dont want, currnetly i was setting up code in bp for my character to possess a car pawn which when pressed the player character snaps to the same location along with a duplicate that i use to run and test ai,