View Display & Fixes

View Display & Fixes

Another month has passed since the last update, and I’ve been mostly focusing on the UI displays and fixing a few bugs as well as some general organisation. I haven’t been able to dedicate much time to the project for the last few weeks, as I had the Save Manager to finish up for Carter Games by the end of April.

Preview

Below is a short video of the current progress made on the project as of writing:

View persona UI

The UI hasn’t changed much on the front-end, but behind the scenes a lot had gone on. I’ve spent the time to improve the UI Polygon setup that I’m using for the odd shapes in the UI. The new setup lets me drag points in the editor space and the graphic is then drawn using those points. I’ve also made it so this updates in edit mode so it’s easier to visualize. The upside being it’s easier to edit and less buggy. But I still need to do a little bit more to it. As it currently doesn’t scale with the bounds (width/height) of the graphic.

A screenshot of the unity editor with a element of the persona UI selected showing 4 points highlighted as gizmo's

With this new UI polygon setup I remade the UI for the skill strengths & weaknesses. Mainly to have the extra length for the text. I couldn’t quite match the text perfectly with Persona 5’s text as the font has a few layers to it. That and I couldn’t find a font close enough to match it, so I went with the readable option. This turned out okay and I refactored the display code to toggle the sections correctly when needed.

A screenshot of the view persona display with a skill highlighted.

The next new part was the navigation of the UI. In Persona 5 you can inspect each skill and move around the slots for each persona. This wasn’t the easiest system to code despite it being simple in theory. I ended up with a data structure that split the slots in the columns with an option for wildcard slots that could be accessed from specific slots. I reused the old selection UI from the skills select screen and refactored it to allow for 4-directional blue backgrounds. This was done so as in the game you would see this highlight in the direction you were navigating in.

With this I also implemented the inspect display which I had already laid out to show the skill in more detail. This display updates as you move around the skills and hides is no skill is currently being hovered over. Some of the more general fixes such as toggling user input listeners at the right times were also adjusted. As some of them were listening on start instead of when the screen was opened.

Another notable change is the model preview. While it is still early days, I was able to get the model to spawn in and rotate with user input. The model is stored in a new model system that replaces the old one I had from the 1st day of working on the project. The main upside of the new setup is that I can easily get & re-use models without spawning them all in on start.

The final main change is the ability to switch personas. Using the newly released Save manager 2.x I was able to make a save object for the held persona’s the player has. Currently this is the container class but down the line it will be the raw data for each persona. There is still a lot to do with this system as is, but the ability to switch between all held and select a different persona is now possible which is the key thing.

General organisation

The only other progress of note is a major clean-up of old code. While a lot of the code base is still scrappy and a bit messy, I have spent the time to remove scripts that I want to re-do or are for systems I’ve yet to actually focus on. Structurally the code is split into categories based on what it is about. So, data structures or scriptable objects are in a “Data” folder. While general systems, gameplay specific systems & UI all have their own folders. Inside these folders I have the code split by mechanic. Namespaces wise they all now use the base folder which does name more namespaces, but a more structured setup which I like, for now.

Closing thoughts

Given this has only been a small amount of progress, I’m still happy with it so far. I’m hoping in the coming months to be able to get into some of the gameplay. Implementing the enemies, moves & actual combat. So hopefully more exciting stuff to come! I’d expect the next update in about a months’ time.

Project Start, Persona Summoning & UI Tests

Project Start, Persona Summoning & UI Tests

A personal project where I replicate the Persona 5 Royal Turn-Based Combat system as best I can for fun.

I was able to get a full day more of less to kick the project off with a bang. For the majority of the day I was focused on implementing some of the bits I wasn’t sure would work to prove the concept to myself before committing to it fully. I’m glad to say its looking good so we’re all go. To the left is a little video of the setup I made today. However I will be reworking all of this as I rough coded this together and it is a mess.

Whats setup:

  • Basic player & animations
  • Players stats + UI
  • Player persona
  • Persona skill select UI
  • Target select UI

I spent the tail end of the day doing some clean up of the code in preperation for the larger project. Today this was the persona skills. I knew each skill would be more of less the same in structure so I made a base class with the meta data and then specific inheritors for each type like attack & support etc. In doing this I made a custom inspector setup to make it easier to make new skills. A preview of this can be seen to the side.

The custom editor logic handles things such as the icon & name of each skill as well as elements such as the cost of the skill, as some skills use a percentage of the players health while others use a pre-defined amount. For the icons I’m just using some placeholder art I got from FlatIcon for now but I will likely change these down the line. Below are the icons I currently have for each ability:

I’ve already setup a system where you can access each of these icons in code in a static class by the type they represent. Following a similar setup for other data bits down the line should make working with such a large data set more steamlined, but we’ll see how that goes when we get to it.