Foxblade Fable: Pre-rendered BGs

Foxblade Fable is a personal project of mine, inspired by classic PlayStation 1 RPGs such as Final Fantasy and Chrono Cross and powered by the Godot game engine. The game aims to adhere to visual limitations of the PS1, and borrows graphical techniques used by games of the time such as pre-rendered CG backgrounds.

Game environments are first created in Blender. As the background is pre-rendered, I’m able to make use of the full gamut of features, including the Cycles renderer, procedural shaders, and even geometry nodes (used for the procedural cobwebs shown above)

Once the environment is created, it is rendered to a series of JPEG stills. Additionally, a subset of the geometry is exported as a GLTF file. Both of these are imported into the Godot engine.

In-engine, the imported geometry is assigned an unlit shader which writes 255 to the stencil buffer and the camera is assigned a transform and field-of-view to match the Blender scene. The stencil buffer is then used to mask dynamic geometry and composite it with the pre-rendered stills created earlier. As a result, dynamic objects such as the player are seamlessly composited with the environment with correct depth.

Camera panning is achieved with a pair of global variables – Zoom and PanOffset. Panning is simply a 2D offset applied to vertices after projection. This way, even as the camera pans the projection is preserved and allows the background to remain static.

Additionally, a copy of the player mesh is drawn reflected around the global Y axis. This is used to implement dynamic reflections, as shown in the sewer demo room.