
About
About Echoes Of Silence
In Echoes of Silence, you play as Yuto, a young man searching for his friend in the haunted city district of Kurokawa-cho.
Uncover dark secrets and encounter the paranormal as you explore the dimly lit streets of the abandoned neighborhood, using your camera to communicate with spirits and solve puzzles.
Atmospheric Environment
The haunted city district of Kurokawa-cho is one fraught with ghostly apparitions and supernatural occurrences. Immerse yourself in the spooky atmosphere.
Camera based exploration
Using your special camera, observe the supernatural occurrences happening around Kurokawa-cho and solve puzzles to progress through the story to find out what happened to your close friend.

Engine
Unreal Engine

Team Size
16 People

Genre
Third Person Narrative

Development Time
~8 weeks
Project Responsibilities
Technical Design
-
Designed the core gameplay loop
-
Created a camera-based interaction system with additional interactables.
-
Implemented animation for our character in-engine by using the animation blueprint.
-
Maintained project stability by reporting and solving emerging issues
Production
-
Transferred the producer role to a fellow student in week 5 of the project after setting up various production processes to focus on tech design.
-
Handled and performed team QA testing.
-
Handled the teams' Scrum responsibilities.
Establishing Gameplay
Joining this project after the original prototyping phase I was shocked to find out there wasn't any clear gameplay loop established.
After learning of this I first sat down together with the team leads and wrote down our 3C's (controls, character, camera). These were mostly determined but had not yet been written down anywhere.
After this, I worked on sketching out a core gameplay loop based on lead feedback. This core gameplay loop was then used to make a list of minimal gameplay features categorized on minimum viable product requirements.
Ultimately we managed to achieve all the high-priority gameplay features listed, although some like the Location-based movement systems were down-scoped.
Our final gameplay is more reminiscent of a point-and-click adventure which I was quite happy with, although I do feel we could've achieved more given more time.

Camera Based Interaction system
Final Product
3 of the above-mentioned High Priority Gameplay Features could effectively be combined into 1 overarching camera-based interaction system which I created.
The player can use a camera to observe supernatural occurrences. When the player zooms in on interactible actors the camera will start to shake. After a set amount of time, the triggerable actor is activated and will activate a nearby event or triggerable sequence.

VFX Work


Delivered VFX
Our Art Lead asked me to work on several VFX as he knew I had Niagara experience.
For our game, I made 2 effects:
-
A supernatural distortion effect for visualizing supernatural activity without using your camera.
-
A dissolving wall that would glow and dissolve when triggered, opening up new passageways.
Production and QA

My experience as Producer
When I joined the team, the project was quite unorganized and was somewhat directionless, and as such I stepped up to the plate in order to get things moving forward smoothly.
Once I had set up the required processes for effective development, I passed the producer role over to a programmer colleague who wanted to learn more about the process, allowing me to focus on solely technical design for the latter half of the project (minus some assistance here and there of course).
Work done for team
I helped our team as a producer by:
-
Creating the backlog with the team.
-
Prioritizing and organizing work based on people's expertise.
-
Setting sprint goals together with the leads.
-
Helping people work within Jira and maintaining our Jira board.
-
Leading standups and organizing sprint reviews.
-
Communicating with stakeholders about progress on the project.
MISC

Importing animations into engine.
Together with our teams' animators, I worked on importing their animations into the engine and applying them to our player character in gameplay.
For this, I had to work within the animation blueprint and create a new locomotion state machine. For one-off animations such as the camera pickup, I made use of montages inside of the player blueprint.
For the player's locomotion, I created a blend space between walking, jogging and running.
Design Process
I knew that these interactions would be the core of our gameplay so my goal was to make it as easy as possible to create a lot of triggerable actors with their own unique action that could be linked with an Interactable actor within the scene.
For this, I created BP_Interactable and BP_Triggerable.
BP_Interactable I wanted to be activated using the handheld camera zoom. Using the line trace logic written by a fellow developer for the camera zoom, I detected when the player was looking directly at the interactable.
When this happens the camera starts shaking and after about 6 seconds the interactable triggers, changing the VFX color and sending an event to the in-scene linked BP_Triggerable child, activating the set logic of that child class.
The goal of having these 2 parent classes was to give the team a lot of flexibility to mass-produce a ton of unique triggerable events.

Dissolving Wall Material
For the Dissolving Wall effect, I had to dive into materials a bit to create a material function that would allow me to dissolve the wall's texture based on a float parameter and have the edges of the dissolving wall glow.
Credit for this dissolve logic goes to Coreb Games on YouTube


Dissolving Wall Niagara System
I then created a mesh-based paranormal effect for the wall which was a combination of my distortion effect and some additional glowing geometry.
As this effect was used in several locations and I didn't want to impact the framerate I used Sketchpad in Niagara to write a little script that reduced the amount of particles spawned based on the distance of the effect from the player, ultimately reducing performance cost.


Play The Game!

QA work for the team
While I was working as a producer I didn't want to assign myself technical work as this might impede or take preference over my production work. So instead of that, I used my extra time not spent directly on production setting up a QA process for the team in order to maintain project stability.
This included me:
-
Creating a smoke test for checking build quality.
-
Setting up a work submit pipeline for the team to adhere to.
-
Reviewing work from all variations throughout the day.
-
Maintaining a bug list and where possible fixing minor issues in the engine.
Work done for team
I helped our team as a producer by:
-
Creating the backlog with the team.
-
Prioritizing and organizing work based on people's expertise.
-
Setting sprint goals together with the leads.
-
Helping people work within Jira and maintaining our Jira board.
-
Leading standups and organizing sprint reviews.
-
Communicating with stakeholders about progress on the project.

