My role on the Virtual Viking Longship Project this summer has been to use Unity and virtual reality integration packages to provide functionality to our educational virtual reality experiences. Much of my summer was spent learning how to create virtual reality experiences from a curriculum published by Unity, a popular game engine. This started from the very basics of creating a new project that could be run in VR and concluded with creating custom scripts that provide complex behavior to objects. It also provided a guide to beginning to implement your own project, which we followed to make a basic version of our first VR experience.
For the last couple weeks of the summer, I have been working on developing the functionality for a mini game that will teach users how to row a Viking longship and give them a score based on how well their timing matches up with the established rowing pace. To add to the sense of presence, which is how much a user feels like they are in the virtual world, this game uses a combination of hand tracking and mixed reality, which combines virtual reality and real world objects, to make the user feel like they are rowing with an actual oar. When this experience is available in museums, the user will load into the virtual environment and see an oar in front of them, when they reach out to grab it, they will be grabbing a real world object that is secured at the opposite end to simulate the pivot point typically created by the ship. This makes the experience more immersive both because the user feels the oar in their hand and because this setup allows for the most realistic movement of the oar of the options I tested.
Once the user has grabbed the oar, they will be instructed to follow a series of targets to follow the proper motion of the oar. These targets disappear as the user reaches them and then reappear when the user has completed one full stroke. The user will practice rowing forwards before the game introduces timing. The user will gain a base number of points for hitting each target while rowing and will also gain bonus points if they hit the target within a certain time frame after hitting the previous target. This time frame is determined by experimental archaeology replicas of Viking longships and the pace the crews that sailed them found best for rowing. The user will be given the opportunity to row forward 5 times to gain as many points as possible. Eventually, they will be able to save their score and enter their initials much like an arcade game. All of these features require custom scripting to accomplish.
One challenge of creating this rowing minigame was learning a new package to integrate VR into the Unity project from the one I had been using all summer. For the most part, our project has used the OpenXR package for integrating VR into our Unity projects. This package allows us to build to many different VR platforms without making major adjustments. Unfortunately, the hand tracking with this package only allows for a limited number of recognized hand gestures, which do not include grabbing an object by using your palm, only by pinching it. This meant we had to switch to the Oculus Integration SDK. This package allows for more realistic hand tracking but limits us to building to devices produced by Meta. This means in order to be compatible with other devices, we will need to use the package published by the company that makes that device. For example, we have plans to make a build for the HTC Vive, which means we will need to download HTC’s hand tracking SDK and remake the game with that.
This summer research has allowed me to expand my knowledge on game design and development. I look forward to continuing this work throughout the academic year.