In this video (GDC 2016), Rain World developers explain a lot of the procedural animation process in the game.

However, it is not clear to me how you go from physical locations and bones to the smooth pixel art rendering as shown in the video at 8:18 and 23:51. Is that the engine doing the rendering then a pixelation shader is applied on top of it or is it some kind of custom renderer that takes the bones' positions and "manually" draws the pixels?

Add picture. Question is about the method used, as (I try to clarify) in the drawing:

  1. build spline from bones then pixelate via shader or pixel perfect camera.
  2. build the tentacle from multiple sprites then (optionally?) pixelate.
  3. other techniques?

enter image description here

Please note I am totally new to game dev so assume close to 0 knowledge on these topics. I just find the graphics on this game particularly amazing and am curious as the main dev is an artist before being a coder.

  • \$\begingroup\$ There seem to be two main steps here: 1) Taking discrete positions along the tentacle and joining them into a jointed series of line segments or a continuous spline curve, 2) Rendering that series of lines/curves in a pixelated fashion. Are you wondering more about 1 or 2? \$\endgroup\$
    – DMGregory
    Feb 17 at 16:57
  • \$\begingroup\$ Actually, both your 1 and 2 I guess. Added a picture to clarify the question. \$\endgroup\$ Feb 18 at 12:49

2 Answers 2


Looking around modding resources and communities...

The creatures are made of multiple sprites, each one picked depending on orientation, plus some simple polygon shapes (mainly for the tails). The animation seems to be mainly cutout animation, plus stretching and some masking (a silhouette through which we see a section of the actual texture that is "facing the camera").

The tentacles would be made of a large number of segments, which allow them to appear curve.

This is a quote form the devlog:

This is what the animation system of rain world essentially is - it's actually not as procedural as you might think, because it's not just a magic formula that makes everything look cool. Instead it's heaps and heaps of special cases, hand crafted "animations" that are made more or less frame by frame, but not by drawing sprite sheets but by deciding what force should affect what body part at what time. The cool thing about it certainly isn't that it saves a lot of time, but that combinations of animations and smooth transitions between them can exist. If one body part is for example animated to do something, those motions might be defined in relation to the overall alignment of the body, which will make it look a little bit different each time depending on what else is going on.

This, combined with the explanation on the linked video, implies that creatures have two skeletons. One for simulation, and one for animation, which can be more complex. The simulation would be concerned with making sure a motion is possible, while the "cosmetic layer" would try to approximate the simulated motion while making it look organic.

I believe the game uses a lot of inverse kinematics and physic based follow through secondary animation.

It is unclear to me, but they might be using a "pixel perfect camera" (render to a low resolution texture and display it) which is common in pixel art games made in Unity, which is the engine of the game. However, the assets seem to be designed for the resolution at which they are displayed.

And, of course, the result is stretched to fit the screen.

I also want to note that game enviroment 3D effect is done via a large number of 2D layers and paralax. Just in case that is what is making you think it is some pixelation shader.

  • \$\begingroup\$ +1 for the complete answer and the devlog link, but I am still not 100% sure how they did it. From your answer I think there is a ton of custom tweaking and rendering tricks for each creature... \$\endgroup\$ Feb 18 at 12:52

The game is rendered at a low resolution and then upscaled to fit the monitor size I think.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .