Ode aan Ede

Musical VR experience in remembrance of beloved musician

Contribution:
System programming - Mechanics - Localization - UI

For my internship at Indietopia I worked on expanding a VR experience about "Ede Staal", a musician from Groningen who was active during the 19's

The game is a walking simulator with some light-puzzle solving that are based around the songs of Ede Staal.

Some of these puzzle's involve looking at specific points or gardening.

Engine

Unreal Engine

This was my first time using Unreal engine, and my first time making use of the blueprints scripting method.

During my first 2 weeks I was tasked to learn the basics of Unreal Engine, and found it very easy to adapt to the different environment.

I only made use of Blueprint scripting during my internship.

My work

Localization

As one of the dutch interns, I was tasked to work on a localization system for the game

There was a pre-existing translation system in the game, but it was old and difficult to use, not only that, but it did not work for quite some objects in the game, for example the UI elements made by the VR framework we made use of.

So instead I did some research on localization in Unreal and quickly found out that there's a built-in localization system inside of Unreal Engine, and after creating a discussion about it towards my colleagues and peers, I was able to convince them that it would be quicker and easier to switch to this system.

The way this system worked, and I found easier, was to create string tables that contained all the text of that scene/level, which then allowed me to link data from that specific string inside that string table to a text element.

The localization system would then allow me to create cultures and translate each string which would then change depending on what culture is selected in the game.

The following are some of the objects I created that made use of my new system.

The left was the original introduction board for the level, however the previous intern made it in photoshop, so I turned it into a widget with in-engine text, which was easy to alter when changes had to be made, and also made translation possible.

Minitags are objects created by the VR framework we used, and after researching how that worked I figured out that the framework used an outdated translation method with the use of "keys", so I made some small changes to the code so it could take in a text and transform it into a key, making translation possible.

Green soap spray (programming and VFX)

One of the levels was focussing on Ede Staal's garden with the song titled "Mien Toentje" which means "My (little) garden".
In this level the player had to bring life back to the decaying garden by tending to the beds and performing certain tasks, one of those was spraying the garden beds with green soap to prevent bugs from damaging the plants.

The way this task worked before I worked on it, was as following: you pick up the green soap spray, hover it over the garden bed and the task would complete.

This was very lacklustre and not realistic, so I took up the task to make this task more realistic and fun.

I created this particle effect using niagara and was surprised by how easy it was to implement and alter.

It is made out of 1 cloud effect and some water splash effects.

I also animated the pump to smoothly and realistically move up and down.

Here's how the blueprint is set up in case it is interesting to see how it is made.

When the SprayFX event is called, it checks if the task has already been completed, if not it will play the pump animation and enable "Generate Overlap Events" allowing it to activate the already existing code for the activation. The same thing happens when the item is picked up en the right trigger is pressed.

When the animation has finished it turns the "Generate Overlap Events" back to off, this way it only activates the code when the green soap is spraying.

underneath is the code for the pump animation.

Menu UI Design

One of the missing features in the game is a menu, one an interactable screen with tasks, controls and language options etc. So I was tasked to work on a design for the task list.

Together with the team we liked the idea of using a book that would flip open and show this menu in it's contents, and luckily a book model was already made before, so we could re-use that same asset for this menu.

So I opened up Adobe XD and started creating concepts and designs, while of course looking at similar games and their menus.


Here is the result:

Design of the book menu in adobe XD.

This design got accepted and I was allowed to put it in the game.

Here is a screenshot of the menu in-game, I made this work using widgets that are placed in front of the pages. I also created the scripts for the tasks to show which one have been completed, and of course funcionality for the buttons including changing language and colour blindness setting.

Various tasks

During my internship I also worked on various smaller tasks for Ode aan Ede, like small bugfixes, or designing new concepts/solutions.

A task where the player had to collect radishes and put them in a wicker basket, for this task I made a basket with a counter on top to show how many radishes you need to collect and of course how many are already inside the basket. You'd have to select each object that you could add to the basket, since that way the counter could easily be more or less and would be multi-functional as it could be repurposed in the future for a different task by changing the mesh of the basket.

In the end, my future-proofing turned out to be for the best as I was able to re-use it for another task in a different level where the player needs to clean up children's toys from the floor.


My roles

During this project my roles were:

Tools used