Crescent Falls

ArtFX Last year game project : Third person exploration/puzzle game with 2 parallel world

September 2018 - June 2019

Genre : Exploration Puzzle.
Production Time : 10 Month.
Softwares : Unreal Engine, Blender, Zbrush, Substance.
Task : Environment Art - Technical Art.


Team :
Sofie CHABROL - Artistic Direction, Concept Art
Gaspard EICHER - Character Art, Animator
Lorène HUE - Game Designer, System Designer
Trystan SARRADE - Environment Artist, Technical Art
Stève SIMON - Game Designer, Programmer


Specialist :
Morgan DUFOUR - Sound Designer
Maëva GODARD - UI Artist
Dorian SCARDINA - Composer

Crescent falls in an Exploration/Puzzle game where you can change dimension. You play as Heather, a young witch. She has the power to switch between the Human and the corrupted world. The corrupted dimension is populated by an evil force that is slowly destroying the human world. Heather has to explore the Forest around the town of Crescent Falls to retrieve the old Lost Artefacts in order to have enough magic energy to close the rift between dimensions. We are 5 students of ArtFX working full time on this project; 2 Game Designer and 3 Artists. Also 3 others people for the the project management, Music composition and sound design as Freelance.


The main challenge of this project was the switch of dimension mechanic. The player can change dimension everytime he want for resolving little puzzle and pass obstacles on his path.

Some objects needed to be present in the Human world and not in the Corrupted world. The player need to Switch from one world to another quickly. He can also switch specifics objects and some environment behavior change between these dimensions. For example, the water is frozen in the Corrupted world, so you can walk on it. But in the human world, you will simply drown.

Stève SIMON, the Game Designer and Unreal Scripter of the project created a handy system in unreal with Level streaming, so when you change dimension in game, only some part of the level will be changing. So we can store objects that are only present in one dimension inside a specific level streaming, and then load or unload it as we wish.


For landscape, the material detect in what dimension we are, and then only change it's texture. So we can have specific grass or dirt in each world. But the topology will rest the same. Same thing for the Foliage; I've made a system that dynamically change the mesh of one type of foliage (for example, PineTrees) and replace it with the corrupted version of the same foliage (Corrupted PineTrees mesh). So when we have a tree in one dimension, we have it in the other one with a different aspect.

The optimisation of the game was pretty tough. We need to change every texture, light and mesh in less than 1 second (the time for the character to Switch between world, if it was too long, it will be bad for the gameplay feeling). So every light and Foliage mesh had to be dynamic. And material for the landscape and river had 2 times more shader complexity than usual since it had to store both world shader logic. It was also quite production heavy, since almost every asset of the game had to have his corrupted version.

But we made it ! The game is running at 60 FPS in High settings on a 1070 GTX. And at 30 FPS in Medium settings on a 960M (Laptop graphic card).