One of my major achievements for this project, and one of my favourite things to work on so far, was the character select menu.

When starting out on this, it was quite a daunting task as there were a number of things I had to consider when making it:

  • Which style of character select would we use (of the 3 TS games or something else)?
  • How can I design the system to easily add new characters as they are created?
  • How can I set up the animations for this to be easily added in? (I had no prior experience to using animations in engine at this point)

While I can’t remember how exactly it was decided, we went with the character select style of TS3. This was probably the most practical solution as 3 had a column that allowed nested sets of characters in a row (which was needed at the time due to the enormous character roster) and none of the other games had a way to easily access all the characters without scrolling through every single one.

For the challenge of making a system to easily add new characters and animations, during my programming I had the idea of making a data table that contains all of the relevant character select information. This included the character’s name, associated enum value (which existed already), skeletal mesh, portrait and the row they belong to.

The way I utilised this was making the row name in the data table match the character enum, and then use this as a sort of lookup table. This meant that I could now populate the table with buttons created on construction of the character select widget, so instead of having to manually add a new button to the menu every time a new character is created, I could instead just add a new row to the table for the new character. It seems like there is a better way of doing this inside of Blueprint, but I haven’t been able to find one yet.

For the animation, I was pointed towards animation montages and so I went about creating a system that used montages to perform the select animations that could be used by all characters with different animations. I set up a data table in a similar way to the character select, but instead containing information on the animation that would play and prop information.

To play the animations, I created an animation montages with 3 sections (idle, selection and post-select idle) with the same section naming convention for each montage. This made playing the animation through Blueprint easy because I could trigger specific behaviour based on whether the character’s button was hovered or pressed. Hovering the button would cause the idle animation to loop until it was pressed at which point it would blend into the selection animation, which would transition into the post-select idle and continue to loop that until the player does something else.

Some of the other features that were added later down the line was texture swapping certain characters such as the military characters and adding props to the animation, though both of these have some issues that need to be resolved.

This was probably one of the more fun but challenging parts of the project, though it’s still not completely finished. I’m hoping in the future that we’ll be able to get the animators more involved to add new animations for the roster as there’s still quite a lot of characters needing them.