At the time of last month’s development update, I’d just managed to finalize the layout of the inventory screen, but was struggling to get it fully implemented. After much strife I managed to figure out enough of Unity’s UI system to avoid having to figure out the rest of it – that is, while I still find it nearly impossible to intuit what most of the values of the RectTransform component used for UI work actually do, I’ve figured out how to translate the salient points from and to world coordinates so that I don’t actually need to spend much time struggling with those particulars and how to set up the existing UI objects so that I need to drive as little with code as possible. Throughout all this frustration, I finally got the inventory screen completely functional, just as I’d imagined it:
View post on imgur.com
Afterwards, I figured that the most important outstanding task was probably the map screen, so I started in on that. This was also a good thing to tackle next since, with the challenges of the inventory screen fresh in my mind, I had a good grasp now of what I did and didn’t want to try to do in Unity’s UI system – and could largely avoid the bits of it I dreaded working with. I’m getting a little bit ahead of myself though: Before I could begin work on the map screen, I needed to figure out how a map screen would even work in this project, and there are a few notable considerations. First, the art style of the game is basically 5 colors: Black, white, gray, red, and yellow – though the specific tones of these change from screen to screen. Of these, the yellow and red tones are used sparingly: Yellow is used exclusively for fire and the light cast by it, while red is used almost exclusively for things dealing with health and damage. Under these circumstances, I had 3 colors to work with, which is not very many at all for displaying two map layers, along with information on save points and doorways, using 16×16 tiles. With a bit of experimentation, though, things started to fall into place. While it was certainly not possible to view the entirety of the map simultaneously, I could make the relationship between layers immediately visible by having the alternate layer visible in gray just behind and offset from the main layer, with doors staying in place to mark the connection between them even as the player changes the view between them.
However, I wasn’t satisfied with simply making it visible where the room was spatially, because in the end these rooms are all just rectangles – and, if you were trying to choose a particular one to warp to using the fast travel item, just seeing where it is on the map might not be very helpful, especially if you were uncertain which layer was which. Thus I also gave every room a name and description. This is one of the changes I’m happiest with: A way to, with very little additional effort on either my part or the player’s part, add huge amounts of story and context to the whole experience while also making it possible for them to instantly situate themselves in space when trying to navigate the world. With all of this in place, I couldn’t be happier with how the map screen shaped up.
View post on imgur.com
The other tricky bit of getting the map screen fully functional was handling the parts of the map that shouldn’t be visible – that is, the areas that either the player hadn’t seen yet or where there was a secret they hadn’t found. The first of these was fairly straightforward: Just keep a running tally of every explored section and if the player hadn’t explored it yet then don’t render it. Figuring out exactly under what parameters a secret passage would be revealed or hidden was a little trickier – and in the end the way I handled this was anything but elegant, just a little object hidden in the world telling the room to treat the area as solid until it was explored or to hide the indicated exit until it was used. As the project progresses I may need to handle some other special exceptions like this, but the most common cases should all be covered now.
There are a few tweaks and improvements I can think to make to both screens: Both of them have occasional UI bugs where the text backgrounds don’t update properly and the text overruns its allotted space, and the map screen could possibly use some sort of system for placing and removing custom markers or an indicator for where the player’s current save point location is, but all of those tweaks are low-priority enough that I’m just noting them down and filing them away for later.
After finishing both screen interfaces, I felt like it was time to finally take care of a number of outstanding tasks I’d been putting off. First, there was the concept of using inventory items on the world: Everything was finally in place in terms of interface, but the world itself didn’t have any interactions set up. I went ahead and set up a bunch of default interactions for whenever you offer an item to a character that they have no interest in – a fun little writing exercise, creating two or three lines for each person not giving a shit about whatever garbage you’re trying to hand off to them. Additionally, I had to create a number of lines for the main character about not knowing what to do when prompted to use an item on a random object or in an empty space with nothing visible to interact with.

With all this done, I set my sights on getting another fundamental game system I’d kept putting off taken care of: The healing ability. I found, after reviewing my code, that I’d gotten everything about half-functional, but that I’d never actually created an animation for healing. Over the course of a day I put together a healing animation, made the necessary UI changes for the different ammo system that ability used, got all the programming fixes in, and added some sound effects for using the ability. The sounds could use some work (which has also lead me to the conclusion that the sound system itself could use some more work), but the core ability is in place.
View post on imgur.com
Finally I got a system set up for reading texts in the game world. I had originally expected this to be an offshoot of the dialogue system, but I found that actually text should be displayed in a simpler and more straightforward way – rather than reading a text linearly, statement by statement, until it’s complete, it feels much more natural to see the whole thing laid out before you and read it however you choose. Because the UI layout was completely independent of the dialogue layouts, the current text display doesn’t use the dialogue systems at all.

I may, however, want to run it through the dialogue system to some degree later, since that also provides a number of localization and markup tools which may eventually turn out to be useful.
The last couple weeks in particular have resulted in some very rapid progress which I am surprised and delighted by. The boss design I set aside a month ago still needs to be completed, there’s a lot of dialogue to write, the title screen needs to be handled, a couple of scripted sequences need to be done – a lot of little odds and ends are still outstanding, but most of the major tasks which stood in my way are now complete. The end of the beginning is in sight.
