Megafuzz Dev Blog

Nerdy rants on programming and game design

Customizing Your Interface

Tailored UI, Tailored Experience, Tailored Everything!

In the previous entry we talked about how we want to make our upcoming game Ronn For Your Life accessible to more types of players by letting them tailor their difficulty setting in several ways. We're all about letting the players customize and tailor as much of the game as possible to their own personal needs. So now that we've allowed that for the difficulty, let's apply the same principle to another important part of the game - the user interface!



Casual & Hardcore Players: Unite

One thing I think a lot about when it comes to game design is accessibility. It's something that can and does come in many forms, but more specifically, today we're going to be discussing the topic of accessibility in relation to game difficulty.

I grew up with games such as Baldur's Gate - games that didn't really do a lot of handholding, and could be very unforgiving, especially on harder difficulties. As such, I grew up to appreciate a good challenge (or sometimes just straight up beating). However, we all play games for different reasons, and I especially believe this to be true for games with as diverse gameplay offerings as RPGs. Some people may enjoy the same games I do, but not necessarily for the harsh difficulty; they may be in it for something else, such as the narrative, or simply exploring the game world.

There's also the fact that even people like me, who do enjoy hard games simply don't have as much time anymore as when we were kids happily gaming away. And while I still enjoy those hard games, I simply don't have the time to go through them anymore. Should that mean I, or anyone else, should be excluded from enjoying other aspects of such a game? I don't think so.

This is why I'm designing Ronn For Your Life to be very customizable (in several ways, actually, but more on that later) - especially when it comes to difficulty.

The game will offer 4 different standard difficulties with varying scaling of things like enemy damage, reaction time, movement speed and more. You will have your typical easy, normal and hard difficulties, as well as an "extreme" difficulty that will alter the game in a few extra ways intended only for the most masochistic of elite players.

But to contrast this, the game will also offer a so called "Story Mode", which will be separate from the difficulty settings.


How Does 'Story Mode' Work?

The "Story Mode" is an option you can enable and disable at any time, and it will work on a savegame level (separately from an actual user profile).
When you enable it, the game will warn you that this will render you unable to obtain certain achievements, even if you disable it at a later point.

With story mode enabled, all enemies in the game world will turn to petrified statues of themselves - which can be ignored completely, or crushed into rocky powder with your basic attacks. This change works instantly - so you can be in the midst of an army of living, raging enemies, seconds away from undoing you - then you quickly go to your menu, switch on "Story Mode" and go back - and you will now be in the midst of an army of statues simply just standing there. Should you go back and disable the mode, the army will instantly be back to life.

Disclaimer: Programmer art for demonstrative and laughing purposes

The idea here is that you can actually walk past every single enemy in the game if you so desire, only experiencing the dialogue, exploring the landscape for secrets etc. - or, in a very different type of scenario, you can actually be playing through the game on the "extreme" difficulty, but then there's just this one annoying enemy you can't seem to get past, and rather than wasting more time, you switch on "Story Mode" just for this single encounter, and then go back to the extreme difficulty after that. Naturally, for the purists out there, this will still exempt the "Story Mode" player from any achievements related to playing through on a hard difficulty etc., but this way, you can tailor you gameplay experience in terms of difficulty on the fly to an extreme degree.

When it comes to boss fights where story and/or dialogue plays into the encounter, instead of turning the enemy to stone, the story mode will simply skip past the battle encounter and pick up where the next story bit would unfold - so say you have a little heart to heart with a boss both before and after you defeat him, then the story mode will have you talking to the boss, then after the pre-battle dialogue ends, the story mode will cut straight to the post-battle dialogue, where the boss will be in his 'defeated' state.

This in no way means that the game won't be for 'hardcore' players as well - the 'extreme' difficulty will be rage inducingly frustrating, and to top it off, there will be achievements that are designed specifically for the utmost hardcore players that will prove an insane challenge to just about anyone. This just means that more types of players will be able to enjoy the game in more ways, for whatever reason they may enjoy.

The Dialogue System

Talking About Talking

If you've read the first blogpost, you will know the game I'm currently working on is an RPG with heavy emphasis on dialogue and moral choices. To this end, one vital part of developing the featureset for the game is making a robust dialogue system. I had a good idea of what I wanted it to be able to do before I set out to make it, and one of my main goals was to make a very automated system that, when properly set up, would be able to handle just about every situation I could throw at it and automatically handle everything for me after being fed a single file for each encounter - one single file containing all relevant data - beyond just dialogue.

Here are the bullet points:

  • Based on external files to accommodate for localization, easy fixes, updates and possibly modding
  • Needs to work in seamless conjunction with the internal quest handling module
  • One file for each conversation should provide everything - not just dialogue, but automated handling of quest data, scripted events etc.
  • Wildcard attributes in a file can do stuff like changing in-game values (money, health, good/evil points etc.) at specific points in a conversation
  • Should also be able to change facial expressions at certain points, determine who's talking to who - maybe a second NPC suddenly gets involved
  • Handle dynamically created, context based dialogue option; based on certain criteria like quests, weather conditions or other factors
  • Needs to be able to show customized control keys (images and/or text) - with localization taken into consideration
  • Anyone, regardless of programming skills, should be able to create content for the dialogue system with very little to no need to read documentation

So let's look at them one by one in a bit more depth.


Moving Around

Reworking A 5 Year Old Mess

As mentioned in the first blogpostRonn For Your Life is a project I started back in 2011, worked on it for a few months, and then put it on hold for personal reasons. So when I picked it back up a few months ago, the codebase was more than 5 years old. I've developed a lot as a coder and a game designer since then; things I didn't even think about back then are now glaringly obvious to me, and needed a complete rework. Back then I just coded away until stuff worked, then proceeded to the next task.
Today I do things different; make the simplest things you will be doing 90% of the time feel good on their own before doing anything else. Just moving around should feel good even with nothing else in the game; if such a fundamental part of it doesn't feel good, the very foundation is built to fail.

Just moving around did not feel good. In fact it felt horrible. I had slapped together some very basic movement and collision that was sketchy at best, and buggy at worst. Basic platforming was too hard and frustrating, because the collision system required jumps to be pixel perfect to register; and bumping the game up from 30 FPS (my standard back then) to 60 FPS just made the collisions run twice as fast, demanding even more machine-like precision from the player.
You might be one or two pixels from the ground (thereby technically not allowed to jump), but at 60 FPS you won't register the difference, making it look and feel like the game's fault. I analysed the problem and concluded that I needed to introduce 3 steps, which I will discuss below.


Mundanity of Death

Almost all games has some sort of task that happens several types throughout the game, which, if used too much or not designed carefully, can end up feeling repetitive or mundane. This can be just about anything that is iterated again and again throughout a game; but one common culprit of this is combat. So today, we'll talk about how we can try to remove mundanity... of death. But bear in mind, this can be applied to just about everything.

So, throughout most games with combat, including Ronn For Your Life, the player will encounter numerous enemies every now and then. These can be anything from small annoying mob-types to big bosses. Obviously, in most cases, the majority of space is taken up by a small army of the lesser enemies - in some ways to make the contrast of the big bad boss even more impactful. This isn't necessarily a bad thing, because it gives the player something to do, and if done right, it's fun and doesn't end up feeling grindy.

However, a common pitfall with fighting these small enemies is that it can very quickly end up feeling pointless, grindy, even mundane. Death should never be mundane. Combat should be exciting. Some games introduces loot as a reward for fighting off otherwise mundane enemies, which can make the grind feel more tolerable when you finally find that awesome Long Sword of Bloody Ogre Decapitation +3. However, at least so far, I have no plans to introduce loot (at least of that kind) into Ronn For Your Life.

So what do I do?