Year
Roles
Platforms
Tools
Time
Team
The objective of the internship was to create a VR game that would introduce the organization's facilities and educational opportunities in an interactive way. The game was developed using Unreal Engine 5 and Blueprints. The client initially requested us to create the game for VR controls but our development team decided to include PC controls as well. During the internship, our team visited KRAO's office at Kouvola's Kohoa center and photographed the facilities for reference. Besides the educational facilities, the player can learn an outdoor railway maintenance environment.
Teemu Ekblad — Lead Programmer
Ester From — Level Design
Oiva Kahri — Team Lead & Technical Artist
Elizaveta Kisko — 3D artist
Essi Kykkänen — Programmer
My main work focus was on programming functionalities for PC controls while Teemu was the VR specialist. However, I developed a few smaller features in the VR as well. The functionalities included the player's movements, interactions with objects, basic functionalities, and UI functionalities. In addition to programming, I worked with environment art. The office facilities needed to be replicated in the 3D environment so I used the reference photos to recreate the rooms' architecture and interior design with our 3D models. Some areas had to be simplified for the game. For example, the office's roofs were full of exposed clutter of pipes that were unnecessary to include in the 3D version.
The main task for the player is to get to know the education facilities and gather information about the educational opportunities. The game had to maintain a certain formality and simplicity which made it challenging to give the player more fun and interesting interactions besides reading information in a 3D world. My suggestion was to make the classroom whiteboard functional so that the player can actually draw on it. It was completely unnecessary functionality but more like a fun easter egg. The client had also requested that the player could inspect items by picking them up and rotating them. I made the inspect functionality work on PC mode first and then tried to implement it in the VR mode in a similar way but the methods weren't suitable for it. We ended up just using a grab-component for item inspection in VR mode, which was a more simple and suitable solution. Some of my programming tasks required working with materials. In the outdoor environment, there is a certain protection area near the rail which should be entered with caution. This cautious area had to be made visibly clear for player when they step inside it. For this, I made a red decal material that painted the defined area of the ground red. The only challenge was, that other objects inside the decal area were also painted red. The solution was to simply turn off receive decals from those objects that weren't supposed to be red. For the interactable objects I had to create a material that would highlight the whole object when looked at from a certain distance. From the object's material, a dynamic material instance is created so the material's parameter values can be altered through a line trace.
One of my tasks was also to create the railroads in the outdoor environment and make a train move along it. I made a spline for the rail objects so that they would connect to each other automatically according to the spline length and bend with the spline curve. This prevented having to place the rail pieces one by one on the ground. A different spline was needed to handle the train movement on the rails.
