Sinner’s Sorrow is a game that relies on setting up a heavy and tense atmosphere. One of the methods we use to achieve this is with the lighting.
Below you see a simple tree branch and a couple of rocks to the left. Here you can see how the light bends around the objects and creates the illusion that we are looking at objects with mass and depth as if existing in a 3D plane, while they are still 2D images. This creates some cool possibilities to play with the lights and how they create situations for the player. For instance, what if all the lights suddenly went out and you find yourself in near darkness, relying on a small source of light that you have on you? Good luck not getting tangled up with something nasty hiding in the darkness!
This method of lighting is achieved by using something called a normal map. A normal map is a variant image of the regular image used. This variant gives the image the necessary information to react to lights passing by. For instance, the regular image and the corresponding normal map for the branch look like this:
We use SpriteDLight to automatically generate these normal maps as creating these manually is a bit too much. These images are then combined in a single shader which has parameters that can be adjusted to alter some of the image properties (such as how intensely it reacts to lights or how much the light wraps around the images). This can all be adjusted in real-time.
The lighting in Sinner’s Sorrow is a core component of the game to create the atmosphere, facilitate gameplay and set up an engaging visual style, even more so because we are working with a black and white style which brings challenges of its own. But with this style we can set up some awesome and surprising encounters.
As a teaser for what you may find in your path, below is part of a scene we are currently working on. Note that due to unavoidable video compression the in-game result actually looks a lot nicer!