Euphonia : De Son Et De Soleil

Overview

As part of my final year work, WildThorns Studios (Laniesse Dorian, Lebrun Lili, Schneider Robby, Bajeux Marius, Gollas Mathéo, Califice Antoine and I) created the game Euphonia. This is a narrative game of exploration and puzzle solving where our main character, accompanied by a small robot, discovers the village of their ancestors and tries to understand past events.

In this project, I handled the development of the mechanics and interactions, as well as the UI used for the various puzzles.

Used Tools

I mainly used Unreal Engine 5.5 in blueprint to create the mechanics and UMG for the UIs.

Gameplay Systems

Riddles

For this task, I created a modular UI in order to be able to change the type of puzzles and solutions more easily.

At first, I started with a UI by puzzle because each one had specific needs, but given the number of interfaces that can be used in the game, I started with a UI capable of adapting to specific needs. (type of puzzles, solution, symbols/words usable for this puzzle, dial already completed or inaccessible).

In terms of inspiration, since we work with a register of 8 symbols, I was inspired by the radial menus of weapon selections like the one in GTA 5.

One obstacle I may have encountered was the use of the mouse, which did not select the same angle depending on the window sizes.

Riddle: Symbols Association

This puzzle is based on the observation of the environmental elements of the game and allows the player to complete an interface with symbols. Once successful, the system allows the player to move forward in his adventure.

Riddle : Charade

This puzzle serves only as a reference for the player to enter a code on the handpan interface.

Riddle: Words Collection And Association

This puzzle works as the first type except that symbols are replaced by words. To find these words, the player must read the different panels of the area in order to locate and collect the important words for the resolution of the puzzle.

It results from the first version of the mechanics of language comprehension, but since it is too complex on a large scale, it has been reduced to match a smaller scope that is accessible to the player.

Light Reflection

For this task, I created a system that allows Lao (the robot companion) to reflect light in a cone in front of him.

The obstacles I encountered were finding how to make a visual cone and producing a network of raycasts corresponding to the diameter of the cone.

So I carried out several checks to detect eligible targets:

Handpan

For this task, I created with Mathéo Gollas a UI allowing playing combinations of symbols and changing the solutions more easily. Feedback that is provided to the player when they enter a bad or correct code.

For the validation of a response, each object that can be activated by the handpan is notified. If the index of the zone or the handpan is played and matches the index of the object, then it checks whether the code play matches its own and activates accordingly.

The obstacle I encountered is related to code validation. Initially, the player was allowed to validate his hypothesis at the center, but this way was less understood by the players. So we switched to a version that automatically validates the code

Scrapped version:

Final version:

Symbols Menu

For this task, I created a UI that is completed as the player progresses through the puzzles in order to keep track of what they have already accomplished. The interface fills itself with each puzzle resolution.

A first version consisted of a hypothesis log where the player selected a pair of symbols and linked them with words found in the environment. This version was of little use, so we preferred to create a journal that contains all the discoveries we make by fire and by measurements of puzzle solving.

Scrapped version:

Final version:

Object Reactions To Player Actions

For this task, we created with Mathéo Gollas different interfaces reacting to the player's actions. We made this choice following the number of objects with which we had to interact, and having common systems for each similar object makes the task easier. Each object uses the functions of the interfaces in order to introduce their operation.

The types of objects created are:

Zipline/Cable Car

For this task, we created with Mathéo Gollas a system allowing the player to travel from one point to another using cable car cabins. These systems can either be powered directly or must be powered by the player's actions.

At the start of the game, a cable is pulled between the 2 points given in the cable settings, and these two points are set as departure and arrival when the player enters a cabin.

While the player crosses with one gondola, another takes the opposite route so that there is always a gondola available at any station. The cabin variables swap their values at the end of each ride so that the player always stops in the right place.

A first version was to force the player to follow the cables of the zip line.

Scrapped version:

Final version:

Settings

For this task, I created a UI to meet accessibility needs:

All these parameters are also saved in a ".sav" file that contains the parameters and associates them with the game start.

Created Tool

Respawn System

A respawn system is in case there is a fall of the character into the void; the player is placed back in the nearest area from which he fell.

To do this, target areas are distributed over the levels, and each time the player crosses one, it will reappear there when the player crosses the collision area at the minimum height that the player can reach.

Links

Game demo: https://wildthorns-studio.itch.io/euphonia

Rookies page: https://www.therookies.co/u/WildThornsStudio