Breaking down the tech behind Superliminal’s mind-bending illusions

4 0
Breaking down the tech behind Superliminal’s mind-bending illusions

Pillow Castle reveals the tech that makes their surreal puzzler tick.

Hi, I’m Phil, the graphics programmer on Superliminal, a first-person puzzle game based on perspective. I’m really excited for it to finally come to PS4 on July 7, so more folks can explore the surreal world we’ve created! 

In this article, we’ll take a look at some of the visual tricks we use in the game, and hint at some secret new content. 

Forced Perspective 

Forced perspective is an illusion where the viewer is misled as to the size of an object. Think of the classic photo of a tourist appearing to hold up the Tower of Pisa with their hand. 

When you pick up any object in Superliminal, it appears the same size no matter where you look. Pick up a small chess piece on a table in front of you, look towards a far away wall and drop it. It’s now a giant chess piece! 

Achieving this visual part of this effect isn’t too difficult, but having it interact with the environment brings another whole set of challenges. 

When you are holding an object it is continuously being moved to the farthest spot it can physically be, while still looking the same size from your viewpoint. 

To do so, we cast a multitude of rays from the player camera’s position, past the object and see what they hit. It’s not sufficient to capture just the outline of the object with rays, since the background you’re holding it up against might not be a flat surface. That means we need to scatter rays across the entire visible surface of an object, even if it’s just a cube (though we support arbitrarily complex objects). 

Visualization of rays being cast through the object from the camera 

This requires a pretty substantial density of rays, which presents some performance issues that we needed to solve with multithreading. 

Changing an object’s size can be used to solve simple puzzles like getting up to a ledge. But changing an object’s size also changes other physical properties it may possess. Enlarging an object will make it more massive, a light may become brighter, and so on. 

Our composer and sound designer, Matt, put a lot of attention into ensuring an object sounds as big or small as it is, helping to achieve the illusion that you have indeed changed the world simply by seeing things from a new perspective. 


Trompe-l’oeil is an illusion where an image appears to be three dimensional when viewed from a certain angle. A real-world example would be 3D sidewalk chalk drawings. 

This is used frequently in Superliminal in several different incarnations. In its simplest form, the player may be fooled into seeing an object that isn’t actually there. In more elaborate scenarios, objects can manifest themselves out of thin air when the image is seen from the right vantage. 

In some ways, 3D rendering makes these illusions easy to do: we can render an object from a particular viewport, and then have that resulting image projected again from that viewpoint. You can even do this in real life with a camera and a projector. 

However, these illusions rarely fall on completely flat surfaces, so we need to be careful not to draw on surfaces occluded by other surfaces. Using the depth information from the camera that took the original image, we’re able to render this correctly. 

Another issue is keeping the lighting in the trompe-l’oeil the same as in the scene. If the object goes from 2D to real 3D, the illusion will be ruined if lighting shifts at all. We, therefore, need to take great care when capturing images. This, along with other challenges, make trompe-l’oeil illusions tricky for level designers to set up – they’re dealing with geometry that is, but also isn’t there. 

New Content 

The PS4 launch comes with extra puzzles, trophies, hidden rooms, and other secrets. We had a lot of fun creating this new content, and I hope you enjoy finding it! 

Comments are closed.


    Loading More Comments

    Please enter your date of birth.

    Date of birth fields