• 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.
Some cool progress from the devlog

jP0Qi.gif

I slipped away from the boring tasks and did something useless but fun instead... Arm behavior in mid-air:

The weird jerky movement where the tail becomes square is when I do a hard reset of the player's position to the center of the screen, and of course there won't be anything like it in the actual game.

I tried to make the arms look a little bit like they tried to balance the body in the air, at the same time as they're ready to protect against impact with terrain. They also have a little bit of terrain awareness - every frame they look for terrain in a somewhat randomized position that's in front of the body. If it has terrain in it the arm will gravitate that way, hopefully looking like something along the lines of either trying to soften the impact of an incoming floor or clawing for a grip at a wall.

This is becoming like the RAGE/Euphoria engine of 2D pixel games. Don't those physics engines make character reach out with their limbs as they're falling, stuff like that?
 

epmode

Member
I dunno, I'm not a fan of the arms in any of the new clips. I'd rather they only appear when necessary. Cuter(?) that way.
 
I dunno, I'm not a fan of the arms in any of the new clips. I'd rather they only appear when necessary. Cuter(?) that way.
Yeah, you're not the only one. On TIGForums, most of the comments echo yours, that the limbs should probably only extend when closer to a surface and that the previous style appeared more graceful.
 
Here's a GIF with the arm physics that better shows how it looks in actual gameplay

iA2l0.gif


OK let me calm you down by letting you know that in the gif the behavior was very exaggerated in order to show the functionality. The "meteor jump" is very signature to the slugcat, and I wouldn't want to give that up for some flailing.

The way it works is like this - every frame you're airborne, a value is incremented by the magnitude of your velocity vector. When you hit ground that value is reset. If that value is larger than a specific amount, this arm behavior starts to show. So, the longer you've been in the air, and the faster you've been moving during that time, the sooner the flailing will start. But the number is balanced so that a normal jump will never generate the flailing.

Here's an example of the normal lunge jump on ground, which is the same as always, compared to the lunge jump from a height, which will display a little arm movement
 
An update on level design and multi-screen areas
Some slick functionality is finally settling into place! This is the state of things: A room can be however big or small it wants to, it's not capped by the screen size. Instead, if a room is larger than the screen, you can place several cameras (all of which together should cover the entire level) and the level editor will render a texture for each such view. The game will then switch between them as you move through the room, making sure you're always visible.

To me this is "one room can have many cameras" but I think that to someone that isn't as engrossed in the technical details as I am it would be "now you can move between rooms by walking out the edge of the screen as well, not only through short cuts".

This whole system is coming together pretty well! I managed to make a 4-screen tower, and climb it with the game switching between the camera positions automatically in a way where I could always see myself on the screen. Because the loading of level textures is unsynchronized there's no hickup what so ever (on my computer) when passing from one screen to another, and you can actually jump on one screen and grab a pole on another without your timing being messed up by the screen change. You will become a little disoriented though, so I'm going to have to make the placement of the screens clever - for example not have them change in the middle of a jump, heh.

I did come up with one little disorientation reducing mechanic I'm very happy with though. When you get close to where the camera will snap to the next position, the camera shifts slightly towards that edge (the textures are slightly larger than the screen, so there is room for a few pixels of camera movement and camera shaking). This means that you're always warned ahead when the game is going to change the screen position, you're never just trotting along and getting completely shocked by a hard cut to another scene. Also, you are given a hint as to what direction the shift is going to be in, which will help you find your character after the scene shift.

When the game senses that you are getting close to an edge of the screen that is open to another screen, it will actually start to pre-load the texture of that next camera position. This needs a little work, for example it doesn't offload the texture when you change your mind and walk in the other direction, and I'm unsure of how healthy it is for the RAM to have the texture hanging out in the background as the game is running. Also the preloading should apply when moving through shortcuts, which I haven't gotten around to yet.

Screens can also overlap, which is in a way a bit more confusing because it defies the age-old game logic of exiting one screen to the right and entering the next from the left. But it also provides more sense of space as you're able to see a few of the objects in the room from both vantage points, making you able to piece the room together as a whole in your mind. The use of this will certainly need to be balanced.

When playing in wide screen, the camera positions will work exactly the same, the only difference being that you get to see some extra pixels on each side of the screen. This means that in wide screen the overlap between screens will be even bigger. I need to do some fiddling with the shader before I get wide screen to work, but once there I'll be able to get a feel for how this whole system works with different screen sizes, and hopefully balance everything accordingly.
Video showing off this new feature
There are two different ideas being tested in this, :06 is basically two connected rooms and the screen camera just swaps when you exit (with a little overlap) and :40 has the cameras set in more drastically different places, which might be worth considering for future level design.

also at 1:00 there is a test level seeing how multi-room platforming might be (answer: hard.) shows off some of the new limb animations!

(worth noting: this is probably not at all how it will be implemented, just early testing of the functionality.)

Also grabbing & throwing
MbJux.gif

Some throwables! And some sprites apparently, I forgot to disable them and stopped seeing them after a while...

The basic physics are already in by default which is why inheritance is the best thing ever, so I've just messed around with the actual interactions.

I have some fun things in mind. Rather than the super simple system we had in the old build, this one has a more generalized system for grabbing stuff that will allow for more interactions. Each creature has a number of grasps - the slugcat has 2 hands, the lizard has a mouth, etc. Grasps can be used to grab objects, and they have their own little mini class which keeps track of the grabber and the grabbee, which grasp is used, which body part is grabbed, etc. Also every object keeps track of what creatures are currently grabbing it. I think a lot of fun interactions can come out of this - such as a tug of war over an item between two creatures, maybe grabbing on to other creatures and "wrestle" them, etc. We'll see where it goes.
 
Also a lengthy answer to the question about how areas are designed. Are the locations designed first and then appropriate enemies and challenges added, or are the locations designed to suit a certain mechanic or gameplay situation?
Thats a really good question, and its something we're probably going to be exploring the next half a year or so. this devlog generally tends to be more about the technical side, letting the more artsy / conceptual aspects sort of speak for themselves, but answering this requires a bit of a journey into that bog. (which im more than happy to oblige, as this bog is my home these days!)

From my perspective, rain world is sort of an elaboration on a few themes: ecosystems / scarcity / exploration / loneliness / choices / decay. the experience is interesting because Joar has been able to stay very true to this kind of unique, brutal and impersonal world-view in what you've seen so far. i think the underlying idea is that its more intended as a diorama or terrarium ecosystem than as "a game", (yet is still hopefully playable and fun as a game!)

So the challenge is in taking it from the snapshots of this central concept (as suggested by the alpha) and into a full game that is cohesive, with a sense of progression, fully realized world, etc., and not resorting to "bad guy lizard stole your girl/boyfriend, go get them back" sort of thing which wouldn't be true to the central concept.

So to steer this around to answering your question, its almost as if we have to build the world first before designing an area. how much of that world is actually shown is debatable, but the intention is to have the narrative/experience be a result of the game world, and thus the game mechanics. so ideally its sort of like this:

central concept -> game mechanics implied by concept -> world implied by concept/mechanics -> areas and creatures implied by world / mechanics -> situations and scenarios implied by creatures/areas/world/mechanics

If that makes any sense. but obviously we've been discussing, debating and internalizing these concepts for years as RW has developed, so its not like we consult a flow chart or anything. Anyway, I hope that wasn't too much of a diversion and answered some of your question!
 
Dev has been focused on pathfinding for the past week
Now we have inter-room pathing! It actually seems to work! How it works, simplified, summarized:

1. On loading, a function called a "connectivity mapper" goes over all the rooms. It pretends to be each type of creature in turn, and using that creature's moves tries to get from every door in the room to every other. If it succeeds, it saves how long and difficult that path was (In room 3, as a Lizard, walking from door 2 to door 3, the path length is 21 tiles and the cost of the path is 321). If the path is impossible to traverse, it saves it as -1.

2. As a path finding creature is created, it creates a map of path finding cells for each tile of the room its in. It also creates a cell for each exit in each room in the entire game world. This might sound like a lot, but keep in mind that a 10*10 block of tiles holds no less than 400 pathing cells, so all of those exits in the offloaded world are going to be small fry in comparison to the currently occupied room.

3. The creature creates a network between these cells. For inter-room connections it's easy, if the room has 2 exits of which 1 leads to another room A and 2 to another room B, the first cell in the room (representing the first exit) should be hooked up to room A. Actually to the cell in room A that represents the exit towards the first room, but I said I'd keep it simple, haha. For connections between cells within the same room, it uses the connectivity maps mentioned before. This way the path finder will be able to know how difficult it's going to be to traverse a room, but the lengthy calculation is reduced to just a single integer number.

4. Run the path finding algorithm. The local grid of the currently occupied level is hooked up to the global grid through the room exits. The path finding algorithm is able to treat cells within the room and cells in the abstracted world equally, making it find paths seamlessly throughout the room as well as the world.

A4Cbw.gif


Finding a way from the bottom of a pit to the platform above, using off-screen rooms. Note that the path finding works from goal to start. The little free-floating cells on the left represent the abstract off-screen world.

I was once even pleasantly surprised by this when trying it out. I had a room that consisted of two little cells with no connection to each other, but just a connection to the outside world each. The offscreen pathing was able to create a path from one of them to the other through the offscreen levels, but not the other way around. I thought I had found a bug. In fact, one of the rooms that needed to be traversed in order to get between the cells contained a pitfall - dropping down was possible, but not getting back up. I found it fascinating how the very specific architectural traits of a level that to the game didn't even exist (it had never been loaded in that game session) could have a visible effect in this other room. It really made the world feel like a connected whole!

And, as a bonus, a little bit of path finding madness. The lizard isn't able to do its "flip over" move that enables it to turn around on a flat floor yet, so instead it proceeds all the way around.

Ed03H.gif
Yo dawg, today I put a smaller path finding algorithm in my path finding algorithm... to... Let me explain!

The basis of the rain world path finding method is that as one path is being followed, the next is being calculated. This means that the paths are calculated not within a single frame, but over the course of several, and that the creatures are able to follow moving targets. How it works is pretty simple; the path finding algorithm works its way out from the goal as a flood fill. When it reaches the creature, the creature starts following the path. Once the creature is following the path, a path to the next goal position (wherever the goal has now moved to) will start to be calculated. It's assumed that the new goal will be somewhat close to the last goal, so the creature will continue to follow the last path as the new is being calculated. The creature will never follow a perfectly updated path, but it will have a reasonably recent one to go by, and it is quite a lot easier on the processor as an entire new path doesn't need to be calculated every time the goal moves.

I think of this as a path finding algorithm that's optimized for having several creatures chasing moving targets. Contrary to an RTS rain world will have almost only moving targets.

Ok, with this in mind, take a look at this. Notice how each time a path connects with the creature, the next one is started?

FuRhQ.gif


This is done pretty simply. Each time the mouse is assigned as destination, but it's actually saved as a "nextDestination" variable. When the creature is following the most recent path or the path has exhausted all its options and knows its unable to reach the creature a new path will be initiated, with nextDestination as destination. You following? In the gif above we see a lot of the former and none of the latter.

So, there's a problem with this system. Say that the creature is in a small enclosed room. The path finder is told to find its way to a position somewhere out in the big world outside the room. A new path will be initiated, and the path finder will chug away at the vast sea of tiles in the world, without finding a way into the room.

Now the AI changes its mind, and the path finding goal is put inside the small room again. Notice the problem? No new path will be initiated inside the room, because the creature isn't following the most recent path, which is still searching all over the world for a way to get to the creature, and the path won't have exhausted every option in a loooong while, as it has to look at every tile in the world first.

So, the solution is to just assign a new path every time the goal moves, right? Nah, that won't work. If the goal moves, as it will when following a creature, there will be a new path each frame, and none of them will have time to reach the pathing creature.

This is where the path finder in the path finder comes into play. It's a super quick little path finder that maps whether one place is close and reachable from another place. So, when assigning a new destination, I check if this new destination is close to the old destination. If so, I simply do as first described, save it as nextDestination. If it is not, however, I scrap the old path and start a new one. The old one probably wasn't going to help either way.

So, in the scenario, this would mean that as the goal is moved into the small room again, it's quickly determined that this area is enclosed from the last destination - and the last path will be discarded and leave way for a new one, inside the small room. The creature will appear as more alert, as it will adapt to the new situation quicker than if it would've had to search the entire world for a path to a place it didn't even want to go anymore first.

Whew. Told you path finding was gonna get crazy!

In other news, I've enabled lizards to enter short cuts, and brought some of the path finding stuff together and had it work simultaneously. So, now we for example have the "pathing through places I know I can't actually go" stuff working simultaneously with all the other stuff, etc. The different elements tend to not get along very well at first when put together, but I think I've made it work. Have some ideas for re-structuring stuff though... we'll see.

Also been developing some ideas about how off screen creatures moving about are going to work. Off screen creatures are probably going to be a little... schrödinger's lizards, in that they'll be in sort of undefined states until they need to be realized... It's going to be interesting!
 
Neat idea but man I'm getting real fatigued of 16bit inspired "indie" games.

Fucking right. Take this awesome concept and change the trite art and i'd be down.

Edit: That said it does look fun. I just wish it wasn't another "retro" inspired art style. This in a contemporary cell shaded art style would have been sweet.
 
New update: Super long pathfinding update!
Hello Kickstarter friends! We hope you all are having a nice summer. Things have been good here in the Rain World Development Pits, as we tackle one of the biggest, most interesting challenges we'll face: creating intelligent, complex, "thinking" creature AI!

8c18b385f07298f29b5173553b2ceda4_large.jpg


OK, so here is where we are coming from: If Rain World is to feel like a believable dynamic ecosystem, then it isn't enough that creatures just randomly spawn in rooms or pop into existence only when we need them for a challenge. We don't want these creatures to exist simply to be in your way, attack you or to be killed, that's boring and predicable. It will be a much more interesting experience if they have agency of their own, and running into you is just one part of their day.

Imagine this scenerio: you are a lizard, stalking the distant scent of some small prey from room to room, hopefully to eat before the rains hit. You are climbing a pole to get to the next ledge, when you hear the sound of a commotion coming from a nearby room and detour to investigate. Wiggling into the next room you see... a delicious slugcat(!) battling it out with a red lizard on a far platform... which unfortunately is too high for you to reach. Hmm... but you know this area like the back of your claw! So while the slugcat is distracted with the red lizard, you circle around through an adjacent room where you know a shortcut that leads... to right above their heads! You pounce!!

How cool would that be? From a players perspective, you then have creatures using multiple senses, strategizing, planning and behaving in unexpected, unscripted ways. For us, this is the ideal to strive for. But how?

Pathfinding!

The first step is to give AI creatures a complex and robust method for sensing their way through the game world: pathfinding! Basically, its the creature saying "ok, i can see the room looks like this. I'm here, and I want to go there, but how do I do that? ...and what are my options?"

We start by setting up a grid and tile system, which you can see in action below. The weird pink squares being dragged around are an abstracted "test creature." The creatures's pathfinding AI first calculates the the available paths around it: Blue tiles are "I can get here", red tiles are "I can get back from here" and green tiles are both - which is the ideal path to take, so it doesn't wind up in the bottom of a pit somewhere. They don't just want to eat you, they want to survive too!

Note: Just for total clarification, all of the following gifs and pictures are from AI debug-mode. None of this stuff will be visible in the game itself, its just a representation of how the AI is "thinking." That goes for the levels as well, which are just totally blank test-levels done in 2 seconds for the purposes of debug stuff.

a7127e8c9144023a661195688abfbfa4_large.gif


You can see how when the creature is held at the bottom of the pit, the platform above becomes red as these tiles are possible to "get back from" by dropping down the pit, but not possible to reach. When the creature is held at the higher platform the bottom of the pit becomes blue, as these tiles are reachable but not possible to return from.

So what if like in my little lizard story, the creature AI "knows" a better way to get there? We apply the same logic to a multiple room system, and get multi-room pathing:

2516d3f1aee86998ea5865db25b4a03a_large.gif


In this gif note that the slugcat isn't the target, its where the red dot clicks the ledge above in the beginning. The creature can't get up there, but from previous runs the AI "knows" the surrounding area and chooses a sneaky, winding route through a few rooms that leads it right to its goal! Smart creature! (Now full disclosure: there are like a million steps, weeks of work and gallons of coffee between those two gifs)

So that's cool, but no slugcat is going to sit still for that long. What about moving targets? Just like with the multi-room, here we apply more and more layers of dynamic pathing. In this gif, the creature is given flight so we can see how it paths through complex direction changes:

346e7c9614fa4cc1c34532238409f79a_large.gif


As you can probably tell from the above, each pathing layer is represented by a separate color. It detects all of the information that we went over in the previous sections, plus dynamically tracking multiple potential routes to where it senses the target to be, constantly updating and choosing the "best" route. COOL STUFF!

ac93bf2a18caa2678bf9ac87ff7d5c8f_large.jpg


Beyond pathfinding...

This all gets the job done pretty well, but for Rain World its just the first half of the equation. Next up will be creating distinct behavior AI's for each species of creature, playing to their senses, abilities, interests and hunting tactics. Then we smoosh these two elements together and hopefully get a wide range of beasts and distinct personalities, from dull, to challenging, to diabolically clever! And I absolutely can't wait to see them all interacting together!

So that's what we've been up to! As always, thanks for reading and going through this journey with us. We hope its interesting for some to watch the nitty-gritty nuts and bolts of this to come together. Soon, hopefully, we'll begin doing more art stuff with levels, assets and creature design, so that might spice things up a bit!

Until then!
 
From the Devlog:
Website! I guess we are an actual game company now!
http://videocultmedia.com
VIDEOCULT is an independent videogame studio based in Boston MA, focusing on the development of games with a slightly esoteric flavor. We are interested in creating clever Artificial Intelligences, immersive sandbox ecologies and emotionally rich gaming experiences that will stay with you long after you have set the controller down.
 
Very interesting update about the developer's goal for the AI:

Update 281
I took a little step back and looked at the big picture. After spending some time with my notebook and a pen rather than staring at these pixels I managed to pin a few key points down.

First of all, the core question and its (as of now) three answers:

What is the purpose of the AI in Rain World?
* Challenge
* Flavor
* Trickability

---

Challenge - The AI should add to the challenge to keep you at the edge of your seat while playing. However, I'm going to dismiss this point entirely, because I have a million other parameters that affect challenge and are much easier to tune. The movement speed of the enemy, the range of its senses, the amount of enemies are all such parameters.

Flavor - The whole purpose of the project is to simulate a world that feels exotic and alive. Creatures' behaviors are a huge part of that. I'm not too concerned about this one either though - I trust my gut feeling when it comes to this aspect, and I think most of it is in the details (animation etc) rather than the overarching architecture. In short, I'm not worried about this aspect, it's going to be cool no matter what system I use.

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.

---

I've identified a few ways to achieve trickability:

Communication/Clarity - It needs to be clear what the intent and purpose of the AI character is. You need to know what it's currently up to, and if it changes its behavior, that needs to be clear too. Some of this can be communicated by animation and sound, and is thus not really an AI concern. The simplest, solidest solution for this problem would be to visualize the state of the AI with HUD somehow. For example I've seen some splinter cell game where a ghost of the player lingers where the enemy believe you to be. You could also have eye beams representing visual contact etc. I don't like these solutions, as I try to minimize HUD in general, and because it feels like cheating to see what's going on inside the enemy's head. What you look at on the screen should just be the physical reality of the game world - you are in fact already cheating by being able to see through walls, which no other creature can. So this one is going to be an issue. One thing I've been thinking about is that flickering between behaviors should really be avoided in order to achieve this. The creature needs to commit to an action in order for the player to be able to see what it's up to.

Predictability - It's crucial that the behavior is predictable in order for your cunning plans to follow through. You should be able to know what each enemy is going to do in each situation once you've gotten to know them. If they are too predictable they might appear as soulless machines, but I think I know of a way to fix that. If their idle behaviors, when they are not pursuing or being pursued, is more random, that will bring a little randomization into the mix without hurting the predictability of the actual gameplay-relevant behaviors. In their idle states they will also move slower with less urgency, giving the player some time to react to an unpredictable move.

Sufficient complexity - As stated, a creature that is too dumb can't be tricked. A box that just moves towards you can be made to fall down a pit, but you don't really feel like you've outsmarted anything. If the box tries to move around the pit, but you're one step ahead and have already prepared an ambush or something along that route, you suddenly have a war of minds (albeit a very uneven one) and that's much more fun. However, if the AI is too smart, you will just spot it as it's traversing your room on its two hour quest to collect parts for building a rocket or something, and when you don't have the ability to ask it what its ultimate goal is, it's just going to appear as if it's moving about at random. So, more complex isn't per definition better - especially if the complexity gets way ahead of item #1, the communication aspect.

Interactions - There needs to be tools at hand when tricking the enemy. In the old build, a creature could pretty much only move about and eat or get eaten. There needs to be a few more interactions to achieve trickability. Something to lure creatures to a specific location. Something to stun them. Some ability, such as armor or the like, that they can be robbed of through a cunning plan. These are not strictly AI issues, as they encompass larger game design choices, but they will have corresponding AI behaviors and might deserve to be mentioned here.

---

So that's how far I've gotten on my thoughts of why Trickability is my main goal, and how to achieve it. The next page in my notebook has a simple little observation about the kind of environment this AI will live in.

Contrary to in many games, Rain World creatures will encounter extremely few of what I call "Key/Door Puzzles". That is, actions that are locked behind other actions, such as "You can't get to behind the door until you've unlocked the door. You can't unlock the door until you have the key."

The Rain World NPS's are generally animal-type creatures, that don't use much tools or items. The Rain World maps are generally open - they don't have locked doors that can be opened with items or switches. This means that there are extremely few situations where something is possible to do if something else is done first. Categorically, every action is either possible or not possible, always. Either I can get up on that ledge, or I can't. Either I can hunt that prey, or I'm speared to a wall. Among the possible actions, however, there is a wild variation of desirability.

This means that Rain World AI is about

Decision Making, not Problem Solving

This notion has me currently leaning in this direction. But the behavior trees seem pretty awesome too haha! I seriously don't know if anyone made it all the way through this monster of a post, but either way it was good to get my mind sorted out. As always, all your input is very welome!
 
Devlog update
Got a triangle mesh up and running for the lizard's tail. It's based on the player's tail, and was thus somewhat painless to get working. Paving the road has finally started to pay off. Also added a new function to my triangle mesh class - vertex coloration.

dOQxF.gif


Because I've assigned color to the vertices, and the idea of this object is that triangles can share vertices, there are no sharp edges in the shape and the colors are stretched and bent like supposed to. When bent at very sharp angles you can see some edges, but I think it's acceptable for now.

I've also created a body for the lizard, which works similarly but also uses circular graphics as well. Basically it's a circle at each body segment with stretchable quads connecting them, expect it's not because there are also intermediary circles between the segments to smoothen the curve, and the very first segment is only rendered as a little stub because this is where the head is going to be.

The color might be a bit dark against the balck background - my monitor is brighter than most - but if you look at it at an angle you'll probably be able to see something  :p

AjhJq.gif


A little slow motion and tossing around in there as well to show how the tails behave. I don't think all lizards will have colored tails like this - I kind of like the black tail - but maybe one or two might have something like it.
 
New update:
https://www.kickstarter.com/projects/rain-world/project-rain-world/posts/975341

Hey Rain World friends, quite a lot of exciting stuff going on in our little world this past month! This might be a long post, so ill jump right in:

LIZARDS!

If you recall from last post, Joar has been deep in the lizard brain recently, re-creating all the elaborate creature AI for Rain World's most notorious predator. This past month he's been working on bringing the mechanics and animations up to speed, taking advantage of all the cool stuff we can now accomplish with C#. Here are some early movement prototypes:

2fec3a4e16fdd50487d9107f2ce38fc3_large.gif


cc3e5ee7330c9339126ba662c0e98222_large.gif


5d1894ce7ac8f2872e5ef68536617024_large.gif


Something that had been present in the alpha, but perhaps not very obvious, was the difference in "personality" between lizard breeds. This is not just behavior, but also range of sizes, abilities and other attributes as well. In this re-build, we can now explore that much further, and are looking to have each lizard be a fairly unique individual with its own size, attitude and level of intelligence randomly generated within the subset of its breed, and each breed has its own range of behaviors and abilities. We think this will give a really rich experience with tons of replayability, especially when combined!

44ff0164381ff3e0de0182965e208005_large.gif


Also, we can go much deeper into crazy stuff like modeling individual limb mechanics. I dont know whether its for realism, or just because we can, but its really really cool. In this gif the lizard has taken damage to a couple of its legs, yet still limps after you:

e9096e2757cdd96cc2eac59fcbeb2b49_large.gif


We can take that limb example a bit further to show an aspect of lizard intelligence that is otherwise pretty hard to make obvious: THEY LEARN. In this rather tragic gif, the lizard struggles with an attempt to climb a pole, but can't due to its injured limbs. After a few attempts, it moves on, but as you can see from the AI color overlay, it marks the pole as yellow before doing so, meaning that it now knows that pole is not traversable in its current state and wont bother with it when encountering it again. CLEVER GIRL. (Actually, clever Joar...)

82dbbb61a3476b6e3a9161220a3cbd98_large.gif


Ok, enough with the brightly colored squares, here are some shots of the lizard evolution in action.

Throwing around some of the new tails to show the physics:
3f897c6d413c4ed21e20b497d1ad3598_large.gif


Early leg / walking / climbing animation tests:
d29df0ddde892823926bea601be85430_large.gif


Starting to look a bit more like it!
6548b035afe9d0630af4d6c5f1a4beed_large.gif


There is still a fair distance to go before the lizards are where we want them to be, but you get the idea. PROGRESS!

ALSO, worth noting is that no actual creature AI was attached to the lizards in these gifs, only the default path-finding. So if you were wondering why they seem dumb as posts here, thats the reason: they are in fact dumb as posts.

PLUSHIES!

For the past 6 months we have been working with the extremely talented Kim B. from Sleepy Puppy Plushies on making Slugcat plushies a reality; prototyping and re-designing and going through materials and methods. So I am extremely excited to tell you that all her hard work is paying off awesomely, and present to you a first glimpse at... SLUGCAT (AND LIZARD) PLUSHIES!

bb858c6a548e902a70322b699e7d1973_large.jpg


They look absolutely fantastic and well beyond what I thought we'd be able to make happen. The Cat stands at around 18" tall (46cm) and the Lizard is almost 3 feet (1m)! We still have some work to do getting together the customization options and materials, so more information about all that will be forthcoming of course, but I think you'll agree that its all extremely exciting!

CREATURES!

We've also been talking with the creature creation tier about their "secret creature" contributions and have been blown away by all the good ideas and concepts. Admittedly we were initially a bit wary of this part, because who knows what to expect, but every suggestion has been really well thought-out and dialed into the atmosphere of Rain World and we're really looking forward to making these all happen.

We are still waiting on a few replies from some Creature tier backers, so if you are reading this going "hey! I backed at Creature tier, why haven't I been contacted?" please let me know! But if you are just busy or something, no rush at all, there is plenty of time.

PAX!

Last weekend we showed the Rain World multiplayer alpha with the Adult Swim Games booth at PAX Prime in Seattle and it was a TON of fun. I just want to give a shout-out to all the backers that stopped by the booth and hung out, talked, took selfies with us, stabbed lizards (and eachother) with spears, etc etc. It was a really great time and I'm so happy to have the opportunity to give out some high-fives in real life.

af6d3387ef99cec1e277add05b661bbc_large.jpg


This coming weekend, I'll be showing that same alpha build at the Boston Festival of Indie Games, where Rain World is one of the Indie Showcase games. So, if you are in the area definitely come down and say hi. I'll have stickers and you can check out the plushie prototypes in real life!

As always, thanks for your support and going on this journey with us! Stay tuned for more updates soon!

--James & Joar, Rain World Devs
 
So if you were curious about the multiplayer and if it's popular, here's what the dev said about their Rain World booth at the recent Boston Festival of Indie Games:
on a similar note, the RW booth was NUTS. we had a crowd for 8hrs straight doing constant 4 player matches. Its possible we had more people playing it in one day at BFIG than 4 days at PAX Prime. and that was with the most slap-dash, ghetto "booth" setup possible

And from a member who played it
It looks as incredible in person as the GIFs we've been seeing.
 

Neff

Member
Neat idea but man I'm getting real fatigued of 16bit inspired "indie" games.

Can't blame them for doing it. It's the best way of creating content on a supertight budget.

The problem I think is that everyone tends to go for the same spartan, artsy, sepia approaches with tiny sprites which lacks the impact achieved by classic 320p stuff.
 
Can't blame them for doing it. It's the best way of creating content on a supertight budget.

The problem I think is that everyone tends to go for the same spartan, artsy, sepia approaches with tiny sprites which lacks the impact achieved by classic 320p stuff.
Well it is literally one guy doing everything but the music. Personally I like the art style a lot but it's the technical elements the dev is implementing that I think makes the project really unique IMO. AI that can adapt and anticipate, be tricked and can trick you. Procedurally-generated physics-based animations. Stuff like that
 
Sounds like the game is progressing nicely
Things are moving along rather well. I found myself playing the game as a game from time to time when playtesting, which is a first for the Unity version. The very core elements of sneaking, running and out-maneuvering are in now, and the ability to very quickly change creature relationships on a whim creates a lot of cool opportunities for experimentation. Tomorrow I hope to be able to show you something.

In-depth updates on the state of the AI
A quick question that popped up: How do the blue lizards react to the green ones? Did you make them afraid of green ones by default, or do they realise that they are being hunted and then register the hunter as a threat? Or maybe they are just completely oblivious to the fact that they are about to be eaten?

I also loved the lizard backing up when he suddenly sees the slugcat below him in the reverse rain world gif! The way you handle the AI makes the creatures feel truly alive!


OblongRashCirriped.gif


Thanks! That specific relationship is pretty much just me testing the system by this point, I don't know whether it'll make it to the final game. It might though! Or maybe green lizards could become aggressive towards blues if they're competing over prey. In any case, the creatures are going to know what other creatures to watch out for by default. They've been living in this world a long time, so they have a hunch. If they'd have to actually figure out what's dangerous and not, they'd not really stand a chance - because they're unable to see through walls they'd spot the threat as it was currently charging at them, and wouldn't really have any time to draw conclusions. I guess that the same rule as in actual nature could apply though: if something is bigger than you, get out of there!

Some pretty interesting parts have started moving into place today. First and foremost, a framework for relationships between species. A relationship is a one-way link between one Creature Template and another, consisting of a type enumerator and a float signifying intensity. Currently I have Ignore, Eat, Afraid as possible relationship types, but there are endless possibilities such as AggressiveRivalry, Annoyed, Symbiotic, KillForFun, Cautious, Territorial, and so on. These are the threads that will hold this food web together.

As you might remember the Creature Templates have some inheritance between them - for example there exists a Lizard template that's never incarnated on a level, but which is an ancestor of all the lizard breeds. I've set the relationship system up to flow down through the inheritance tree, and overlap empty ("Ignore") relationships but never specifically declared relationships. I'll have you know that I did this with a recursive method! (On declaring a relationship, check all children if they have any relationship to the relationshipee, if not, call the method again but on the child! I only got stack overflow exceptions 5 times setting it up!)

This means that I can first declare that all lizards should eat slugcats and ignore each other, by addressing the ancestor Lizard object. Then I can create exceptions, like making Green lizards hunt Blue lizards, making Pinks aggressive towards each other, or deciding that Greens should actually run away from slugcats rather than hunt them.

The really cool part about today though is that I've been able to start hooking the AI components to some behavior. Everything was pretty much in place already, so it was very easy to make the lizards actually react to other creatures. As I had planned, it seems like I can create lizard behavior with very little code in the actual lizard AI, as almost everything is outsourced to the different modules.

So for example there is a Threat Tracker, right? And from today a Prey Tracker as well. The general AI already has a method that is "a creature has been spotted". So what the lizard AI does is that each time it gets notified about a new creature it checks with the Creature Template Relationships: if the alien creature is prey, it notifies the Prey Tracker - if it's a threat, the Threat Tracker is notified.

These modules are then pretty much autonomous, they run their own behaviors alongside the main AI, keeping track of threats and potential prey respectively. Every frame the main AI can ask them, however, for a status report. The Threat Tracker can be asked for a threat level 0-1, and the Prey Tracker can similarly be asked how it estimates the chances of catching its most attractive prey within the next few frames.

Using these values, the main AI can do a utility based decision - what's more urgent? If the threat tracker tells me that I'm actually in danger here, perhaps I should activate the Fleeing behavior? The idea here is that these values should be weighted when compared, for example a threat level of 0.3 might be more important than an estimation from the Prey Tracker at 0.7, as self-preservation should be prioritized. Later when more elements are in, the threat of rain could perhaps overshadow the threat of another creature, etc.

So say that the utility check decides that the current threat level is the most urgent issue - in that case the fleeing behavior is activated. When the fleeing behavior runs, the main AI once again turns to the Threat Tracker, this time asking for specific details on where to run. The Threat Tracker then does its calculations and returns a flight path, while the Prey Tracker can be more passive this particular frame.

Then there's of course talk between the modules, all of which is moderated by the main AI. For example the Path Finder will ask the main AI about each tile it handles, whether or not the main AI wants to add some path finding cost to that particular tile. The main AI will then ask other modules, such as the Obstacle Tracker or Threat Tracker, and for example return higher costs to tiles that are perceived as more threatening.

It all seems to work! A hunter/prey relationship between Green and Blue lizards makes one pursue the other, but both still hunt the player on opportunity, for example. It's a lot of fun to be able to switch these relationships on an off at a whim. Right now there's no real interactions in yet, so they can't bite each other or the like, but it's still fun to watch them react to each other.

What's fun about the AI system is that it seems I have somewhat been able to separate the more technical stuff from the design stuff - out in the modules calculations are done, while in the main AI there are only a few lines of code, but those lines are creative content rather than technical solutions. Using the modules I can quickly and cleanly create behavior that conveys personality, such as cowardice or brute force, rather than solving a lot of technical problems. I'm much looking forward to creating more creatures within this framework!

All of this is very hardcoded and crude as is, but I soon hope to be able to show you some more sophisticated stuff.
 
More info and progress on lizard behavior from the developer
I've entered some kind of turbo mode, and am working like crazy. That said, I find it difficult to describe what I've been doing today in simple terms. Creating lizard behavior, and changing what needs to be changed in order to create lizard behavior, I guess is what's going on.

Today the lizards got a ton more going on for them. Mostly I've worked on idle behaviors. When idle, they slow down some, stop a while, move between different spots. They sit and look at other objects - taking things such as how fast the objects are into account when deciding what to look at.

They all have different preferences when it comes to choosing a spot to sit - green ones like an open floor, pink ones like to lurk in a narrow space, and blue ones prefer sticking to some wall high above everything else, ready to drop down on whatever might pass by.
 
More progress on lizard behavior + GIFs
I did some more work on idle behavior, making them have a more reasonable way of tracking what to look at. Now they judge what creature to focus on depending on several parameters, such as distance, size of the creature, how intense the relationship to the creature is, how scary the creature is considered to be, and whether the creature is in view. Here's a gif with two lizard having their hunting behavior turned off, just chilling out and looking at each other and the player:

FaithfulPlasticAruanas.gif


Apart from that I've been further tweaking overall behavior, and the big change of the day is that lizards now have a limited field of vision. It varies some depending on breed, but is usually around 180 degrees, meaning that you can fairly easily sneak by behind them.

Here's three lizards in a level without the player, tracking each other and moving about. The green one has an "eat" relationship to the blue one, but a pretty weak one, meaning that it'll hunt it if it doesn't really have anything better to do, and give up pretty soon if the hunt is not going well. The blue lizard has a similarly lukewarm fleeing behavior. If the player were to enter the room they'd probably both stop caring about each other. The pink lizard is just trying to hang out, and you kind of get the impression that it's a little annoyed by the other two. The networks of little squares coming out of each lizard is a visualization of the Tracker, meaning that those are basically each creature's hypothesis of where each other creature might be. The pink lizard, which isn't really interested in any of the others, does very minimal tracking - basically just saving the last position they were seen. This slimmed down tracking behavior is one of the things I got done yesterday, I think. The blue and the green however run the full algorithm on each other.

HeartfeltHeavyEthiopianwolf.gif
 
And here's a slugcat ambush in regular moderate slowmo (no actual interactions yet, but the fleeing behavior is in):

GrIvd.gif


The creature is ... eh... half bat, half (butter?)fly, and they're able to switch between a flapping bat flight and a buzzing insect flight - this time around I explored that aspect even further by having them engage in some kind of swarming ... dance? ... where they use the buzzing flight for a slightly longer time, hovering in place. The framerate of the gif doesn't really make those rapid wing movements justice, but you get the idea. They actually flap once per frame, so 40 times per second....
 
Really cool update from the devlog
Finally we went through and got the Unity pro license, and now for the first time I've been able to see the new animated creatures together with the backgrounds!

T8kGs.gif


vVZn8.gif


This is just a very first look, still a lot to do, so I might come back in the evening with a more detailed update. Just thought you guys were so starved of visual stuff that you might appreciate seeing that the graphics are starting to come together.
 
More GIFs and progress updates

bMaC.gif

I also made a few impact effects, such as little water droplets. When I grab the lizards with the mouse and smash them in the ground (don't worry, these stunts were performed by trained professionals) there's really a lot of water, that's because the mouse movement impact speed is much greater than most in-game scenarios, and because there are three of them at the same spot. To get a feeling for what it actually looks like most of the time, take a look at when they impact the ground from natural falling.

PassionateWeepyAsianporcupine.gif


And one extra, for hilarity. I had forgotten that I had activated grabbing other creatures when I introduced the bats, so when playing with some lizards I accidentally pressed the wrong button and.... Hahaha this looks too funny! Just grabs the bastard by the throat like it's nothing!

KeJOv.gif


I don't think that the actual game will have the ability to grab lizards, and if it will, it will definitely be factored in that the lizard weights more - in this gif the lizard is just moved to where the player is, meaning it essentially has 0 mass. Also if the game was finished the lizard would bite you if you attempted this. So rest assured, there won't be anything that looks like this ridiculous scenario in the actual game, I just wanted to show it to you because it looked funny.
 
is this still a sony console exclusive?
As far as I recall, it never was?

The game was initially only going to release on PC and Mac, then also Linux thank to the Kickstarter. Got picked up by Adult Swim so it'll also be coming to "Vita and other platforms"

Or do you mean if it's also releasing on Xbox? I don't know, but I could ask the devs
 
New Kickstarter update: Mega Bat and Lizard GIF update!
This is an exciting update.
515237f1451ff9a855af470f1e9b9e2b_large.gif

After toiling in the darkness of "placeholder graphics" for months and months, we've been able to put some big pieces into place the past few weeks, and WOW! It sure does look like Rain World Next Gen is starting to come together!

We've got bats...
a680e18ade398dc4163bd219eec496ce_large.gif


and bats...
46b68e67433b7f8f17ed0822eab15c4e_large.gif


and more bats!
63727e4a0b28cff28f3d1b7d847071a1_large.gif


SLO MO BAT GRAB.
1de036ce0be669368d0623136b6e865e_large.gif


and we have lizards of course.
bfa57bff17b0536a8c879314332f27ac_large.gif


Check out this comparison between the new version and the old version in the same location. (ignore the difference in background lighting color, that can change to whatever)

New:
36e7661800e49a0b8fe62a7631227992_large.gif


Old:
f3df38aeef3442dd92064461dc3bad18_large.gif


I think you'll agree that everything looks spot on! The only differences are the improvements: smoother animation, deeper interactions, cleaner everything, with a hugely improved frame-rate. Just check out that dynamic lighting and shadow effect that Joar has been working so hard on. Looks so nice!

BATS!
Hey remember bats? We're excited to have them back! You've already seen the finished versions up top, so i sort of spoiled the surprise, but why not see the ugly stuff we've been looking at the past few weeks to see how we got there:

Early bat physics prototype...
6caab591eaeefa29b20b350fe468dd7b_large.gif


evolved, with art assets, plus both individualistic and swarming behaviors...
e4d8c3faf53d53594bb365853d9be193_large.gif


Notice these bats are a bit more physics-accurate than the originals, with each wing flap propelling the creature a certain amount in a different direction. Why that detail? Idk, looks cool.

Long story short, we now have some rad bats.

PREY!
After all that hard work these past months on making deadly intelligent "hunting" predator AI for the lizards, it totally wouldn't be fair to have dumb prey, would it? So Joar has been slaving away at making AI that is clever at getting away. A smart prey's primary AI role is going to be focused on evading its hunter, but the problem with doing something like programming a simple "creature runs away" thing is that in a 2d environment you could easily just trap it in a corner and that's that. Not very smart. So programming in intelligent fleeing/evasion was a bit of a challenge.

I'm briefly summarizing intense weeks of work here, but the solution that Joar eventually hammered out is a "fleeing" AI behavior that is able to analyze its surrounding area in real-time, locating both immediate threats from predators and also the areas of the map it is aware of that would be more or less dangerous to flee to. Then acting upon that information, choosing what it perceives to be the safest option.

In these AI visualizations, the red coloration represents areas less threatening to the creature, and the blue areas are more threatening. The moving area of color is a representation of the creatures "awareness" as it moves around:
f43c7e8f0b9c2136af80db867efccf5d_large.gif


In this second one, there is added "threat bonus" to dead ends and tight places, so it avoids getting itself trapped too easily, and two "threat bubbles" interacting. The one around the cursor and the one around the slugcat:
c5a15b72f0c7bc3d965484211b737171_large.gif


What's really nice about this is that now since we have a fully fleshed-out AI "prey" module that intelligently flees, plus the robust "hunting" and path-finding module already built for the lizards, we can begin to build a web of behavior between all the creatures! A food chain of AI creature relationships: who eats who, who is scared of who, etc. For instance, in this test, something has happened making the pink lizard afraid of the slugcat! Behold, Reverse Rain World:
db782b9a8a5c9d828c4ad7d24b193855_large.gif


Here is a little taste of a possible lizard relationships web (including incomprehensible AI overlay!) The green lizard is hunting the blue, the blue is scared of everything, and the pink is totally annoyed at both of them:
57d99f62b41024586ec0547b3d7a0458_large.gif


Cool stuff that we have big plans for!

BIG WORLD
Changing gears a bit, lets bring up a subject that we haven't talked about too much yet, but will soon become a focus in the next stages of development: Levels. The game world. We've dropped a few hints in previous updates, but one really significant thing that the new game engine makes possible is for much larger room environments. We want to explore this in more depth with you in later updates (once we have some of these playable), but for now we can show you a few concepts we are working on without spoiling too much. Think of each of the large black rectangle overlays as representing the width of a 16:9 screen.

At its most basic, these larger rooms could be things like taller, multi-level building interiors...
b22ec8ae2f8a12c66a3a8547aaddf071_large.PNG


or wider, arena-like Colosseums...
93f942d486ea33663fa03f9b3ffd5b2d_large.PNG


deep chasms...
a40915f6e97455e9fb2d6865e9d89888_large.PNG


or perhaps long, wide, sweeping set-pieces, like this concept for an area called the Garbage Wastes...
4a91d147afbb35a4e8a47ae44a047d27_large.PNG


As you can probably see, it opens up some huge possibilities for narrative, environment and game-play that we are very much looking forward to exploring. We'll be back with more info on this as it develops!

And last, but most certainly not least...

STREAMING SLUGCAT PLUSHIE CONSTRUCTION!
I'm pretty excited about this! Starting on Monday, Kim at SleepyPuppyPlushies will begin what we hope to be a regular event: streaming the slugcat plush construction process! These first bunch of streams will be making a few classic white slugcats, plus testing some materials and color combinations for the roll-out of the custom options, but the idea is that those of you who snagged yourself a slugcat (and anyone else of course) will eventually be able to tune in and watch your very own custom slugcat plushies being made! How cool is that??

She'll be streaming at 11:30am PDT mon/tues, thurs/fri at twitch.tv/aeogamer and you can get updates and more info on her twitter at https://twitter.com/AeoGamer

As always, thanks again for going on this awesome adventure with us! We will talk to you again soon! --James & Joar, Rain World devs.
 
Thought this was cool. This video was from March 2012, when Rain World was still called Maze Runner and the lizards hadn't even been created yet

http://youtu.be/FbAhRjsXBko

Even then the Slugcat animations were pretty impressive. You can really see how far the game has come
 

Rembrandt

Banned
As far as I recall, it never was?

The game was initially only going to release on PC and Mac, then also Linux thank to the Kickstarter. Got picked up by Adult Swim so it'll also be coming to "Vita and other platforms"

Or do you mean if it's also releasing on Xbox? I don't know, but I could ask the devs

I meant if it was releasing on Xbox One. I noticed they've only mentioned Sony platforms which had me curious if it was timed or a console exclusive. if it is, I'll just hook my controller to my pc, but if you do find the time to ask, thanks!
 
I meant if it was releasing on Xbox One. I noticed they've only mentioned Sony platforms which had me curious if it was timed or a console exclusive. if it is, I'll just hook my controller to my pc, but if you do find the time to ask, thanks!
Dev said this:
Our plate is already pretty full with platforms, but down the road obviously the more places you can play rain world the better. first things first though: make actual game
 
In the devlog, there was a discussion about a suggestion of letting the slugcat drag corpses around

Devs' response gets into some interesting details on the game's focus and his design philosophy
Today's update isn't very exciting, so instead you get a ramble on game design! Yay!

I think all of these points on dragging are totally valid. In the end I think it wouldn't do thaaaat much of a difference, because it's a very slow and deliberate action in a very chaotic game. Any cunning plan like that is pretty much doomed. It's like that guy who'd try to punch a crate across half the map to block a door in a halo match - cool idea bro, but a million rockets and grenades and burning vehicles are going to wreck your day, and the rest of the game plays in 100 times the pace of your plan and will already have played out when you get there. Rain World is about planning and analyzing, but it's mostly on a 0.5-5 second scale rather than up in the twenties, or minutes. There are some minute-scale decisions in single player, such as "which area will I go to", but once those are taken the sub-goals will be much smaller chunks of decision making.

Also the game is fairly unpredictable. I know I've mentioned this as an issue before (I want the player to be able to feel at least somewhat in control of a situation) and I will work on it, but on a bigger scale it's such an integral part of the game design that it will just have to be dealt with. Which is something I don't necessarily view as a bad thing, because I think fun stems from a good combination of random and controllable. Think about tetris, it's random what blocks you get, but how they behave is completely deterministic. Rain World has a similar dichotomy I think, what creatures are where is hard to know, but how they behave and interact can be learnt and manipulated (or, it will be like that, once I clean out some of the weirdness and randomness).

I'm kind of aligned with fizmats idea of animal-level and human-level intelligence here, and that kind of reflects what I mentioned above - the slugcat is intelligent in split second decisions, but doesn't necessarily prepare elaborate traps. Definitely not crafting. That said though, the slugcat is the player's avatar, and whatever the player is able to think of the player is able to think of, you can't get in the way of that.

The third factor is something I think of as "world self containedness". Hmmmm examples. A self contained game world would be Pac Man. In pac man the little pac man creatures are what they are, and they are what they do. Ghosts chase, pac man eats. You don't really question why they don't do anything else, because they are what they do and all they are is what they do. You don't ask yourself why pac man doesn't try to talk to the ghosts for example, that's just not in the scope of that world. A non-self contained game world would be GTA. GTA attempts to mimic the real world, and thus its canon suggests more possibilities than its mechanics can provide. In GTA you can find yourself thinking "god why doesn't he just push the box with his hands" or "if I just had the option to say this thing to this character I could've solved this mess" or "why can't I open the trunk of the car! I want to open the trunk!" or an infinite amount of other things. GTA suggests a world where you could become a painter and spend your days painting abstract art (namely our world, where you can do that) but it doesn't provide the mechanics. Pac Man suggest a world where only eating is possible, and eating is also what you do.

I get the point of both ideas, when doing something movie-inspired like GTA the latter option is obviously preferable. But personally I prefer self-contained worlds. A computer game object is only its actions, and in a self contained game world it should ideally only represent those actions as well. Pac man eats, ghosts chase. I have a bit more technical resources than pac man, so I can make a slightly more complex world, but I want that same tightness of design. I want my creatures to be the things they do, and to be pretty much only that. The slugcat is quick, jumpy, climby, stealthy, nervous, always on the move, hunting and desperate to stay alive at the same time. The lizard is lazy and slow until it spots prey, then suddenly determined and persistent, making every single move in order to achieve the goal of reaching the other creature. The fly is a bit goofy, concentrated on its own business which is kind of obscure what it is, but suddenly panicking in order to preserve itself, especially when the behavior is amplified throughout a group.

Those concepts are realized through the actions - jumping, climbing, running, flying, chasing. The animation is then intended to amplify these hinted personalities further, but is always based on the actual game-relevant interactions. The slugcat for example has a nervous gaze switching from object to object, similar to the personality its behavior suggests - never really focused on a goal, but always determining the situation in this very now. "Was I one millimeter from death half a second ago? That's irrelevant now, because now I have a 0.3 second window to catch this prey, so I better give it a shot!" The lizard on the contrary is goal focused - staring down its target with tunnel vision, only giving other creatures a quick glance as they appear in order to make a swift calculation whether it might be worth it to switch target.

The idea is that interactions added should be in line with these personalities - further defining the creature using the things it does as building blocks. The slugcat shouldn't play basket ball, craft a gun or run for president. It would be out of character. And worse, it would break the self-containedness. If you can craft a gun, why can't you make a car? Suddenly it becomes obvious that the limitation is not the edge of this world, but of what I could be bothered to code when making this game. Willing suspension of disbelief punctured!

Dragging a corpse as a bait? Maybe! It could definitely be a part of the slugcat skill set. It's not vastly out of character, just maybe a little, as it suggests thinking several minutes ahead, which we haven't seen much of so far. But if it does add to the game, or if it could be done as a more on-the-spot action rather than a lengthy and deliberate one, it could even be a welcome nudge in a new direction for the character. Giving it more depth! But, as you can tell if you made it this far, there are several things to take into consideration when adding something like this.

That's what's going on in my head when I think about what new features might be like!
 
nr6S.gif


Here's a lizard catching a slugcat and heading back home with it. Excuse the slugcat being on top of the lizard's snout in the later rooms, I haven't gotten around to moving it in there for situations where the grasp exists on spawning the creatures.

The lizards (and other future creatures) can now keep track of a home den. If they don't have one, there's a routine that looks for the closest one throughout the world map. Whenever the lizard re-maps movement territory ("it seems I'm in a tile that I had mapped as inaccessible, I should do a new flood fill to check what tiles are actually accessible to me") it also restarts this routine. If the routine runs out of options, it'll tell the lizard that it's stranded - in an area from where it can not reach any den. I think it could be pretty cool to have creatures panic if they're in this situation when the rain comes. Otherwise, it finds a new den and remembers that one as its home base instead.
 
IcUjr.gif


1h369.gif


Lizard tongues!

That second one took sooo many takes  :eek: But it made me notice some details that needed fixing, so that was a plus!

As the white lizard is the most notorious tongue hunter, I implemented the white template in order to get some tongue behaviors in place. I've not done any graphical work on it what so ever though - as some of you might remember the white lizard is supposed to have a quite unique look too it - but here it's just like the others but with a white head. Don't look at that, look at the tounge :p

In the game it's just represented as a point lashing out, but the graphical module for the lizard improvises some rope physics-ish stuff on top of that, with the triangle mesh code from the tail. The tongue gets slimmer if stretched, and is allowed to curl up a bit when very relaxed. As it's spit out each point along it is given a slightly random vector, making it initially come out curled up as a package, to then later straighten out. I'm very happy with this effect, it looks "nature documentary" as James put it, and a little organic and weird. Good times!

What's worse is the actual gameplay implementation. Lizards are a bit less good at biting you now compared to the lingo build - they used to pretty much be "kill on touch", but now they have to have a more reasonable position to get a bite in. It seems that when dragging you in with the tongue, they generally don't tend to get that position in order, meaning that it's quite easy to get away in the time between the tongue releasing you and the jaws actually biting you - as you can see in the top gif.

I could make it so that they automatically get a grip of you if they've caught you with the tongue, but I like that you're not necessarily 100% doomed once they get you. It should be a serious situation though, so maybe they'll get a little bonus in their bite check right after releasing a tongue grip, or something similar. You shouldn't be able to count on getting away.

If they miss you and hit a wall, there's a chance they'll get stuck there, which looks kind of fun. Each frame has a certain random chance that they'll get loose again, so they could be there for no time at all, or quite a while.

The blue lizard also has a tongue, but much shorter and less effective. While the white lizard will stay still once it got you, and try to reel you in slowly, the blue lizard (which is not considerably heavier than you) will rather use the tongue to let itself be dragged after you, which is almost more annoying because it gives you less time to think. However, the blue lizard doesn't use the tongue quite as much, and will miss you most of the time it tries.
 
vU5HV.gif


Spears, spears, spears. A loooot of trigonometry going on today, with how the spears are supposed to get stuck in a certain angle, and then keep that angle as the creature is rotating.

Also, gluing one object to another in a way that didn't render them apart when moving at high velocities demanded a pretty deep dive in the game engine. What had to be done was separating updates of graphical modules, putting it after the game object updates, and also pass down a parameter to all objects so they could be asked by other objects whether or not they had been updated this frame. And a lot of other stuff, haha. But now one object can be glued to another, and it will stick snugly to the right coordinate even if everything is moving at a high velocity.

Further spear stuff completed today includes ability to stick spears in walls, and lizards having their spear-reflective heads implemented to much annoyance when play testing. Nailing lizards to walls is also in, I had fun this morning dodging around a courtyard as a poor white lizard sat impaled on a wall and tried to hit me with its tongue. What's new from the lingo version is the ability of spears to hit decorative body parts, such as the limbs or head in the case of the lizard. The spear doesn't really hit those parts, but the chunk they're attached to - but it gets it rotation and a bit of its placement from the decorative body part, making it look as if it's stuck there. With lizard legs I also implemented the disabling of limbs from a while ago when they get hit by spears - it looks pretty tragic, but also pretty cool.

The actual spears still look like red sticks though, so you'll get to see them later!
 
Dev working on implementing water

Added distortion effect below the surface and correct perspective on the surface. Also started a little bit on having the physics react to the presence of the water.

Color still WIP.

FittingColorlessEquestrian.gif


U4R7p.gif

2 DAYS AGO, Joar was saying water effects were probably impossible, yet here we are and this is some of the best looking water in a platformer i've seen.
 
Really good discussion about keeping traversable water dangerous and scary, sticking to the whole "killer rain" theme of Rain World

Messing around with slugcat swimming... James and I are discussing this from a game design perspective as well. However, diving is turning out to be so much fun that I think it'll just have to be in the game... But maybe in a limited way - like, you can dive down, but you'll have to be skillful about it or you'll drown very easily. It all needs to make sense with the "rain kills you" theme as well, if the slugcat is perfectly comfortable under water that whole thing seems a little less viable. But, all those questions aside, the simple aspect of controlling the slugcat in the water is turning out pretty good! I'll gif you when I have some bubbles.

Haha these are great questions and discussion! Jusst so Joar doesn't have to go back through and answer all of them:

- Yes, the concept is that rain kills by battery, pummeling and smothering anything that gets in its way (like a huge natural power sprayer is kind of the idea), but its def true that does seem to not be terribly extreme since the game playing audience is used to "acid poison lava void levels" sort of thing. So we'll need to make sure the threatening "water = dangerous" theme is carried through to this new traversable form to.

One thing is that you will often encounter light rains in the game as a warning, building up very obviously to the deadly downpour, so we are thinking of keeping that same mechanic with the water: safe when relatively calm, but then can build to deadly rough waves and storm when the Death Rains come, before being pummeled AND drowned.

- as for the another world style tentacles, prettttty much? unless we want CRAZY feature creep, we'll want to have a "reason" to limit the scope of what the cat can do in the water to a fairly shallow reach (for now at least), so we've talked about having some SCARY WEIRD SEA THINGS lurking down there to do just that. There have been a few loosely defined water region creatures in our "design document" (LOL) for a while, but this will be more of an elemental, unspecified thing im guessing. Unknown things moving around deep under the sea is probably the scariest thing ever, so I feel like this will be amazing for mood. Joar's water distortion effect already terrifies me, so im SUPER looking forward to seeing what he can do with this.

Im SO excited that the water regions are working out. You dont even know. It's been something we've been talking about for a long while, and from my perspective its necessary to complete the rain cycle motif. It ties into a few other things which are now possible because of this, like a puzzle piece being put into place. Got big plans for this!
 
Looking at the gifs from the beginning compared to now is a real eye-opener.

From this.

spearFight.gif



To this.

vU5HV.gif


And now with water effects as well.

U4R7p.gif


It just keeps on getting better and better.
 

epmode

Member
That tongue stuff looks insane. I'm glad I backed this.

(I hope he's going to add splash effects/displacement to the water)

Tell me again that all indie games look the same and I'll laugh in your face.

I've seen that exact comment leveled against Rain World in early GAF threads. People are silly.
 
Status
Not open for further replies.
Top Bottom