Megafuzz Dev Blog

Nerdy rants on programming and game design

Unplanned Features Part1: Crouching

A Small Addition: Making Yourself Smaller


In the new year's update I mentioned that I've added a bunch of features and changes to Ronn For Your Life that I initially never planned to include. All of these will be covered separately here on the blog throughout the year. This is the first of many to come, and we're starting small... Quite literally! It's a small addition that makes you smaller (or at least shorter); crouching!

Just like a crouching player character, this blog will be on the short side, since there's not much to cover. But basically, I've added the ability for the player to crouch, which actually opens a few doors for a variety of things. It allows me a little more creativity and flexibility in terms of level design; For example I can now add obstacles that the player needs to crouch below in order to access.

But crouching is not just crouching - it's also considered sneaking, which ties nicely into the stealth system that I also added (which will be covered in a dedicated and much longer blog post). When you're crouching / sneaking, you will move considerably slower, but you will be harder to spot and you will make less noise. You will also be harder to hit, since your hitbox is more than halved in height - which in turn also lets you sort of crawl underneath things.

Finally, another by product of this is that the "down" key is now a general control key in the game on the same level as left, right, up, attack etc., which it wasn't before - and it is used for more than just crouching... But more on that later.

Disclaimer: 
As always, all graphics presented here on the blog (until otherwise officially stated) are 100% placeholder and for demonstration purposes only. I always find this point important to stress, but particularly so in this case, since the crouching does look really unintentionally hilarious.

But with that disclaimer out of the way, here is a crouching Ronn:

 

This is the smallest (get it? harh harh... okay, I'll stop now) of the "unplanned additions", but it fits nicely as the first in the series of updates covering them, as things will only get bigger from now on. So stay tuned for more coverage on the unplanned features!

Unplanned Features Part1: Crouching

A Small Addition: Making Yourself Smaller


In the new year's update I mentioned that I've added a bunch of features and changes to Ronn For Your Life that I initially never planned to include. All of these will be covered separately here on the blog throughout the year. This is the first of many to come, and we're starting small... Quite literally! It's a small addition that makes you smaller (or at least shorter); crouching!

Just like a crouching player character, this blog will be on the short side, since there's not much to cover. But basically, I've added the ability for the player to crouch, which actually opens a few doors for a variety of things. It allows me a little more creativity and flexibility in terms of level design; For example I can now add obstacles that the player needs to crouch below in order to access.

But crouching is not just crouching - it's also considered sneaking, which ties nicely into the stealth system that I also added (which will be covered in a dedicated and much longer blog post). When you're crouching / sneaking, you will move considerably slower, but you will be harder to spot and you will make less noise. You will also be harder to hit, since your hitbox is more than halved in height - which in turn also lets you sort of crawl underneath things.

Finally, another by product of this is that the "down" key is now a general control key in the game on the same level as left, right, up, attack etc., which it wasn't before - and it is used for more than just crouching... But more on that later.

Disclaimer: 
As always, all graphics presented here on the blog (until otherwise officially stated) are 100% placeholder and for demonstration purposes only. I always find this point important to stress, but particularly so in this case, since the crouching does look really unintentionally hilarious.

But with that disclaimer out of the way, here is a crouching Ronn:

 

This is the smallest (get it? harh harh... okay, I'll stop now) of the "unplanned additions", but it fits nicely as the first in the series of updates covering them, as things will only get bigger from now on. So stay tuned for more coverage on the unplanned features!

Reactive Foliage

Making Grass Fun(ish)


Videogames are interactive - whether it's a character reacting to user input or an epic RPG ending in wildly different ways based on player choices, it's all consequences of interaction. But while implementing fancy dialogue trees, adaptive story design and other interactive goodness, it's important not to forget that it's often the smallest interactive elements that makes the biggest difference - they can make or break our subconscious perception of the game's feel and overall quality.

Today's example - grass. When you're standing on a hilltop overlooking the realm in your favorite game, there's nothing quite as good for immersion as seeing all those tall blades of grass slowly swaying in the wind. At the same time, there's also nothing quite as bad for that same immersion as crouching through those tall blades of grass and literally nothing happens - making you feel more like a ghost than the grand adventurer you're supposed to be. And I get it - reactive foliage can be quite demanding, as I discovered when I implemented it. But I wanted it in Ronn For Your Life - so here are my challenges and solutions in the implementation.

First, let's take a look at what it looked like before:



While overhauling everything, it was clear that the grass pictured above was just one of many things that had to go. I wanted something that looked more natural, gave me greater control of programmatical influence (like changing wind forces), was lighter in terms of performance, and most importantly had the ability to be interacted with by external forces beyond wind - like a character walking through it, bending to its movements.

More...

Smoother Game Camera

You've Been Struck By... A Smooth Camera


A very fundamental, yet huge part of most games is moving around a world that is typically too big to fit into one screensize, and as such, the game needs a camera to follow the player. The simple solution is to do just that - make it follow the player character as soon as he or she moves. However, this isn't necessarily the most smooth or elegant solution. And since it's such a fundamental part of the game, let's see if we can do something to make it just a tiny bit nicer, should we?


This is how the camera movement used to look in Ronn For Your Life:



And this is how it looks now:


More...

New Year's Update - Exciting News!

Status Quo


First of all, let me apologize for the quietness - I feel bad letting 2 whole months without a devblog update go by! While writing these blog posts is fun, it also takes both a lot of time and a lot of energy, especially since I usually end up typing up a small essay. As a result, I've been thinking about ideas for some updates that would be smaller and more fun sized - that should hopefully still be interesting and something you would want to read, but while also allowing me to update every once in a while without it being too daunting a task.

On the bright side, the time that I haven't put into the blog has gone into a lot of crunching on Ronn For Your Life. And as a result, it's actually starting to get exciting.
For more than a year now I've been fleshing out the "engine" of the game - covering all the bases I will need to make a great game. This process saw me expanding the scope of the game a whole lot more than I initially expected - adding a skilltree, upgradeable spells, underwater exploration, a stealth mechanic (which also meant expanding the AI), and a bunch more cool stuff that I never intended to be in the game - including my personal favorite - a building system for a highly customizable weapon that will then further be personalized by other factors. It will be elaborated on in a future blog, but think of it as a character creator... For your weapon.

The base that will make up the foundation of the game - all the features and systems in place - has taken a lot of time and work. Hell, just look at the blog post I made about writing an entire piece of custom software just for writing dialogue.

And all of this, like I said, is basically just the "engine" that the game is going to be built on. But here's the cool part...

More...

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!

More...

Storymode

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.

Dialogue Generator

Making A Tool To Make A Game


First off, this is a continuation of the previous blogpost that talked about the dialogue system for our upcoming game Ronn For Your Life, so if you haven't already, I suggest you read that one first.

Right, so like I concluded in the previous blogpost, I needed to make a tool that would allow for easy and less error prone creation of the content files for my dialogue system. The first and primary goal of the tool would be to handle automated unique IDs for me for every "branch" of every conversation ever generated. But, as I started to make the tool itself, it became apparant that it would also be very beneficial to make it a fully realized visual suite for all my dialogue content creation needs. Before I knew it, I was in the proces of making a full program.

Before we go further, let's take a look at the sort of files I was creating by hand before, and what the primary problem was:

Okay, so let's explain what's going on here.

More...

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.

More...

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.

More...