And It's you again! Well, it's Saturday ... So it's time to publish a new blog post! This week has been full of small, subtle changes. Although no significant changes have been made, last week was a very busy one nevertheless!
Loading phases
First, let's start with arguably the most obvious change of them all. I decided to split the level generation into descriptive steps. This way, the player stays informed throughout the level generation process.
Each time the game completes a step a GUI element gets updated. You can also specify a completion percentage. Some games (The Sims in particular) use this to increase the immersion in the game.
So I decided to follow suit and gave each step a very Vaporwave description.
And here's how it looks:
Minor Updates
-
Big UI refactor
- Changed the UI colours.
-
Refactored how most UI elements updates their colours:
- There are three types of update events: Atlas Updates, Window Updates and Container Updates.
- Elements that update themselves with atlas updates events waits until the current level index changes, after which colour updates happen.
- Elements that update themselves on window updates will instead wait until the window factory colours changes. Those elements can then fetch the standard window background colour as well as their standard header bar colour.
- Finally, elements that update themselves with a container update will wait until an abstract element (named "Container") changes its foreground and background colours.
- Refactored how texts in windows change their colours by using Container Updates events
- Refactored how windows change their colours By using Window Updates event
- Refactored how buttons change their colours by using Atlas Updates events
- Refactored a whole bunch of UI modifying classes so that they instead extends actual UI classes.
-
Refactored how tabs works
- The actual tab itself now extends the Unity's Toggle class
- TabGroups now also extends the ToggleGroup class in the same manner
- Much like Unity's base Toggle, the relationship between Tabs and TabGroups are now described in the Tab class instead of the TabGroup one.
- There's a new TabContent class that deals with transitioning between tab states and whatnot.
- Most of these new Tab classes also get updated with Container Updates events.
-
Renamed most UI elements to use standardized names:
- Every UI elements start with Vapor and end with Component.
-
Refactored how Notifications works
- Now, most notification inherits form each other, thus less duplicate code.
-
Changed how the Notification Queue works
- Now some notifications are marked unique.
- If another unique notification is about to be emitted we instead refresh the existing one with a little wobble.
- This way we can greatly reduce the amount of notification in the queue.
- Refactored how Notification Emmiter works so that they work with the new system
- Tweaked notifications priorities a bit.
- Refactored how Tooltip works
- Refactored how hoverable components work
- Fixed a bug where the wrong CurrentCulture was being used
- A bunch of other miscellaneous refactors and optimizations
Next Week
I'm not entirely finished the UI refactoring. Thus, finishing it will be my priority for next week. After all this, I want to focus on the enemies and, above all, the bosses.
And then comes your usual suspects.
But most importantly, I really want to focus on optimizing the game. I plan to have some kind of demo presentable very soon. I'm really trying my best to profile the game and identify weak points to which optimizing is critical. It takes time to get through all this data, but I'm confident I can do it.