Now that I feel like I’ve taken the load time improvements as far as I can (for now), it’s time to get back to the backlog.
I’ve been using Clear for a while now to track my To Do task list and to jot down notes and ideas. Not counting closed tasks, I currently have 169 items requiring some sort of action. About half of these are just scratchpad ideas that need either further fleshing out or rejecting, but the rest are things I know need to be either fixed or added.
A few days ago I started making a dent on the list. I began by fixing up some sprite import settings that hadn’t been optimal. Rewrote the ParticleHandler to properly use coroutines instead of Update (my general rule here is that if something runs regularly every frame most of the time, then Update is fine, otherwise for one-off or occasionally active actions use a coroutine). I also fixed a few bugs and then (better late than never, but still shamefully overdue) finally set up proper source control for the project files. And I spent some time prettying up this web site and the associated forum, to make it look nicer for all the people who aren’t reading this blog and have no idea my game even exists. 😉
Yesterday I knuckled down and fixed some issues in my localization code to allow it to more easily pull a string, and to now also set the font type, size, and line spacing at the same time. So in my English.txt file I can have this:
// Main menu objects MAIN_MENU_TITLE:Mood Flip:BigBook:86:1 MAIN_MENU_DEMO_TIP_FONT:Bolton:20:2 MAIN_MENU_PLAY_BUTTON:Play:BigBook:32:1 MAIN_MENU_HOW_TO_PLAY_BUTTON:How To Play:BigBook:18:0.75
Then in the LocalizationManager (which loads all of these keys and values into a dictionary) I have two functions SetText and SetFont that pick apart the delimited values and apply them to the Text object passed in from the calling code. It’s a lot more efficient than what I was doing before with fetching the data first and then applying it on the calling side.
At the moment the game will only support English when it’s first released, however it’s my intention to use some of the initial profits (ha! wishful thinking!) to pay for professional localization of all the text strings, and be able to include proper language support in an update patch. I’ll probably start with the usual PFIGS+CJK staples – that’s Portuguese, French, Italian, German, Spanish, Chinese (Simple and Traditional), Japanese, and Korean – and then see how well the game takes off and which languages are being requested the most before deciding whether to add more. I’d quite like to get Vietnamese in there as well, for one thing.
As much as I appreciate the merits of those minimalist-UI games which rely on little or no text and instead use iconography to convey gameplay and instructions, that’s not really my style: I’m a believer in having both visual and textual information options provided at the same time, where possible. This is why, for example, my main menu screen has both icons and then labels for those icons. So if a four-year-old who can’t read yet is able to pick up the game and figure it out through visual context alone with those icons, then I’ve succeeded in my UI/UX accessibility goals. Similarly if a ninety-four-year-old with little experience in the visual language and tropes of gaming (i.e. someone who isn’t familiar with, say, the convention of using a “cog wheel” icon to represent “Settings”) can learn to navigate the game by reading the labels and instructions, then I’ve also succeeded. Not that I have any actual testers lined up in those age brackets, but hey, I skipped enough quest logs in World of Warcraft back in the day that I can probably bluff being four again myself for now. 😉
There is going to be quite a lot of text in this game, particularly later on with some of the post-release additional game modes I have in mind. Players can read or ignore as much of it as they feel like – for the most part, skipping past instructions or flavour text won’t prevent anyone from knowing what to do or enjoying the gameplay. I’ll try my best to convey some of the trickier learning curve concepts via imagery as well, but I still need to think through the best way to present the combined information. For example, tapping a single Moodie and causing it to flip is pretty intuitive and everyone I’ve tested the game out on tries that quickly enough. But the second (and more crucial) interaction where you hold your finger down to bend the grid and flip a whole set of Moodies at once is harder to explain visually. While overall the controls are pretty simple and those are the main two ways of interacting with the game world, there are also other more standard concepts such as swipe to pan, pinch to zoom, and so on – actions which will be intuitive for most players, but for a small number of players instructions will be beneficial. It’s all going to be a balancing act, trying to figure out the optimal way to show it all and where the compromises need to be made in terms of matters such as screen real estate, minimising “waffle” and unwanted popups, trying not to rely on text over imagery or vice versa, and so on.
Anyway, on to today’s work. Time to sift through those 169 outstanding tasks and see which one is crying out for attention the most…