The process of creating my first multiplayer VR Board game with asymmetric gameplay from the idea to publishing.
Dmitrii Orlov
Project Director
The Cyber Attack became something bigger than just the graduation project. For these past 8 months, I put my heart and soul into this game. And I would like to share this journey with you.
Dmitrii Orlov
Project Director
The Cyber Attack became something bigger than just the graduation project. For these past 8 months, I put my heart and soul into this game. And I would like to share this journey with you.
Download game for free
Players will play together inside and outside the board
How to build multiplayer without any help
Two in one, which should work at the same time
Start to develop my own system to test new ideas
The moment when I stop watching tutorials
Optimization of all BP's which we created into the project
HIGHLIGHTS
My designing skills
Showing my best practice
Short video with all key development moments
The Idea
Build the best VR game
December 21, 2021
.
The original idea came to me during the night and at the very beginning, I knew that it would be a board game. A game with asymmetric gameplay where some players can be teleported directly to the board where they will need to play at the same time inside of the board.
I already knew that there exist some problems with current VR board games on the market. Some of these issues are:
1) It is pretty painful for the neck to look down all the time
2) Players get bored when it is not their turn
3) Some players can die and they can wait 30-60 minutes till other players finish the game.
In my game, I've tried to solve all of these problems.
1) When players are teleported to the board they don't need to look down anymore. They only need to look forward and up.
2) If it is not your turn you need to help a player inside of the board, so it is seamless gameplay for everyone.
3) Players will have an equal amount of robots on the board to amount of players on the server. During each turn Players can take control of any of these robots. So even if there will be only one robot alive on the board all players still will be able to take control of it one by one on their turn.
Was I able to solve all of these problems? You can decide on your own, but below I want to tell you what I did to build this beautiful project.


December 21, 2021
.
February 18, 2022
In January I started studying at Vancouver Film School in VR/AR Design and Development program. For almost two months I made a lot of work on the game concept. Making sure that the vision is strong and that all of my team members know exactly what the game should look like. And yes now I had the team, the team of 3 other students who also saw potential in this game. At that time we were still deciding which game engine we were going to use Unity or Unreal Engine (UE). I liked UE more but there was one problem, there wasn't any tutorial on the internet on how to create VR multiplayer games using UE. On top of that our instructors in VFS told to us that they also didn't know how to build multiplayer in UE. But they knew how to do it in Unity. So the only logical solution was to use Unity, but work in Unity wasn't in my plans...
To show the potential of UE, Morlan and I build assets. Which I then put on the map, and made this our first demo video for our mid-term presentation.
CYBER ATTACK vision demo
It was only my first month ever since I first time open Unreal Engine
At this stage in the project I knew nothing about blueprint system in UE. But it was pretty easy for me to create simple AI using C#, this is an example of what I did for one of the assignments we had at that time.
First problems
M U L T I P L A Y E R
February 18, 2022
April 1, 2022
If I start to study something new, I need to study something that will be useful in the nearest future.
As I mentioned above it is impossible to find a tutorial that will explain how to create multiplayer for VR, but there are a lot of tutorials on how to create multiplayer games for PC. So the plan was super simple: copy everything from existing tutorials to the VR template and it should work.
The first milestone for me was to make sure that 4 players could connect to one server. With the ability to move and see each other. For me, this is the point where the multiplayer starts.
But it wasn't as easy as it seems to be. The main difference is inside of the Pawn. In the classical 3D game, you can just replicate movements and everything will work on its own. But if we look at the UE 4.26 there will be 2 blueprints (one for the Pawn and one for the controllers) and the default method of "Replicate movements" doesn't work. You somehow need to replicate them all. Thankfully at that time I started to develop the multiplayer system, UE 4.27 was already released and UE 5 had a public preview 2. Both of them used Open XR and the main difference now was that VRPawn was only one blueprint with all controller logic inside of it. It sounded promising because it is easier to work on one blueprint at a time. Another issue that our UE Instructor didn't know anything about was UE 4.27 and moreover about UE 5. I understood from this point on I was on my own and I started my prototyping in UE 5. Once I graduated from the course and started looking for a job. UE 5 would be released and all studios would start the move to it, so it is important to study something that I can use in the future.
Replication test
Thankfully I recorded a lot of my tests, not only to analyze what and why it happen but also to add it later in my portfolio
The hardest part at that moment in time was to understand what exactly I'm doing wrong and why it was not working. I spent almost one month trying to solve this problem without any results. Every day was like the previous 3-4 hours of tutorials trying to build and understand all these concepts, test everything, analyze test results, and repeat. Of course now, when I know how it works I can build the same structure in a few minutes. But back then not only did I need to understand the multiplayer but also blueprint concepts at the same time. I think it was the hardest time. But the reward was worth it.
At the end of March, I finally had the version with a stable multiplayer system. At that moment I used just our local LAN network to simplify everything as much as I could.
As you can see on the right, there weren't a lot of nodes to make it work, the main idea is to know how to do it the right way.

Locomotion
"P R E S E N T A T I O N"
April 1, 2022
April 22, 2022
The right planning and time management helped me to achieve all of my goals.
Even if I was able to replicate client movements for everyone this was only the beginning. At the end of April, there was the final presentation for Term 1 (where all other students had to present their ideas for the final project, not something that already works) and I wanted to show the real progress I did. It was not the best idea because I still didn't know how to build the games. I needed to spend a lot of time on tutorials and test everything in the builds, and manage the team which was busy with other school assignments. So I needed to do all development on my own. But they helped me to test the multiplayer part which helped us a lot.
Locomotion showcase
Visual representation of different types of locomotion in Cyber Attack
So, the locomotion. The default locomotion from the VR template ideally worked for the in-board (M.A.Z.E.) area, but we missed the second locomotion type. One is when players can freely "fly" around the board (ship) using the "Grab and Drag" type of locomotion. The hardest part here was that both locomotion types should exist at the same time and the game should decide which locomotion type will be activated at this moment for a specific player.
I would say it was not as difficult to create as I thought it would be. Because I was able to test everything right away on my PC compared to the previous month. Every time I needed to test the multiplayer movement replication, I would need to package the project, copy it to several PCs, physically launch a copy of the build on each PC and use only Console to debug and see what is wrong. This observation helped me a lot next month, but I will tell you about it a little bit later. Because at this moment I had big problems.
"Grab and Drug" Locomotion BP
Simple system which were built in a couple of weeks
The main interaction tool in "Cyber Attack" should be the Widget. But for some reason, only the last connected player to the server was able to interact with the widget. For others, it just became not interactable, even if it existed only on the client version of the game.
Plus now for some reason, I had rubberbanding when 4 players connected to the server.
When nothing works and you are unable to fix the problem, you have to switch your focus and use that as inspiration.
This is the game that I built that night to practice in blueprints, and to have some inspiration.
Main level design
One night map improvement
But even this was not enough. I still didn't know how to fix the widget interaction bug and the presentation was really soon. So I decided to postpone this task and try to take care of our Proof of concept map. I migrated the old one from the old 4.26 project and start to improve it a little bit. Making sure that it will look cool for the presentation. To do so, I needed more assets and it was really nice that in the Epic Games Store was the Stack-O-Bot project from Epics which I could use for free to improve our level design.
From Stack-O-Bot I also took robots with animations which saved me a lot of time, but now I needed to take control of them somehow with VRPawn. Because players can choose any of the good robots at the beginning of the turn, it means I can't possess controls from player input to the robot. What I did was a pretty elegant solution. When it is the player's turn, the player can try to select a robot. If this robot is allowed to be selected by game logic this robot will create a 2-way communication channel between VRPawn and itself by sharing its references with each other. The robot by itself was just an Advanced AI, which could make decisions on its own depending on the input it received from the VRPawn.
Board robots interaction
When players need to take control over several pawns at the same time
End of Term 1 presentation
I am happy that I had the foresight to record this video during this stage in development,
In an ideal scenario, all students should have a 1-week break after this presentation without access to the school PCs. But I didn't want to waste this time and watched a lot of tutorials trying to find out what can cause this type of problem. It was not a replication 100% because only the last connected player was able to interact with the widget. So it was something in the settings, but what exactly? I needed to solve this problem to make this project real. Only 3.5 months left...
My own way
Multiplayer prototyping
April 22, 2022
June 1, 2022
This was the month when I understand more about multiplayer than in the last 4 months
I needed to change something. Because for now, I needed to make all game logic such as player turns, fix widget interaction, robot control, turn-based logic, etc. The current way how I tested everything wasn't working at all because as I mentioned before, as soon as I made only one modification of something I needed to package the project and run it on several PCs and see the result I have. Only fixing widget interaction by this method could take months and an enormous amount of work. And I found a way how to optimize and speed up this process several times.
My knowledge of UE at this moment was enough that I was able to simulate VR interactions inside of a third-person template.
It was the game changer. Now to test any new modifications I was able just to launch and see the difference in real-time. You can see this process in the video below.
Real development
Grow and manage the team
June 1, 2022
July 8, 2022
More people will help you to build a bigger and better project. But it doesn't mean that you will have more time.
Because of the new way of prototyping I was able to develop and fix most of the existing bugs. But I still didn't have enough time to even start working on the tutorial. Which was on the high-priority list. I needed more people. There were already a lot of cool videos at that moment so it wasn't hard to find other students who liked this project. In one week I found 3 people from Sound Design, 2 from Digital Design, and one from Foundation to help with the tutorial script. My workload increased dramatically because now I needed to manage all of these people and track their tasks to make sure that we still can develop everything on time. Thankfully, Morlan and Jorge from the original team had some time and were able to help me with 3D puzzles for M.A.Z.E. and some actors and logic migration from Lyra (Epic Games project).
The cool part was that now I was able to develop new features without watching any tutorials and this is when I felt true creative freedom for the first time. I could develop anything that I could imagine and I didn't even need to think about how to build these new features.
Steam test integration
Second test project which I used to test the direct server search feature
At the same time, I decided that it would be cool to try to move the project from LAN to the Internet and I created the second test project. Where I was pretty quick to implement the Steam launcher and create an Internet server search system. Now it feels like a real game.
Adding new people to the team was the best solution. Not only did it help to create a lot of assets that I was missing, but also create a lot of connections and level up my management skills.
Optimization
Profiler and not only
July 8, 2022
August 6, 2022
Planning everything ahead,
the best strategy ever
Even though we were in the optimization phase It felt like production hell. It was time for everything. Sometimes I needed to stay in the classroom and work all night on the project to make sure the new build will be ready for user test.
Optimization was really important as I mentioned earlier that I had a problem with rubberbanding. Thankfully, I was able to find an Epic Games podcast where they described how to use the Network profiler and optimize the game. Moreover, I used Net Dormancy a lot to optimize the game even more.
What helps me a lot is that I choose the right platform for the game. Building a PCVR game is the easiest way to optimize it. You don't need to spend a lot of time to send the build to a standalone headset, you have almost unlimited power resources. When every day counts it is very important to make the right choice. Of course, I can optimize this game for Quest 2 but it would take way more time than I had.
4 players gameplay
Recording of the game test
In the latest builds, the gameplay was really smooth which you can see in this video. SFX, VFX, and Game logic all work as expected without any bags.
Something I didn't expect to happen was having my game published on steam. It was out of scope. But because the game was stable and optimized I decided that I could share this game with everyone. I am so happy that everyone who tried my game, was really excited and wanted to play more. This was so much more than just a graduation project. It was 8 months of my life here.

Dmitrii Orlov (HOTOREL)
XR Developer (Unreal Engine)
I hope that you will not only read this site but also play the "Cyber Attack". I'm always open to new and creative ideas or projects. Just message me and we can meet and discuss how to make your ideas real.

hotorel1@gmail.com
+1 (506) 400 0125
Vancouver, BC
This site was made on Tilda — a website builder that helps to create a website without any code
Create a website