Last week wasn't as productive as the last, but it's still substantial nevertheless.
So without further ados, let's get to it!
Previously, some GUI elements didn't scale to the screen's density. This meant that no matter the resolution those items always remained at a set size.
This was fine and dandy, but now that menus are implemented it's primordial to have some kind of cohesion.
The main reason why such constraint existed was mainly due to those wacky title bars of those funky windows. Before these were all textures, and in essence, I wanted to make sure that these won't get blurred or offset, so keeping the same scale was the only choice back then.
I, however, tried a different approach: because these funky lines were relatively simple and didn't require any type of special texture I thought that we could easily replace them with custom geometries. This way I can control where each vertex goes and how they adapt to the GUI element's rectangle.
After a bit of tinkering, I finally managed to change this, meaning that I could now get rid of the unscaled canvas.
As you can see the results are a whole lot better :
And here's how it looked previously:
And just for comparison, let's take a look at the GUI at my screen's native resolution:
It was a long-awaited change, to be honest. Especially if I want to try to have dynamic resolutions in the future.
One of the most striking updates has to be the sounds. Previously, there weren't any sounds yet, but now there are progressively more and more varied sounds, making the game a bit more complete.
On most items (collectables and whatnot) there's now a physic sound that plays when the item's associated rigid body get hit. The sound changes its volume based on the impact velocity's magnitude. This makes locating those items so much easier. Similarly, there's now another sound that plays when said item gets picked up.
Let's take a look:
As you can see (or heard in that case), most sounds are also given a random pitch just to spice things up.
Another big upgrade would be weapons. After a bit of closed testing, I've realized that the weapons could need a bit of balancing.
The Gun Got Nerfed
The Gun itself got a slight nerf. Before each bullet shot could be recycled. This, in effect, makes it behave more like Heavy Bullets. However, it was clear that picking up each of these bullets were kind of a pain for most people.
So I've decided to reduce the amount of time a bullet can be recycled by linking that recycling to the player's current luck stats.
In the future, there might be even actual bullet magazines and an automatic reload process (or manual). This way we could counteract the fact that bullets would be scarce if the player has poor luck.
The bow got buffed
The bow, however, got a big buff. Now, arrows are infinite. This effectively means that there are no more melee attacks and every time the player wants to attack a pre-charge is needed.
The Mini Map
Next, there's a new Minimap.
This Minimap shows a simplified layout of the level. The room the player is currently in is also highlighted, and it changes when the player moves to another room.
Each type of rooms has their own colours, which is dictated by the colour palette. This means that each level has their own room colours.
If this might be a hindrance then this could be easily changed, but so far I simply lack the data to know.
So far all rooms are shown (even the hidden ones), but eventually, only the discovered rooms would be shown.
There's also no other things as of yet. There might be enemies, items and whatnot. These would be pretty easy to implement though.
The map also rotates to match the player's view. It also follows the player around so that the player's position will always at the middle of the map.
Take a look:
- Fixed a bug with enemies' animations not working properly;
Undid (partially) the UnityEvent's to also use C# native events:
- As seen here, there's basically no reasons to use UnityEvents rather than native C# events. One of the reasons one might use UnityEvents is of they use a serialized and strongly linked. But overall it's significantly slower;
- Another reason for the undoing is simply because my capacities are technically not serialized. This means that those capacities listeners are never invoked when the event is called.
- Added an empty Option tab in the pause menu.
So next I'll probably work a bit on the minimap, and perhaps fix a few graphical bugs linked with the MSAA applied to the game. Some models get unwanted gaps between shared vertices:
So I might have to implement FXAA or TAA to fix this.
Afterwards, it's boss time!