This review contains spoilers

Imagine you’re a well off kid in the late 80s or early 90s. It’s Christmas, your parents have bought one of those new trinkets called video games, something called a NES (Nintendo Entertainment System), with a pack-in-game cartridge to boot. After waiting for them to get some scissors to cut open the custom cardboard box and set up those incomprehensible cable things (AV cables + AC adapter + RF adapter), you plug the D-pad, pick up the cartridge, blow some air into it (you heard it makes the game run better, it doesn’t), insert it on the slot and press the power button. The screen flares up and you decide to play some game called super mario bros (there's some other game in the menu called duck hunt but who cares?).

Now, assuming you would have never played a game before, nor heard about it, or just waited a couple of seconds in the menu to watch the demo, you’d have no idea of what to do. All you can see is some sort of landscape with a little man-thing in the left corner. So you press the directional buttons and he starts moving, nice. Then you start exploring your surroundings: you try going to the left but there's an invisible wall stopping you, so you go to the right and the screen starts sliding as you go along. That's until some weird brown creature exits from the right corner of the screen, it walks straight to you, but you have no idea what to make of it, so you ignore it. That is, until it touches and kills your little guy, who dramatically falls off from the screen. Two lives left. Damn.

So you start playing again with your newfound knowledge that the little brown thing means bad news. This time you start experimenting with the right side buttons (B & A). You press the left one (B) but it has no apparent effect, so you press the right button (A) and, blam, your little fella jumps. So you advance confidently to where the brown thing is, but instead of walking right into it, you just jump across it. Phew. Now that you can actually advance you see a couple of floating blocks with question marks, curious. You jump on the first block and a coin comes out with no apparent effect, then you go to the next one and a mushroom thing comes out. It trails to the right until falling from the platform’s edge and changing direction by hitting a pipe, coming right towards you. You try to jump but the block above you won’t budge, so the mushroom reaches you and… your guy grows bigger? Nice, so this other mushroom actually helps you, though you have no idea how being bigger does any good besides looking cooler. So you keep advancing to the green pipes: the first one is small enough that a quick button press will get you above it, but the next one is taller and requires a slightly longer press. Ok, so the little guy’s jump height varies depending on how long you press the button. Looking beyond, below the pipe there’s one of the brown guys, but the distance seems just right so you can reach the pipe on the other side by jumping. So you jump while pressing as long as you can, but it isn’t enough and you land exactly atop of the brown guy, ouch. But wait, instead of dying you squash him instantly. Nice! So you can remove enemies by jumping atop of them. So you climb the next pipe and glance to the right and yep, more brown guys, two this time. But you know how to deal with them, right? You jump but this time you slightly misscalculate and land before the enemy. He touches you, but instead of instantly dying, your character gets… smaller? Of course! The mushroom thing makes you bigger, which essentially gives you one more life. But wait, did you forget there were two guys? Why is it that the first guy hurt you while the other passed through harmlessly? You see your character flashing and realize that after being hurt the game gives you a window of opportunity where your character is invulnerable so you can get away from danger. The flashing effect decreases gradually so you can naturally grasp on how much time you have left to reach a safe spot.

Of course, this was a platonic play of mario 1-1. You might as well figure out you can jump from the get-go by experimenting with the buttons. Or ignore the mystery blocks. Or successfully evade the power-up mushroom thinking it’s an enemy. Or never discover you can kill enemies by jumping on them. Either way, what’s important is not that you uncover every basic game mechanic straight away, but that the game allows you to discover new ways to interact with the world without holding your hand. It doesn’t need to show you, but subtly guides you to learn naturally by experimenting with the level design. It set the standard for what good level design ought to be like.

It’s a great experience, tailored specifically to the player. Every block, power-up and enemy is implemented based on how the player will interact with it in a specific way. And the designers can be sure of how you are going to interact with the world: mario can only advance to the right screen (besides pipes and vines), which makes for a mostly linear, manageable experience. As the player gradually familiarizes themselves with the levels, the element of surprise is gone and the experience, though entertaining, turns predictable, which is why even relatively simple AI can learn to master a mario level: it just needs enough attempts to find the best combination of buttons to get across an unchanging obstacle course.

This player-focused design philosophy also affects the game’s mechanics. Mario’s universe is relativistic: everything revolves around the player. Though each level may be loaded with a predetermined code for the entire level, its elements stay inactive until the player comes close enough to interact with them. This can be best exemplified by the spawning (and despawning) of enemies. In super mario bros, enemies spawn in a fixed spot, which is only activated when the player reaches a certain distance from it (which happens slightly offscreen). They may be allowed to exist offscreen as long as they stay close enough to the player character, but the moment they stray too far they disappear entirely. However, since the player can’t progress through the left in super mario bros, this mechanic is usually imperceptible. It’s much more evident in future games, like super mario brothers 2 and super mario world, which allowed players to backtrack and respawn enemies by returning to the left side of the screen. In these cases the games would recognize which direction the player came from and turn the enemies against them, even if most basic mario enemies are unable to automatically turn around to face the player (you could say their life is predestined from the moment they spawn). This is not because the developers did not have the means to stop them from respawning: though enemies always respawn in super mario 2, the map’s items do not, while in super mario world the enemies do not respawn if directly killed by the player since they reward the players with coins once killed (mario 64 would change this by allowing them to respawn without giving rewards beyond the first kill). In some games, like most metroidvanias, this respawning mechanic is crucial to ensure players can replenish health or ammunition dropped by enemies, which usually respawn after re-entering a room. Though the mechanic sacrifices diegetic verisimilitude for gameplay, it feels as if most developers either realized that having enemies spontaneously respawn on-screen would be weird or perhaps unfair. Except for the devs of ninja gaiden, of course, which famously (AVGN is still famous, right?) had the spawn zone set in the corners of the screen (which also meant you could despawn enemies by aggressively outrunning them and letting the corner-of-doom do its job).

One side effect of this is that most mario enemies are basically moving traps. They will completely ignore mario and – unless killed – proceed in their way, until they eventually stumble into a wall, another enemy, fall from a ledge or (more likely) are despawned by going offscreen.

But imagine a different super mario bros, where the player is not the center of the universe. Discard the linear map; have a branching cluster of rooms, with many entries to different worlds, whose acessibility would only be limited by player skill. Imagine if as soon as you loaded up a world it would immediately come alive in its entirety. Where every enemy, from the starting point until bowser’s castle, was constantly existing, even way beyond the reach of the player character’s screen zone. Furthermore, assume every one of these enemies had agency and competed for available resources in the map with themselves. Assume every enemy had a specific identity which the game would keep track of, including their death. Imagine if every one of these enemies had a relationship with your character and could remember how you treated them previously. Sounds utterly insane, right? Contradictory, deranged, self-defeating game design. Only a madman could dream of it. Well, these madmen are called Joar Jakobsson and James Primate; theirs is one of the most amazing games to be released in recent years.

Rain World is one of the few games I “recently” played (what do you mean it has been SIX YEARS!?) which made me think of a “copernican” approach to game design. To turn design postulates and preconceptions on their heads. To be unwilling to compromise originality for a set standard. To challenge what a game ought to be and a player's role in it. Whereas previous platformers/metroidvanias were supposed to be centered on the player as a protagonist, as a means through which the world is experienced, rain world lets its own world take center stage while the player feels like one singular detail in a vast mosaic.

Let’s return to old-schools games. You remember how in these games the existence of npcs depended on the current position of the player character? That even though every spawn point was set, they were only activated as the main character approached them? How enemies would disappear from reality if you stayed away long enough? Well, in Rain World's world (made up of major "regions"), as soon as a region is reached, each of its denizens is spawned and starts acting. The game keeps track of each individual creature, its relationship with other creatures and with the player. You feel as if the world is larger than you, as if it exists independently from you. So that even if you were to be gone it would linger on.

Sounds way too good to be true, right? And in a kind of way it is: one single room in rain world is composed of many objects and particles, besides the creatures which are really moving ragdoll clusters of different body parts with a programmed behavior which is based on their senses. You combine all this with the knowledge that rain world's regions consist of tens of rooms and you start wondering how the game specs do not require a nasa computer.

Like any good magic trick, rain world's is accomplished through a sleight of hand: everything in the current region map exists in two states: abstract and realized. The realized state is the game as you know it: with ragdolls physics, complex path-finding and particle effects. But much like in old-school games, the current position of your character affects how the world around them is rendered. The current room you're in is "realized", as are the neighboring rooms and typically the neighboring room's neighborings rooms (though if you are playing with very low configurations then only your current room is realized). But if you stay too far away the world becomes "abstracted": the possible map paths are simplified and objects are not rendered, though their position is stored. For abstract creatures, the body is not rendered anymore, the pathfinding and AI is simplified, as are interactions between npcs which, instead of being the result of complex ai choices in a dynamic environment with physic effects, are instead based on probability. [1]

So I guess it was all a lie, smokes and mirrors right? Let's not get too carried away: though creatures are abstracted, they are still existing entities: they migrate, do things and interact. Their current agenda is still simulated, even if in a very simplified way: if a wounded lizard starts retreating to its den and has to cross abstract space to do so, it (probably) keeps its current objective and the game simulates the action (probably, because though abstract AI is similar to realized AI, its parameters differ slightly, which may alter creature behavior). All of which is different from an old-school game, where other entities just stop existing altogether if you're far away from them.

One result of the fact that creatures are constantly moving behind your back is that rain world's "deck" is always being reshuffled. A rain world region is similar to an old-school map in that both have predetermined spawn points for npcs spread across them. But whereas old-school entities are only doing things for brief moments of on-screen existence after spawning, rain world's critters are constantly migrating ever since you enter a region. This gives rain world an uncertainty factor; even a veteran player who knows the map like the back of their hand does not know the current locations of creatures or which of them are alive. The fact that the next rooms are “realized” with all the complex actors and effects playing out means you always feel like you’re approaching a situation in media res, as an independent space with independent actors already set in motion. This forces the player to play more cautiously as the world always feels greater than them and beyond their control.

I mentioned creatures spawn and respawn in rain world, but how does that differ from a typical slide scroller? We already know the “region” the player is currently in is simulated, even if mostly in “abstract” state, so the critters start moving as soon as you enter. The starting point from where they move from is a den, the creature’s lair, where it retreats to if it retrieves food, is injured or if raindrops start trickling down. These dens are set in specific spots of the map (except for certain creatures like vultures, which have an abstract unreachable lair), which spawn or respawn creatures. Now, rain world is not a true ecosystem simulator like Species or Bibites, so creatures don’t have a real life cycle, reproduction and the possibility of going extinct. What happens is if a den is vacant, each game cycle will have a chance of spawning a critter in it (which is meant to represent the critter finding this lair and inhabiting it). Depending on the den stats, the next possible critter may be the same subpescies of creature or a different one. If the spawned creature belongs to a different subspecies then there’s a slight chance that the same process happens again with different creature types. Most often this means in-game dens go through different kinds of lizards/centipedes/vultures in what is referred to as the “lineage system”. One of the consequences of this is that if the player kills too many normal enemies, they may trigger the spawn of tougher kinds of enemies through the lineage system.

Another thing rain world is famous for is its critters. In a typical pixel art game you have a cluster of pixels making up a shape, a “sprite”, which are attached to hit/hurt-boxes. These pixel sprites are set to change position and swap to different sprites to give the illusion of doing a continuous action, like walking or jumping. Rain World looks like a typical pixel art game, but its entities are less like mario pixel sprites and more like Gmod ragdolls. Creatures have bodies made of different parts with physical characteristics like length and weight. If a creature wants to get somewhere, it needs to move these parts to get there. Since “animation” is procedural, all sorts of unexpected things may happen naturally: a creature may get stuck, trip over or accidentally fall from a ledge. All of which gives the impression of a real being struggling to use its body instead of an automatic slide scroll.

What sets all these body parts in motion is the AI. First off, AI perceives the game world through its senses: eyesight and hearing (depending on the creature). Eyesight works like a cone-shaped ray that the creature projects from certain spots of their bodies (lizards only see wherever their head is pointed, whereas centipedes are able to see on both ends of their body). The length and accuracy depends on creature type, the environment around, the specific spot of their vision and the regarded object type. Generally the eyesight is better on the center of view while being worse in the periphery (which means every frame you’re in the eyesight radius, there’s a lower percentage chance of being perceived in the periphery compared to the center). Its radius is limited by the environment type: aquatic creatures can see well in the water whereas terrestrial ones have their line of sight broken by it. Another factor is the regarded object: moving around as the player makes you easier to notice, whereas crouching gives a lower chance of being perceived.

Once a creature perceives something it has to identify it: should I ignore it, eat it or run away from it? Also, how many other things are in the room with me? Are they a threat in some way? Are they a resource? Yet, the creature's intent must be comprehensible and clearly communicated to the player. This is what Joar defined as "trickability"; the AI needs to have a complex enough set of faculties to appear "dumb", to be foolable:

"Trickability - This is the thing - the problem that needs to be solved. The idea is that you want the AI to be smart enough so that the player can trick it and get satisfaction out of having outsmarted it. When it comes to Rain World AI, this is the holy grail I'm pursuing. Every amount of complexity on the AI's part should generally fall back on this; this is why the AI is complex. An NPC that just moves towards a target on visual contact isn't smart enough to be tricked. RW AI needs to be smart enough to come up with a simple plan and carry it through, so that you can have anticipated that simple plan and act accordingly." - Joar [2]

This makes for dynamic gameplay as every interaction is the result of a plethora of factors. You can distract an oblivious lizard by throwing a rock and leading it to investigate the noise, but a lizard that has previously seen the player will try to reach their spot regardless of minor distractions. But if a vulture swoops down, it will try to hide in the nearest hole. Then, if it grabs you, it will try to take your body to its den, but it might be attacked by another lizard intending to do so same thing, or be harassed by a “neutral” animal, like a squidcada or scavenger, that views it as a possible threat, all of which might just give you a window of opportunity to escape from its jaws.

Every rain world creature is also an individual. In some cases it’s evident: many creature types have unique cosmetic features so that you can tell individuals apart. These individuals have a relationship value with you. Though initial value might define them as neutral or hostile, your interaction can alter their behavior: start killing scavengers and they will send death squads to take you down; feed a lizard enough and it will stop regarding you as prey and fight for your life. Besides the individual relationship, there’s also an universal one for species, so if you act nice towards one member of a species, it will slightly improve your standing with all of them (which fits more social animals like squidcadas or scavengers than lizards but I digress).

Remember when we were talking about super marios bros? Remember how it is tailored specifically to the player, how it’s meant to intuitively teach the player, which is made possible because mario’s world is very predictable? But if rain world undermines that predictability, then the brakes are off, fairness is thrown out of the window. You might die of a stray spear because a scavenger missed a lizard from the other side of the room. You might die because you crossed a pipe and there was a lizard waiting for you on the other side. Eventually, you accept it as part of life, just like a wild animal might die from lightning or a stray cat be run over by a car. What you can do is minimize risks, be cautious, don’t expose yourself. Act like a survivor.

This also applies to level design: old-school level design is made to adjust to the player. Every platform is placed to either help you or give you a specific challenge. But rain world levels are made to feel uncomfortable or inadequate somehow. There are all kinds of narrow structures or labyrinthic passages. You feel as an intruder who must adjust to the present circumstances instead of having each tile designed for your personal use.

This inadequacy also extends to the level's aesthetics. Though almost all levels are set in post-industrial ruins, their exact purpose is left beyond the player's comprehension:

"first and foremost is that we wanted to create a world as seen through the eyes of something slightly below human intelligence. the slugcat is smart enough to recognize that there is probably some purpose to the structures around it, but not comprehend their meaning. same with the use of "language", letters and characters, etc. the idea is to create a kind of dreamlike atmosphere where the player projects meaning into the structures they see, creating their own expectations about what they might be for and where they might lead, and we play with resolving those expectations quite a bit in the region / world map layout.

similarly, we wanted any specifics about the previous cultures of rain world to remain vague. the player might assume "human" by default, but thats not necessarily the case and we dont want to feed into that reading too much. whats important is that they were there, they built these structures, and now theyre gone.

also important is that the slugcat operates among the in-between spaces of these industrial ruins, like a rat in the subway or a squirrel on a rooftop. you'll sometimes see those overtly designed I.M. Pei vistas, where the structures seem to line up in some grand plan, but most of the time its a ditch filled with garbage and a pipe sticking out, or the crumbling basement of a building. so even if it werent some fantasy alien world we were working in, i think we'd still keep the overtly human signifiers to a minimum." - James Primate [3]

"Yep, we have thought about more recognizable architecture, but we gravitated away from it. For a few reasons, the main one definitely being that one James mentioned. If you can recognize too much in the environment ("That there's a fire post", "that there is a roof drain pipe") the environment wouldn't feel alien anymore. As the creature you play is supposed to not really grasp what's going on in the world around it, the player should be in on that impression. We are going for a thing that's more abstract or expressionistic - what's displayed on the screen is supposed to serve an emotional narrative, and that emotional tone has "not quite understanding what's going on" as a very important center piece." - Joar [4]

Another important game mechanic is "karma". There are ten different karma levels. You can increase your current level by surviving a “cycle” or lose a level in case of death. Crossing each region requires going through a "karma gate" (imo, one of the most immersion breaking features), which blocks you if your karma is too low.

If you read the game’s lore (or already have since this is spoiler tagged), you can see karma is tied to its history: every living being is stuck in the state of samsara, a cycle of eternal rebirth, much like the player. Though ancient monks could reach moksha/nirvana through asceticism (the hard way), the slightly less ancient industrial civilization discovered the world’s “core” to be made up of a sort of anti-matter substance known as “void fluid”, which can be used to ascend automatically (as long as your karma level isnt too bad) and is how you can achieve the game’s legit ending.

Now, a game having its respawning mechanic as a diegetic lore feature (e.g. cosmology of kyoto, planescape torment, dark souls, undertale) is nice but hardly original these days. Rain world’s lore is interesting trivia that may be discovered or ignored at the player’s discretion. Which begs the question: was this major mechanic implemented because of the lore or was the lore at least partly built around it (partly, since you could have samsara without karma levels/gates). Let's hear the devs:

"The karma system is the solution to a problem we noticed when connecting the entire world. It shows that what was driving player motivation wasn't survival, but exploration - the treat you're looking for is seeing new environments and new creatures (which is natural as humans are curious). This is all good, but it incentivised a pretty destructive play style. Instead of trying to survive, you would throw yourself out into the world as far and quick as you could over and over, not caring if you survived as long as you had the chance to reach new areas. The key problem here was the not caring if you survived part - that is very contrary to the mood we wanted to create, which should be all about survival. We're making a survival platformer after all, and want to create the feeling of being an animal in an eco system - which should be all about staying alive. Also as James said, players could move very quickly through the world just blazing through the carefully crafted environments and situations. Basically, a way too high movement to survival ratio.

Another problem was that any cycle that you didn't manage to reach a new shelter felt like a complete waste. I actually had one person on a convention floor, that had after much effort managed to make it back to the starting shelter with enough food, ask me "what did I gain from that?"

We needed to skew the main incentive away from movement and towards survival, making survival the main objective and movement the secondary. The solution we came up with was gating movement with survival - if you don't survive, you don't get to see new areas. A nice side effect of this is an automatic smoothing of the difficulty curve - you're only let into the next region when you're able to handle the one you're in, making sure that you don't randomly end up on too deep waters without any way of making it back." - Joar [5]

The karma system usually succeeds in this role. The fact that I could not only lose my life, but my karma level, meant I would act even more cautious in the ecosystem. In a sort of way, it made me value my “life” somewhat like a real animal would, even if not to the same degree. Gatekeeping new players from certain regions is also a good idea (no one wants to go from outskirts to drainage system in their first playthrough). But all that happens when the karma system is at its best; sometimes it acts as a double-edged sword, forcing you to spend entire cycles “karma grinding” and stalling the sense of freedom you get by exploring the world at your own rhythm.

Another of rain world’s forte is the music. Besides some genuine bangers in the soundtrack (bio-engineering, kayava), it’s also worth of note for being procedural in its own way: the game’s threat music will adapt depending of the danger level you’re in, so the proximity or greater number of predators will add a greater number of instruments to the score. All of this is meant to immerse the player in the slugcat’s perception of reality:

"When I first saw rain world, i had a very very clear concept. for me, a huge strength of the game is your emotional connection to this lone, cute white little creature in this crazy death filled environment, and i wanted the aural experience to amplify that. sound effects would essentially be extensions of the emotion and instinct of the character; a subtle "fly sense" when prey is nearby, an unsettling feeling when lizards are close, an impending sense of dread when the rains begin to come. Even much of the music was to be an extension of the character: the beating of the heart, blood pumping through veins, hunger in stomach, etc." - James Primate [6]

Video games are often described as a means of escapism, with the player's goal being to run away from a bitter/boring reality to a more exciting fantasy. But I feel that most tell very unconvincing lies, their cracks are too easily seen. Whenever I load rain world the feeling is different: everything seems to move regardless of my presence, the world presents itself in its grand indifference to my pettiness. And although I know its tricks I am still encaptured by the mirage.

"In the end I think my goal is to create the illusion that these things are alive. I'm fairly certain that I share this goal with most people making games, as it's an important factor in immersion. Working with behaviour to create that illusion is a path I think is worthy of experimentation - and rain world is my take on such an experiment." - Joar [7]

_______________________________________
[1] https://forums.tigsource.com/index.php?topic=25183.1860
[2] https://forums.tigsource.com/index.php?topic=25183.1880
[3] https://forums.tigsource.com/index.php?topic=25183.msg1213832#msg1213832
[4] https://forums.tigsource.com/index.php?topic=25183.msg1213832#msg1213832
[5] https://forums.tigsource.com/index.php?topic=25183.msg1232162#msg1232162
[6] https://forums.tigsource.com/index.php?topic=25183.720
[7] https://forums.tigsource.com/index.php?topic=25183.msg947694#msg947694

Reviewed on Jun 17, 2023


2 Comments


9 months ago

characterising the way Rain World diverges from typical player-centric game-design as "copernican" is a perfect fit, really good stuff.

9 months ago

Thank you.

Yeah, I think it's a pretty interesting way to view the game as long as we don't get too carried away. In the end of the day the developers had to find balance between creating a world which seemed (seemed being the keyword here) independent from the player and making a functional metroidvania.

Still, it's an astonishing endeavor for a single-player game. The fact that the devs decided to sacrifice "fairness"/processing power for higher verisimilitude is insane, even for the indie scene.