Inspiration

Our inspiration comes from lack of human interaction during a time such as now due to COVID. We wanted to empower people to be able to connect in an immersive environment. The possibility to feel like you are just there meeting a brand new purpose. One of our goals was to keep our platform simple. We avoided any clutter in joining a lobby or even having pesky usernames. We wanted people to get straight into the action and speak to new individuals.

What it does

MingleVR runs on Unity and utilizes Photon services for the multiplayer capabilities. We utilized Tinkercad, Adobe Illustrator, and Photoshop to create some of the assets and imported a few others from Sketchfab. What does it actually do with all this tech? MingleVR lets users join a multiple room with another individual, making rooms a maximum of two players. They are able to speak using in game voice chat (not shown on video) and able to interact with the map around them. Users can make their own custom avatar and truly express themselves how they want to be seen. MingleVR also allows users to show their facial expressions with a single click of a button.

How we built it

MingleVR runs on Unity and utilizes Photon services for the multiplayer capabilities. We utilized Tinkercad, Adobe Illustrator, and Photoshop to create some of the assets and imported a few others from Sketchfab.

Making UI for VR

Emotion Wheel

We knew we had to create special UI objects that would be easily interactable using a VR controller so we made a wheel that pops up over the right hand controller.

Avatar Creation in Unity

Glasses

The image above shows the original creation of us instantiating glasses to the player.

Full Creation

This image above shows the original concept on how we would have the menu until we focused on what was truly important.

Array This image is the final version of our Avatar Creator.

As seen above, for the avatar created we decided to build our own. The user can scroll through an array of prefabs for any setting they would like such as hats. When the arrows are pressed down, a new prefab from the array is instantiated into the world. Getting the avatars to sync with the server proved to be fairly difficult but we ended up saving the position in the array of prefabs for each element of avatar created to the network player object that would sync with others. If you would like to check this out more, here is a link to the repo that only contains the avatar creation: https://github.com/RaulFaife/AvatarCreator

Finished

3D Modeling & Scenes

rimglasses

park

While a fair amount of the 3D models used were obtained through the asset store, we did make some of the 3D models used for the game such as the glasses by using TinkerCAD. Initially, we were using Blender but this proved to be too time consuming for a hackathon so we quickly threw together some cool assets :D The lovely scenes were created by us as well!

How Photon was used

Networking

Photon was used to host the rooms for players to join. As seen by the code above, when a user presses the connect button, they are first connected to the Photon server/lobby. After they have successfully joined the lobby, the player settings (i.e. clothes) are saved to the player object for syncing and the user is connected to a random existing room with another player or is put into a new room to wait for a new friend :) The rooms are set to have a max of only 2 players.

While it was not used in the demo video, Photon Voice was also used in order to set up voice chat between players!

Grab

Additionally, an issue we ran into was that one player grabbing an object with the basic XRGrabInteractable script that Unity provides would make it so the other player could not interact with the same object. With the script above, we used Photon's object ownership system to allow for ownership of objects to transfer between players.

Challenges we ran into

  • Getting the player models that had varying objects (such as different types of glasses) to sync with what a player set for themselves was tough. We initially considered using a database to transfer this data about a player to other users but we found a way to quickly save the settings by using a Photon property of players that allowed us to send custom properties to other players in the room.
  • Sharing code with each other using Git led to multiple conflicts that we had to resolve. Sometimes links between objects would be lost or scenes reset altogether. Unity is not very friendly :(

Accomplishments that we're proud of

  • Learning how to set up multiplayer functionality for a VR game
  • Making a system to change the users emotions for other players to see
  • Setting up voice chat in Unity
  • Making a avatar creator
  • Practicing our map creation and 3D modeling skills
  • Being able to make a genuinely usable project that can be used by many

What's next for MingleVR

We plan on substituting the premade assets with our own custom ones. We seek to expand the number of customization options we give players as well as introduce new maps with interactive and immersive activities that players can engage in alongside their friend. The lobby and matchmaking system will also require major improvements.

Built With

Share this project:

Updates