• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

Rain World - Hunt prey, evade predators, survive as a Slugcat (March 28th, PS4/PC)

Status
Not open for further replies.
Wow. . . It got even better. I have been keeping an eye on Rain World and I have to say the improvements are impressive.

That freaking vulture gives me the creep. How do you even fight the damn thing. Wow.
Let me tell you, the vultures are terrifying. The thing the devs implemented with the shadow sweeping across the screen first is genius, since it acts as a warning and has you running for cover in terror since you know what's coming. You think the lizards the biggest threat until a vulture swoops down and snatches up a lizard like it's nothing. Makes for some really intense moments
 
New moves!

jQDJZ.gif


This is basically a more daring alternative to the backflip for when a lizard is between you and where you want to go. The main difference is that where the backflip takes you over the head of a lizard chasing you from behind, this is useful for getting past a lizard you're running towards. The game needs more moves that aren't jumps, as basically all you've been able to do so far is jumping in different ways, and I hope this one can start to fill out that niche.

Then there are also a few new moves for the maze parts of the game. Originally Rain World was supposed to be 50/50 platforming and crawling in mazes, but we gravitated away from that as the platforming was simply more fun. Part of the reason for that was probably that in the mazes you had nothing else to do than move in 4 directions. The game will never go back to 50/50, but James wants to re-introduce a bit of maze crawling for one or two of the regions, and hopefully this new move set will make that more exciting. Testing in a room that's only narrow corridors with a bunch of lizards has yielded hopeful results - it's a fundamentally different game, with a lower tempo and more focused on sneaking and thinking ahead, but it can get pretty tense as well!

Mp5G.gif


First up we have two vertical moves. Hitting up+jump will make the slugcat heave itself upwards quickly a few tiles, after which you face a bit of a slowdown penalty, which is supposed to make the average vertical speed somewhat break even. This is supposed to be useful in situations where you quickly want to get up and around a corner to get out of the field of vision of some creature. It is also useful when getting up to a ledge where you can switch to running or some other "non-crawling" means of locomotion, because when switching you can sort of bypass the penalty and get a little speed boost. The other move is the slugcat just stops pressing against the walls and drops down a chute. You trigger it by pressing down+jump, and the slugcat will continue falling for as long as you hold the down button. When adding NPC hearing (which should happen soon!) you should probably make an audible sound if you hit the bottom of the chute without grabbing on to the walls first, as a risk-reward balance for the speed gain you get.

PBW9G.gif


Then we have a much requested feature - the ability to turn around in a narrow corridor. You do this by hitting the opposite direction button + jump, or up+jump if you're upside down in a vertical chute. I've intentionally made this move super awkward, as it is actually sort of too cramped for the slugcat to move around in there, and you shouldn't go butt-first into corridors to begin with  >:D That being my main philosophy haha, I can still totally see how there are some situations where you're alone in a room with no lizards, and end up facing the wrong way in a corridor that goes on foreeeeeever, and it's just tedious. So here it is, at least it's possible now.

KOGax.gif


Last one is a horizontal "shuffle", triggered simply by pressing forward+jump. This one takes some skill though - if you just press jump at any place in a horizontal corridor, you get a pathetic little forward trust followed by a slowdown penalty that makes your net speed pretty much not break even. However, if you have solid terrain behind you as you hit the button, you get a good forward momentum with just a small penalty at the end. Basically the slugcat needs a solid block to push against. This one is especially useful when coming around a corner into a horizontal corridor
 
New look at the Cicadas:
An insane amount of work went in to this, and I'm pretty much done, but probably not entirely done. We have folding wings, grabbing tentacles, etc etc etc ...

Interacting with player:
vJhCA.gif


Hanging out:
NegligibleRequiredFairyfly.gif


Slow motion flying:
OijYd.gif


Cicada jumping:
QGJIV.gif


And a bonus one, white lizard catching a cicada:
0kGi7.gif
The cicadas are the only RW creature so far that is explicitly gendered. I won't decide on which is male and which is female, but they come in two varietys, let's call them gender A and gender B. A colony has about 50/50 of them, unless we decide to change that because of game balance stuff. A are white and a bit larger, and stay to protect the colony during a cycle. They'll hunt bats that are stupid enough to actually enter the cicada hive, but won't go out of their way. B are black and a bit smaller, these are the ones that migrate to bat swarming areas to catch food. These are likely the ones you'll encounter first, as they occur out and about contrary to just inside the hive.
Here was the original sketch of the cicada
 
A look at dynamic relationships:
This stuff is all pretty much just logistics. The cool stuff is an "internal state" for each tracked creature that is kept inside the RelationshipTracker. An internal state is a mini data structure which keeps track of some relevant stuff. Let's make a simple example: I'm a cicada - I want to cause a slugcat trouble. Unless the slugcat is holding a spear, in which case I want to get away.

So the slugcat is on the ground, no spear, and its representation in my cicada head is comfortably within my AgressionTracker. Now the slugcat runs over and picks up the spear. Now the thing is that we're doing this thing where RW creature don't know what they can't know. So say that the spear and the slugcat are out of my sight as the weapon is equipped. Every frame I (the cicada) ask my RelationshipTracker what relationship I have to the slugcat. The RelationshipTracker can't access the data about whether or not the slugcat is holding a spear directly, it has to go ask the internal state representing the slugcat. The internal state has a bool which represents the slugcat holding a spear or not.

As I still think that the slugcat is unarmed, I'll continue to go after it. Until I come around a corner - then I suddenly have a visual on the slugcat, and the internal state is allowed to correct itself. The bool changes, and with this new information the nature of our inter-creature relationship shifts. The RelationshipTracker takes care of it, moves the slugcat to my ThreatTracker, and I can start scramming.

That's the theory, now let's take a look!

internalState2.gif


So notice how the cicada is harassing the player, until the player is armed, then it decides to get out of there. The player then goes underground and actually throws the spear and is not armed any more, but because the cicada can't see this it's state of fear is unchanged. The next time it saw the player it would reconsider. This is the sort of stuff that makes me all warm inside

I have this policy that I'll tell what I've done, not what I hope to do, but you can probably imagine the possibilities yourself. Social stuff such as befriending creatures, angering creatures, creatures reacting dynamically to different situations like trying to save their friends from the jaws of a lizard, etc.

And here's the nitty gritty of how it works:
Basically in the old set-up, I wrote the AI with a sort of limited idea about the sort of interactions I'd want to implement down the line. I though of creature relationships as static, one always eat the other, the other always flee. In that system it made sense to make it so that upon spotting another creature the first time, the AI takes a look at the relationship to that creature, and hands it off to a dedicated AI module to take care of it. If the relationship is "Eats" the creature gets sorted into the PreyTracker, if the relationship is "AfraidOf" it's dedicated to the ThreatTracker, etc.

This system is very limited, so what I've been doing today is writing a RelationshipTracker, which re-evaluates the relationships to other creatures frame-by-frame, and if the relationship changes it sorts it into the correct module. Sounds easy, but there's a lot going on. Basically each module lives its own life, deleting and shuffling the creatures it keeps track of as it wants. So I have to make sure that if a relationship is moved, it's properly removed where it was, properly added where it should be, and so on. The good part is that this has solved some other problems that were hanging around, such as creatures sometimes forgetting about threats they haven't seen in a while and then being unable to add them back, and the like.

JgqpL.png


The main tracker in a RW creature's AI is simply called the Tracker. This one basically keeps track of what creatures I know of, and where I think they might currently be (a notion that might be correct if I'm currently looking at them, and various degrees of incorrect if it was a while since I saw them). Each creature I know of has a representation in the Tracker, and this is sort of the UR representation for that creature, other modules refer to this one when thinking about a creature.

Other trackers such as PreyTracker and ThreatTracker has a reference to the creature representation in the Tracker, as well as some other module-specific data regarding that creature, such as how yummy it looks or whatever might be relevant.

The relationship tracker keeps goes through the representations in the Tracker, asks the AI what relationship it currently has to the creature in question, and if necessary moves stuff around to where they're supposed to be. For example, if I am only hunting the slugcat within a specific area, but the slugcat just exited that area, the slugcat representation needs to move from my PreyTracker to some other module.

The system seems to be working, the only thing that's needed now is to migrate it to the vulture and lizard as well. The other creatures use simpler AI's that won't really need this level of complexity.
 
T85j2.gif


Note: not a scene from the game, just a test of coloration tech.
Rain World has been a rather monochrome place, and it will continue to be so. However, we want to be able to spice up the occasional room with some color. This editor allows you to place art that is rendered into the environment as two dimensional color on the surfaces of the objects in the world.

Still a few things to figure out. For example, the slight oily effect at slanted surfaces seems to have disappeared, I'll have to find where it went. Another challenge is to make the system backwards compatible. I want the shader to be able to process a level from the pre-decal era and just not render any decals, rather than being messed up somehow. If it can't do that, we'd have to re-render all the 200 or so rooms we currently have, which would be a bad spot. Seems like I'll be able to avoid that though
 
A new soundtrack clip
Imagine you are being hunted through the deep darkness by some huge creature while something like this is playing in the background:
https://clyp.it/jjn25egr

Plus info on how Rain World's music evolved and the current state of the game's audio
One thing thats central to any self-respecting professional audio fascist is aesthetic consistency. For the lingo build, I had a pretty tight concept built around the idea of Rain World as more of a quick, "retro pixel platformer" (remember when people did that?), and so limited the tools used for the audio and SFX to what hardware would have been used for 16bit games. At this point "chiptune" is more of a buzzword and implies a genre more than anything else, so i'll avoid that and just say that the tools were simple chip-based additive/subtractive synthesis, 2 operator FM, basic wavetable / formant synthesis, and some basic sample / PCM stuff. Nothing that you wouldn't find in a classic SNES/Neo Geo/Sega CD game.

But that was 2 years ago! The game is now modern and sexy with shaders and dynamic lighting and who knows maybe particle effects, so limiting the audio toolkit to 90s tech just doesn't fit any more, and would be totally arbitrary. I had been anticipating this a bit the past few months and have been experimenting, filling out the sound profile with both hi-fi synthesis elements and manipulating junk audio sources (you might recall that track i posted built from a conversation Joar and I had at PAX), trying to extend the palette in both directions. Might still have to cut a bunch of that old stuff tho!

Now, the junk audio thing is funny, because the reason I started messing with that in the context of rain world was because of the SFX samples that Joar was using before I joined the project. As he tells it to me, he just made them with his laptop mic, recording moving papers around and slapping rulers to the table. The resulting sounds are a lot of messy distorted stuff, indistinct white noise elements and compression artifacts. AKA perfect for Rain World! I wouldn't want to use them raw, but if balanced, eq'd right, run through some nice filters and placed in the proper context, it sounds pretty cool. So I've moved to incorporating use of manipulated junk audio throughout the overall audio concept, and am pretty stoked with the results. Imagine you are being hunted through the deep darkness by some huge creature while something like this is playing in the background: https://clyp.it/jjn25egr
Not all the music will be like this of course, but in the right context it creates a pretty amazing mood imho.

I dont think Joar was totally on board with this use of his samples initially, but audio is a really interesting medium. if you know what you are doing, you can basically make anything out of anything else. For instance, here is what a korg product rep can do with 1 sample on a cheap hardware sampler in 6 minutes: https://www.youtube.com/watch?v=THImd641WXk

So basically this entire post so far is me justifying that, yes, I, a "professional sound designer", will be using Joar's laptop mic recorded crumpled paper and ruler thwack sounds as audio source material, and its for the sake of aesthetic consistency.
So on to implementation! Past day or so was spent familiarizing myself with Joar's audio language and establishing a new workflow. Like the rest of my life right now, it is a horrific mess of text files:

4XIlrKJl.png


But as hellish as it looks, I am super happy with the results so far! My gameplan was to first do an updated version of the Lingo SFX implementation for some practice with the language and to get something to work from. I had expected that to take at least until the weekend, but managed to get a basic sound-set that already sounds significantly better than that in just the afternoon! Super encouraging results.

Anyway, I hope that wasn't TOO boring. The actual audio work itself is literally days of me moving knobs around, so that would be even worse to read! I'll post some video of this rough audio build tomorrow when I have all the bat sfx triggers sorted out, and post updates on how that evolves through to a more final version.
 
New species: the lantern mouse
New creature on the way! This is a backer suggestion as well - the lantern mouse. The lantern mouse is a creature smaller than you that is mouse-like and glows. It lives in the dark regions, and hang from the ceilings trying to attract flies with its glow. They work as a light source in the dark regions, and if you're skillful you can catch one and carry it with you in the same somewhat awkward manner you can carry a cicada or a snail.

USWi5.jpg


Sooo, hanging from the ceiling... At first I thought I was going to be able to skip all the rope physics stuff, and just have it lose it's thread(tail? Spider web? Well, the dangly thing) if the thread hit terrain. However, it turned out that the rope hits terrain ALL the time, especially as these fellas are not wall climbers and therefor actually have to secure their ropes somewhere close to terrain. So, rope physics it is.

I'm not doing anything super fancy, just want something like the ninja rope in worms - basically whenever it hits a corner that corner becomes the new attachment coordinate until the previous attachment coordinate is visible again. Slowly but surely I'm getting there, through horrible hacks:

ZKavq.gif
 
With the new editor each region looks better than the last.

I can't wait to check out their latest creature, as I've got a feeling the gifs for the lantern mice are going to look amazing.
 
Sometimes I reread this whole thread and look at all the material as if I haven't seen it before. I didn't get here in time to be a backer, but I am absolutely going to be a day-one buyer when it hits Vita. 8-Bit has been the indie favorite for a while now, but 16-Bit is my true love.

I hope I love your game even half as much as I expect to. I can't wait for a release date.
 
Sometimes I reread this whole thread and look at all the material as if I haven't seen it before. I didn't get here in time to be a backer, but I am absolutely going to be a day-one buyer when it hits Vita. 8-Bit has been the indie favorite for a while now, but 16-Bit is my true love.

I hope I love your game even half as much as I expect to. I can't wait for a release date.
Oh, I'm not the dev. Just an avid fan.

Devs are super active over here
http://forums.tigsource.com/index.php?topic=25183.0
I copy and paste their updates from the devlog
 
ImpressionableImpishIchthyostega.gif

Did a little touching up of the charging animation - I wasn't happy that the entire mouse turned monochrome for a moment, so instead I now have the eyes turn white first so there's always some color differences going on.

PoliteRectangularHarrier.gif

Carrying a mouse as a light source.

DishonestIncredibleCanine.gif

Also, mice dying :( Felt pretty horrible of course, but had to be implemented. A dead mouse will continue glowing for some two minutes, so if you're that kind of person you can hit it with a spear and get a light source that fades away, but on the other hand won't run if you drop it.
 
New details on the dark region
Starting to think about assets for the new dark region. This one we had to think quite a lot about, because the darkness has some particular qualities. Basically it's two conflicting factors. On one hand, the more little details, the better the shadows look. "Porous" tiles with lots of holes and stuff look good in the second layer, because you get to see the shadows move around in them which really displays the volume.

On the other hand, the darkness makes the level way harder to read. Mostly this is because the darkness breaks up the simple rule the rest of the game follows - dark = close, light = far away. Usually you can look at a room and assume that the dark parts are terrain you'll collide with, and the light parts are backdrop. The light sources in a dark room however are in the room - and in order for that to work visually I had to make it so that stuff in front of the light source were darkened so that they would look back-lit. This means that with the light source we don't just have a dark-light gradient, we have a dark-light-dark gradient.

This works in most cases, but it is admittedly not quite as clear as the ordinary palette. Also, it gets way worse the more little details there are, and the less solid the tiles. Soooo, the same factors that made the light look good.

My idea for a solution to this is that we'll be rolling with big, chunky blocks, but on the blocks there are protruding patterns that the shadows can play with. I think this will get both birds with one stone - because the general contours of the blocks are big and square you quickly get an idea of what's terrain and what's not, but if you look closer inside those big blocks of color there are smaller variations of shadow play.

Here are some sketches:

AWlb6.jpg


And here's a "final" (huge quotation marks there, everything always end up hundreds of kilometers away from the "final" sketches) concept:

2USBl.jpg


Basically the area will consist of of big boxes, that are somehow bolted together with huge clamps. These clamps will run on the exterior of the boxes, and leave shadows. Then the boxes themselves will have a patterned surface, that will also get some shadows going. I'm currently mocking up some tiles, let's see how it goes!
 
This looks incredible. Definitely will keep an eye out. I've heard this game utilizes some form of persitent AI, if that's the case, I'm in!
 
This looks incredible. Definitely will keep an eye out. I've heard this game utilizes some form of persitent AI, if that's the case, I'm in!
Not sure what you mean by persitent. The AI is crazy complex, and the ecosystem will interact outside of your presence so it's common to enter a room and see lizards fighting for dominance or vultures hunting for food.

I'll see if I can find some more of the dev's breakdowns of the AI. Might take a while, the devlog is 185 pages
 
Not sure what you mean by persitent. The AI is crazy complex, and the ecosystem will interact outside of your presence so it's common to enter a room and see lizards fighting for dominance or vultures hunting for food.

I'll see if I can find some more of the dev's breakdowns of the AI. Might take a while, the devlog is 185 pages


Sorry, I meant "persistent". But from what you have described, I can definitely say that is very much the case.
 
Sorry, I meant "persistent". But from what you have described, I can definitely say that is very much the case.
Here's two recent posts the devs wrote about the game's AI
Dynamic relationships! What is this thing I'm doing? Basically in the old set-up, I wrote the AI with a sort of limited idea about the sort of interactions I'd want to implement down the line. I though of creature relationships as static, one always eat the other, the other always flee. In that system it made sense to make it so that upon spotting another creature the first time, the AI takes a look at the relationship to that creature, and hands it off to a dedicated AI module to take care of it. If the relationship is "Eats" the creature gets sorted into the PreyTracker, if the relationship is "AfraidOf" it's dedicated to the ThreatTracker, etc.

This system is very limited, so what I've been doing today is writing a RelationshipTracker, which re-evaluates the relationships to other creatures frame-by-frame, and if the relationship changes it sorts it into the correct module. Sounds easy, but there's a lot going on. Basically each module lives its own life, deleting and shuffling the creatures it keeps track of as it wants. So I have to make sure that if a relationship is moved, it's properly removed where it was, properly added where it should be, and so on. The good part is that this has solved some other problems that were hanging around, such as creatures sometimes forgetting about threats they haven't seen in a while and then being unable to add them back, and the like.

JgqpL.png


The main tracker in a RW creature's AI is simply called the Tracker. This one basically keeps track of what creatures I know of, and where I think they might currently be (a notion that might be correct if I'm currently looking at them, and various degrees of incorrect if it was a while since I saw them). Each creature I know of has a representation in the Tracker, and this is sort of the UR representation for that creature, other modules refer to this one when thinking about a creature.

Other trackers such as PreyTracker and ThreatTracker has a reference to the creature representation in the Tracker, as well as some other module-specific data regarding that creature, such as how yummy it looks or whatever might be relevant.

The relationship tracker keeps goes through the representations in the Tracker, asks the AI what relationship it currently has to the creature in question, and if necessary moves stuff around to where they're supposed to be. For example, if I am only hunting the slugcat within a specific area, but the slugcat just exited that area, the slugcat representation needs to move from my PreyTracker to some other module.

This stuff is all pretty much just logistics. The cool stuff is an "internal state" for each tracked creature that is kept inside the RelationshipTracker. An internal state is a mini data structure which keeps track of some relevant stuff. Let's make a simple example: I'm a cicada - I want to cause a slugcat trouble. Unless the slugcat is holding a spear, in which case I want to get away.

So the slugcat is on the ground, no spear, and its representation in my cicada head is comfortably within my AgressionTracker. Now the slugcat runs over and picks up the spear. Now the thing is that we're doing this thing where RW creature don't know what they can't know. So say that the spear and the slugcat are out of my sight as the weapon is equipped. Every frame I (the cicada) ask my RelationshipTracker what relationship I have to the slugcat. The RelationshipTracker can't access the data about whether or not the slugcat is holding a spear directly, it has to go ask the internal state representing the slugcat. The internal state has a bool which represents the slugcat holding a spear or not.

As I still think that the slugcat is unarmed, I'll continue to go after it. Until I come around a corner - then I suddenly have a visual on the slugcat, and the internal state is allowed to correct itself. The bool changes, and with this new information the nature of our inter-creature relationship shifts. The RelationshipTracker takes care of it, moves the slugcat to my ThreatTracker, and I can start scramming.

That's the theory, now let's take a look!

internalState2.gif


So notice how the cicada is harassing the player, until the player is armed, then it decides to get out of there. The player then goes underground and actually throws the spear and is not armed any more, but because the cicada can't see this it's state of fear is unchanged. The next time it saw the player it would reconsider. This is the sort of stuff that makes me all warm inside

The system seems to be working, the only thing that's needed now is to migrate it to the vulture and lizard as well. The other creatures use simpler AI's that won't really need this level of complexity.

I have this policy that I'll tell what I've done, not what I hope to do, but you can probably imagine the possibilities yourself. Social stuff such as befriending creatures, angering creatures, creatures reacting dynamically to different situations like trying to save their friends from the jaws of a lizard, etc.
Working on vulture-lizard interaction. Here's a gif, there's quite a bit going on here so I'll do some explaining below ~

pVyHQ.gif


What the heatmap shows is the anticipated threat level for each tile in the lizard's threat tracker (note that I don't store this data, I generate it on the fly. So the framerate drops quite a bit with this visualization, but when the AI uses it it doesn't ask for every tile, just for relevant ones).

The lizard is inside the little box, which is open in both ends. This box is a sort of temporary shelter, because the vulture can reach in there with its neck - but it's juuust short of being able to reach the whole width of the box.

Basically the lizard merges two sets of data to get this map, the distance to the threat (naturally) and an Accessibility Map. See how the tiles close to terrain are bluer? And the tiles inside the box as well? That's one of the pre baked AI maps, the Accessibility Map, for the vulture. It allows the lizard to understand that inside the box is more safe than outside it. As you can see it's staying in the box, although nervously.

Also you might notice that all terrain has some bluer tiles around it - that's just because the vulture is big and close-to-terrain tiles are considered inaccessible to it for that reason. This might actually need fixing, because just because the vulture's center of mass can get close to a floor doesn't mean its neck is unable to.

The amount with which the Accessibility Map weights in on the final threat map scales with distance. You can see this particularly clearly when the vulture moves down towards the lower-right platform, the "safety" of the tiles surrounding the platform is removed.

This is the same effect that also finally drives the lizard out of the box. When the vulture does its peek-a-boo over at the left side, it's much closer and the safety of the box interior is disrupted. Now the danger gradient inside the box is steep enough for it to be worth it to dash for the other exit. So the lizard goes for it and heads for the room exit up in the corner instead.

You can also see how the lizard's perception of the vulture's position is only updated when there's visual contact, which is why the heatmap is static while the vulture is moving below the box. In actuality the map shouldn't be still during that time, it should move with a Ghost of the vulture that the lizard tracks. But right now the Tracker has some problems with creatures that can move on big 2D planes - it considers each tile 4-way branch and immediately spawns up ghosts to follow all of them, hits the ghost cap and makes the ghosts stop. So it becomes more of a simple "where did I last see the creature" kind of thing. I'll get around to it.
 
I want this game so bad, probably my most anticipated game next to Witcher 3, and a lot of that has to do with them both utilizing a complex ecology of creature AI that operates independent of the player's actions/location, though RW seems to be much more detailed in that regard. Thanks for continually posting the dev updates here Badass, always makes me more excited checking on this thread once in awhile to see the progress being made :)
 
I want this game so bad, probably my most anticipated game next to Witcher 3, and a lot of that has to do with them both utilizing a complex ecology of creature AI that operates independent of the player's actions/location, though RW seems to be much more detailed in that regard. Thanks for continually posting the dev updates here Badass, always makes me more excited checking on this thread once in awhile to see the progress being made :)
No problem! Been following the game for two years, it's been awesome seeing the AI and creatures develop

I'm a backer so I've played the alpha, and let me tell, the devs have totally succeeded so far with the creature AI. You'll enter a room and see a lizard fighting either, maybe another just hanging out and then a shadow sweeps across the screen and a vulture descends from above, snatching up a lizard like it's nothing.

One of the coolest thing is each lizard's appearance is procedurally generated so no two lizards look alike. I tend to root for the smaller ones
 
Devs making important progress on turning the seperate regions into one interconnected open world
Region gates technically working, and I have connected the regions we already have. Still a million things that are wonky, a million things that should be added, and approximately 400 000 things that need visual polish or to have their graphics be created, after which they too will need visual polish. However, large leaps!

Moving around the world between regions makes you realize it's really, really big already. I've been doing one Rain World tour of the regions we have without actually running through it, just jumping from room to room with the dev tools, and it still takes me like, 7 minutes to find my way through the maze. With enemies in, actually having to run everywhere and do the platforming challenges, and the rain cycle to think of, I think just getting from one region to the next will be quite an epic endeavor, probably spanning over several hibernation cycles.

Still, we don't know a lot about exactly how it will play just yet - I literally hooked up the regions a few minutes ago. Hopefully this is where we will start to get a better grasp of what our game actually plays like though. My first impression is that it feels pretty different with the large connected world, which is cool!

Plus this interesting note:
Just did a run of the quickest direct loop around the 6 finished regions (no side paths), with no creatures or rain and it took me, their creator who knows every shortcut, like 35 minutes O_O
Remember the final game is planned to be 12 regions
 
Region gates!

PhHwj.gif
vaq4r.gif
gacAS.gif

The central gate mechanism will look pretty much the same for all gates, but out to the edges there will be some room for James to add a little bit of individual flavor, and maybe hint at the regions the gate is bordering to. This one is Vanilla though, why it's just plain metal on the sides, real gates bordering to regions might look a little more interesting in those areas.

yu55GRu.jpg

Also, James and I have been talking about how these are going to work gameplay-wise a little bit. You might notice the water cistern up top - it's more visible when it's empty after you have passed through the gate

The gates are powered by the water in that cistern, is the idea. It's not visible in the gif because I had to crop it, but there is always water running as the doors are working to make this seem plausible. The gameplay implication of this is that you can only pass through a region gate once per rain cycle. You can technically go back to the same region twice, but you'll have to circle around and find some other way in - each specific gate only opens once. When the rain returns the water replenishes. The reason why we think this could be an interesting game mechanic is because it somewhat increases your stakes. When finding a new region you will naturally experience the excitement of exploration from entering a new area, and the idea is that this will be enhanced by making the experience a little bit nervous as well. Because with the gate shutting behind you, you don't have the option to just dip a toe in the new region and opt out if it wasn't to your liking. Instead you will have to find food and shelter (or at least a way back) in the new alien region. Most of the regions actually have a shelter and an easily accessible swarm room close by the gate, but maybe not all... So walking through one of these gates will really be equal to throwing yourself into the unknown. Hopefully this nervous feeling will be enhanced by the 40 seconds of gate mechanisms clicking and clacking and you being steamed like a dumpling, haha!

I'm really happy region gates are coming together, but there are still a couple of technicalities to be taken care of. One thing I have no idea how to solve is what to do with a creature that followed you into the gate room but ended up on the outside of the gate. Then we have a realized creature with an abstract representation that should actually be hanging out in another region from the room which the realized creature is in

Going to be real interesting how I solve that one!
 
Rain World's going to be at E3!

And the devs have been sharing some very tantalizing hints about a new creature
I'm making a creature that I'd rather keep silent about as I think you guys will want to discover it yourself. It's a darkness dweller, and it's REALLY scary
and regarding this creature... not to overhype it or anything, but damn it is LITERALLY my nightmare. as in, i was telling Joar what i hated most in the universe, and... then he goes and sketches it and builds an even more horrifying version in game. *shudders*

not sure if ive ever seen something like this done from a technical standpoint either. pretty cool, pretty cool.
 
Then > Now

9Vo68.gif
RequiredEquatorialBrocketdeer.gif


We have been talking for a long time about how the black death screen doesn't really hold up to the visual/interactive standard of the rest of the game, so today I finally got to work on some actual in-game death rain.

What I've got going so far (aside from the start of a rain shader) is basically a texture that shows what parts of the level is sheltered under terrain, and doesn't render the rain there. Basically the texture is the same size as the room's tile matrix, with pixels that represent solid tiles or tiles beneath solid tiles as black and others as white. The shader then grabs from that texture, and my usual eternal enemy the automatic smoothing of scaled-up textures actually helps me out this time by softening the edges a bit.

A concern is the water splashes going through walls, as you can see... I'll have to figure something out with that. Maybe instead of having a radial splash I could have a directional, and aim it upwards from the surface being hit.

There are a million tricky design choices that go into this. I was hesitant to even get started on it for a long time because the plants and wires are static, and it feels weird that they don't move in a situation like this. For that reason I still want the rain to be pretty binary - on or off - instead of a gradual transition, because if the rain is intense enough to mess up the image completely you are less likely to notice the adamantium ferns standing strong against the pounding.

On the other hand, we want to have some rain-related gameplay going on, fleeing from rain and the like, and that speaks for a more gradual approach where the rain can be there, but you aren't instantly dead.

Currently my idea is that the rain first comes in this stage shown above, where you can actually hide under terrain a bit. If you go out into it you should be thrown around pretty badly and drown/get crushed quickly, but scurrying a few tiles through it should be possible (if you can do it in the blind, it's impossible to see what's going on out there).

Then obviously the rain need to step it up a notch from there, or you'd be able to survive by just waiting it out in any old spot such as in the gif, which would undermine our entire game mechanic with shelters etc. What this second step should look like I don't quite know yet, currently I'm thinking about having it just gradually fade to some sort of all-encompassing complete rain mayhem. That could sort of make sense given the ambiguity of the 2D/3D aspect of the game ~ are these rooms completely closed, or are they open in the front? The answer to that question changes according to what's convenient for us haha, and in this case I'd probably say that they're open and as the rain gets really intense it gets in there and smashes everything with general watery violence.

Then comes the question of the rooms that are very obviously completely underground, what to do there? The current idea is flash flooding, just a water level that rises quickly, and maybe underwater currents that smashes everything into the walls and wreck mayhem on whatever wasn't quick enough to swim to safety. But I'll have to get to that when I get to it - outside rain first.

Another concern I have is that rain like this should generate a whole lot of water, that should be washing around and dripping/pouring everywhere. Currently I don't really know how to animate that, but it'll have to happen through shaders somehow. The super realistic scenario would be that the water has an actual fluid simulation going and is just washing along in the corridors, but I really doubt I will be able to make that happen, at least at acceptable performance. So I'll have to wing it somehow. Stay tuned!
 
The rain cometh

9iAsLUQ.gif
xITOl8q.gif
WfSX3Fo.gif
lHIaz54.gif
SelfishSneakyEgret.gif


More rain stuff! First of all, fixed the splashing through walls. But mostly I made the shader able to fade between different rain intensities, and added physical interactions for the rain.
---
1) Very light rain
If performance permits I can imagine rain at this intensity come and go a bit during normal play, it could even look pretty good with the sunlight out. But it's an entire new grab pass, so idk, I'll see if that works.

2) Heavy rain
This is what I imagine to be the equivalent of very intense real-world rain. It still doesn't cause your locomotion any trouble as you can see from the pole climb, but it assumedly makes you wet and cold.

3) Grade A death rain
Possible to move through, and it doesn't outright kill you, but certain movements such as jumping and climbing are really hard as you're constantly pushed down. If you're under a roof you're not affected at all though.

4) Grade B death rain
Unless you have a completely covered route to the shelter you're in trouble now. It's still possible to move through, but you have limited control and are violently pushed out at the sides and thrown around in the middle. You need some horizontal momentum to go through it, so the charge jump might help you out. This rain should also kill you, although I haven't implemented that yet. I think it'll be a counter that goes down while you're in the rain, which has a constant ticking and is also decreased when you're pounded into the floor. If you're under cover you're still free to move, but in most situations you're probably done for by now.

5) Grade C death rain
From here it's basically a death screen. You gradually lose control where ever you are, and everything fades to rain mayhem.
---
Oh, also, I just divided these into different "grades" for the sake of showing it off, in the game they exist as a smooth continuum. Also I realized looking at the gifs that the grades A and B look very similar despite having different effects, so I'm tuning that now.

Now to hook these up to some sort of progression that happens naturally in the game!
 
I'm sitting here looking at these gifs thinking to myself how the hell Joar keeps topping himself.

It was only this morning that the first pass at it was posted on the devlog, and after reactions taken comes back with something totally awesome. It's not just a cool graphical effect; it feeds into the mechanics of the game with how the downpour effects Slugcat's mobility.

I'm literally sitting here with my jaw on the floor.
 
This page is way too much for my phone. Instant crash every time for my poor S4. Game looks seriously interesting. I love the procedural animation.
 
Status
Not open for further replies.
Top Bottom