Backgrounds are the building block art assets for each room in an adventure game. They give depth and set the mood.
Escoria supports multiple features for backgrounds.
The main node type for backgrounds is
ESCBackground. Additionally, certain
ESCTerrain add more features to the background.
Backgrounds can come in all sizes. They may be the exact size as the screen, or they may be bigger or smaller. Escoria uses its Camera features to handle different-sized backgrounds.
Camera limits define how the camera follows the player and pans over the background. The developer can enable and disable camera limits in the game to temporarily hide or show parts of the scene.
Parallax layering is a technique used to add depth to a two-dimensional graphic by moving different layers at diffferent speeds as the camera pans over them.
Godot has that functionality built-in with the ParallaxBackground and ParallaxLayer node types.
This tutorial introduces their functionality.
Basically, after adding both a
ParralaxBackground and at least one
ParallaxLayer node to the scene, the
motion_scale specifies how fast the movement of the additional layer
will be moved in contrast to the static background.
layer parameter of the
ParallaxBackground should be
set to 0 to allow the character to move behind the layer.
In addition to the Parallax method, another technique to add depth to a two-dimensional scene is to change the size of the player character as it walks from the front to the back of the scene (or vice versa).
In Escoria, this is achieved by using the different parameters of the
ESCTerrain node in the scene: The
scales parameter uses a texture.
Darker areas of the texture result in a smaller sprite, while lighter areas
scale the sprite up.
scale_max limit the scaling.
Another feature to make rooms more lively is to give them dynamic lighting, so that certain parts of the screen tint the character sprite as though it was walking through different light sources in the background.
lightmap expects a texture that is to be laid over the
scene and tints the character according to the position of the character in
lightmap_modulate can be used to additionally tint