← Back

Ornament Express

Ornament express is a VR escape room game located inside of a train owned by a thief. The player has to solve puzzles and find specific objects, there are also a plethora of objects the player can interact and play with.

Click on the image to go to the steam page

What I Worked On:

  • Favorite playthings I worked on
  • Custom plugin to break objects
  • Code and Blueprint examples

Favorite playthings I worked on:

My favorite plaything I made during this project is the functionality of the living plant you can see in the video below. You can feed it random items from around the room and it will spit a bone back out. by default it has its mouth closed and will only open it when an item it can eat gets nearby.

My second favorite plaything I made is a Turtle shell that plays sound based on where you hit it.

The Third favorite plaything I worked on was a singing fish. if you press the button it starts playing an audio component and the mouth will move based on the loudness of the audio component.

And my fourth favorite item is a gramophone in which you can place different vinyl's for it to play different sounds.

Custom plugin to break objects:

For this project I made a destruction plugin that allows you to have destroyable objects in any project.

It works by splitting the model into multiple parts which can be done manually or using cell fracture in blender. then you place all the parts as child components to the full model. And when it breaks it turns off the full model while turning on the broken parts. and afterwards it will shout the parts outward using a radial force component.

There are a few customization you can apply to the breaking component. To increase performance you can make the physics component of the parts sleep after breaking and you can destroy the parts after a delay or when the player leaves a certain range. you can also set the sturdiness which determines how hard the object needs to be hit for it to break, and you can even make it so it does not break on collision so you can make your own breaking functionality by manually calling the break function.

Code and Blueprint examples:

In the two images below you can see two examples of c++ code for the breakable plugin. The first one showing the Break function which handles everything when an object breaks. and the second one is the initialization function for the break component.

In the image below you can see the zoomed out blueprint structure of the plant that eats objects.

In this image you can see a more zoomed in version of the functionality in which the mouth opens when an eatable objects gets close. this function gets triggered on a timer to increase performance.