Metaverse for Remote Collaboration
How Visartech helped to create an enterprise metaverse for bringing remote teams together to collaborate in an immersive virtual 3D world that makes onboarding and team-building experiences fun and simple.
Metaverse for remote collaboration is a Silicon Valley startup funded by an investment company that allows enterprise employees to immerse into corporate culture, team-building activities, and become a real part of the firm thanks to engaging 3D practices.
Partnership since: March 2021 - Present
Google, Microsoft, and other giants started using it 2 months after launch.
200+ users in an app simultaneously.
A whole new metaverse for remote collaboration between distributed team members.
In the new era of remote collaboration, the existence of a software solution that simplifies connections and engages staff is a must-have. Besides, the pace of innovations these days makes the here-and-now concept a real competitive edge.
You should act fast, develop and deploy right away. That was the pattern our software development team adopted while making a metaverse solution for our client thanks to the trunk-based development approach.
The client’s goal was to develop a virtual location for collaboration between remote co-workers. The newly designed solution was meant to run directly in a web browser making it accessible from any device at any time.
The whole software development team was engaged in the brainstorming sessions trying to develop the best possible features and functionalities for the client’s software solution. Some of them were not obvious from start. A lot of research and experiments were carried out before the production of even basic functionality. Finally, a thorough analysis allowed us to implement functionality in a web browser and define the key software solution requirements. After that, we carried out the fully-fledged solution development and continued the further deployment in real-time.
Real-time metaverse project delivery withstanding high loads.
IT Infrastructure Development
How to make a high-load web application stable and shift to a new paradigm of remote collaboration.
The Visartech team had the challenge of developing a new metaverse solution from scratch. When we initially started the metaverse project development, we didn’t even know if it would be possible to implement all the requirements previously set. But the iterative development helped us to get the first version of the software solution.
Initially, the metaverse was not overloaded with multiplayer. The avatar moved along the flat surface. The whole software solution was created with simplicity in mind just to be able to test its viability.
At first, the deployment was manual and conducted once a week.
Along the way, we’ve had several challenges that required us to:
The software solution was launched pretty fast. The events were taking place, but we had to make a stable infrastructure as only one server worked where both the production and development environments were raised. So we had to make a fault tolerance to avoid server failure.
As the project grew and was already used for real events, the team ran into problems that were very difficult or impossible to reproduce in a test environment. Some real users could connect from weak devices, do not connect headphones, etc. Besides, multiplayer app testing required a large group of live users.
There was an urgent need to implement a detailed logging system to detect users who are experiencing difficulties and see exactly what the problem was. The new logs helped us understand and subsequently fix a lot of issues.
Besides, when getting ready for a certain event, just one non-working feature could delay the release date until the issue is fixed. After introducing feature flags, the team can independently configure the composition of features for the release and “turn off” unnecessary ones.
A way toward a fully-grade metaverse solution with continuous delivery in real-time.
Our app development team has managed to develop all the solutions that were planned:
We have put much effort into creating fault tolerance through a failover strategy. That’s when there are two simultaneous servers and only one is actively working. Replacing from a static EC2 machine to AWS Beanstalk (ELB + ASG + Automatic Deployments) and using a load balancer have allowed the servers to swap between each other once an interruption appears.
In case of a server interruption, the health check gets activated and the server switches website traffic to the second server within 15 seconds. They are located in different data centers/availability zones in AWS which makes it impossible for both of them to fail at the same time.
Choosing the correct type of EC2 instance allowed us to optimize server costs. We performed load tests and determined the minimum requirements for them to withstand the necessary load. As a result, we reduced the production environment costs by 80%. Moreover, we have developed a solution to start or stop environments per admin user requests from the admin console. This way we got rid of extra spending on the environment during inactive time (at night and on weekends).
We’ve configured backups for all our data sources (AWS RDS, AWS S3, AWS DynamoDB, AWS EFS) and created a procedure to test the backups quarterly. Apart from that, our team has followed AWS security best practices – encrypted data sources, used TLS for all our endpoints, and granted the least privileged access to the IAM users and roles.
- 3D Art
The avatars, terrains, and accessories were initially created through Unity Terrain. However, eventually, to match them with WebGL we optimized them manually thus making custom solutions. As a result, the whole texture, terrains, avatars, shaders, clothes, and other visual objects became clearer and more detailed.
- Solution Deployment
Considering the usage of Unity and WebGL, in the end, we’ve decided to employ Jenkins and Kubernetes for deployment which has substantially fastened the solution delivery. We reduced the CI/CD time. Thus building and deploying 55 GBs project releases took only up to 25 minutes.
Besides that, we have implemented the following innovations:
- different types of locations: with summer and winter weather;
- logging of the used services;
- an algorithm that bypasses the maximum number of clients in Agora, a service for voice calls;
- using Firebase Auth for speed-up and stable work of authentication, emails, and password saving;
- a microservice on a Node.js server with RDS PostgreSQL as a database for flexible data storage.
As a result, the initial goal of the metaverse solution was improved and enhanced by new functionality and custom-made features.
of US users prefer social get-together in game world occasionally. Obviously, the game-world hangouts are far less popular compared to traditional social media, however, they are getting used with an increasing frequence.
A fully-scaled metaverse solution with a custom development approach.
However challenging the implementation of the client’s goal was, our software development team successfully managed to achieve it after thorough research, brainstorming, and iterative development. Once the concept has proven its viability, we have optimized all sides of app development. Thus, the custom approach in 3D art production has resulted in pixelization-free graphics and an increase in graphics performance by 100%.
A solid infrastructure is of significant importance to any metaverse solution that is fully loaded with 3D objects, visual parts, avatar movements, and lots of users leveraging a platform simultaneously.
The continuous improvements in infrastructure have shortened the delivery process from 4 hours to 1,5 hours for the initial deployment and 25 minutes for each concurrent deployment. Now we can make around 10 builds per day with new functionality delivered in real-time. Besides that, the failover strategy has resulted in stable work of the solution under heavy loads.
Metaverse for Remote Collaboration Today
- 2 months
- after launch started using by Google, Microsoft
- 200 users
- in an app simultaneously
- 25 minutes
- for a single app update