Megafuzz Dev Blog

Nerdy rants on programming and game design

Unplanned Features Part 3: Swimming

Diving Into Another Unplanned Feature

While Ronn For Your Life will primarily be level based with a fairly linear path throughout, there will also be elements of freeroam exploration. There will be optional paths that can be taken - which may result in additional quests, rewards, or maybe just a goofy easter egg. Thinking of how to add more verticality to said level design, it occurred to me that, even in a platformer, verticality doesn't always have to mean higher... And with that, underwater exploration was added.

The player can now go for a dip in the water. He can opt to remain around the surface level and just swim around to get across the pond, but he can also dive into that pond to see what mysteries lies beneath. Oxygen will be a factor in how much and how deep sea territories can be explored, and this is directly tied to an upgradeable swim skill, which will not only affect the speed with which you can swim and dive, but also for how long you can hold your breath. Higher swim skill will make you overall more efficient in water, and thus able to explore deeper reaches of the dark blue below. Maybe even find sunken treasure...


Feeling Floaty

I wrote an entirely separate movement and physics system for the player utilized for in and under water. While on land, his movements are extremely responsive and instant, then while in the water, he's much more "floaty". He's got acceleration and deceleration, and if he breaks the surface with high velocity, he'll be thrown deeper into the water before automatically slowing to a stop, as opposed to if he just carefully dipped in. This really makes a huge difference in making it feel much more like its own little area of the game, and it feels as if you're swimming - which obviously does (and should) feel rapidly different from moving around on land.


Unplanned Features Part 2: Stealth

A New Feature Sneaks In

The first post in the Unplanned Features series talked about how crouching was added as an initially unintended feature. This served the simple purpose of letting the player get into small places, duck to avoid incoming projectiles and more. But that simple little feature soon evolved into an entire stealth system - crouching was no longer just crouching, it was - as in many other games - a sneak mode. This was a cool addition because it allowed for more varied gameplay - instead of having to fight a bunch of enemies, the player could now opt to try and sneak past them. Of course, it also meant a lot more work, especially to the AI, since it now needed to be significantly more clever. More layers to combat were also added in the shape of sneak attacks and, if circumstances allowed, a sneak kill. A lot of work went into simulating the vision of enemies, and furthermore, simulated noise was added. The player will now make noise when walking, jumping, attacking and more. An enemy can hear those things, and even alert another enemy who wasn't in close enough range to hear what went on.

So by default, entering sneak mode will enable the player to see cones representing an enemy's field of vision (this can be turned off if preferred). Entering the cone won't mean that the player is immediately spotted - rather, when inside the cone, it will gradually shift from green towards red, indicating how close the player is to getting spotted. If he moves outside the cone before it gets completely red, he's fine - if not... Well.

The player gets spotted... But looks like he manages to get out of it.

Some enemies will be fitted with a better sight than others, and as such their cones will be either longer or wider (or both) and maybe they will be able to spot you quicker, giving you less time to move out of their field. Other things may work to your advantage; at night or in darkness, their vision may be significantly reduced, or simply just grant you much more time to mess around before their eyes before being spotted. There will be quite a bit of varying degrees to this vision based on the enemy, the surroundings, ambient light and the player's stealth skill.

But vision is not all; the enemy will also be able to hear you, and so things like moving too fast or jumping around when too close to an enemy, even when its back is turned, will alert it to look in your direction. Let's have a look at what happens if the player decides to make a racket the moment a nearby enemy turns its back:

The enemy turns its back and can't see, but then hears the player jumping around

But let's say the player isn't spotted and instead manages to sneak up behind the enemy. When in sneak mode and behind an unaware enemy, the player will be able to do either make a sneak attack or a sneak kill. This will depend on a few factors - the current difficulty setting and the size / toughness of the enemy. Some enemies (like the swarmer) are small and fragile, and easily disposable with a quick backstab. Others will simply be impossible to kill in one backstab. In this case, the player will still be able to make a sneak attack, which will deal far greater damage than a regular attack. This way, there will always be an advantage to successfully sneak up on an enemy.

This is what such a sneak attack would look like (complete with 100% placeholder programmer art):


Spoiler Alert Coming To Nintendo Switch

Spoiler Alert Coming To Nintendo Switch

The Chili Pepper Knight is finally joining the family that inspired him in the first place.

Once again, way too long time has gone by without a devlog. That typically means that I'm neck deep in work - which has especially been true for the last year.
2018 went by with constantly juggling between three huge tasks. First and foremost is obviously development on Ronn For Your Life, which is my main focus most of the time. Second, which is still ongoing, is the Xbox One port of Spoiler Alert. That one is dragging out a lot by moving from GMS1 to GMS2 and having to rewrite all achievements, and also there has been some technical issues due to internal migration from one backend platform from Microsoft to another. The third has been porting Spoiler Alert to Nintendo Switch. So let's talk a bit about the process behind making that happen, and what ate up a good chunk of 2018...


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.

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.


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:


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...


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.

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.