Unreal Engine 5 – Character Creation UI System with Party Management (Need Help)

Hi everyone,
I’m working on a project in Unreal Engine 5 and I’m trying to build a character creation and party system, but I’ve been stuck for a few weeks and I’m starting to get lost in my own logic.

Here’s what I want to achieve:

  • A main Widget that contains 4 buttons

  • Each button opens a new window where the player can define a character using 4 choices:

    • Race

    • Gender

    • Class

    • Profession

  • At the bottom of each character widget, there is an “Add to Party” button

  • When this button is pressed, the created character is added to a Party stored in the Game Instance

  • The party should store a maximum of 4 characters

  • After the party is full, the player can press a UI button called “Spawn in Game”

  • This should spawn the full party of 4 controllable characters into the game world

I would really appreciate help with:

  • Structuring this system correctly

  • Best practices for UI → Game Instance communication

  • Managing character data and spawning the party

Any advice, examples, or guidance would be super helpful. Thanks in advance!

Hello,

You’re asking for a relatively complex system. It’s going to be difficult to help you on a forum.

I imagine you’re relatively new to this and working in BP, so I advise you to start with the following:

1- Create a structure containing character information (gender, class, profession, name, etc.) (Name: S_CharacterInfos) (For gender, race, class, and profession, I recommend creating enumerations to avoid typos)

2- Create an Actor Component in which you create a variable of the S_CharacterInfos type (the variable must be “Instance Editable” and “Expose on spawn”). Name of the Actor Component: AC_CharacterInfos

3- In AC_CharacterInfos, create a GetCharacterInfos and SetCharacterInfos to update and retrieve the information from the S_CharacterInfos variable

4- Create a BP_SpawnableCharacter in which you assign this actor component

UI side:

- Create an Array variable of type S_CharacterInfos

- When the button is clicked to add the character to the team, add an element to the array by constructing the information from the information entered in the UI

- When the button is clicked to spawn the entire team, loop through your array variable (for each loop) and each time the loop passes, call SpawnActorFromClass (actor class = BP_SpawnableCharacter)

I haven’t gone into much detail here, I’ve just given you a starting point because I don’t know your level of expertise or which part of your system you’re having trouble with (the UI? Spawning? Everything?).

PS: Will all your characters be playable? If so, in multiplayer? Solo? If they’re all playable in solo mode, you’ll need to provide AI for the characters not controlled by the player, as well as a way to switch between them. I imagine you’ve already planned for this, but I’m mentioning it just in case.