Documenation | Multiuser | Version 21.1
Jeison Yehuda Amihud (Blender Dumbass) редагує цю сторінку 3 роки тому

NOTE: This Documentation Article is written for a specific verion of VCStudio mentioned in the title. If you have a newer version, some things might be changed. There could be a newer version of this article in the wiki. If there is non. Please be aware of possible changes. The Version could be found in the bottom, right corner of VCStudio

COPYLEFT: This article is a part of VCStudio and might be used and reproduced using either GNU General Public License or CC-BY-SA.

Multiuser

Content:

  • Simple guide
  • Advanced explanation

Simple Guide

Multiuser is designed for projects where more then one computer is utilized. It works on local network. So you need those computers to be connected to the same router. The function of the multiuser after the server is running should be seamless. (No aditional user input required.) But bugs could acur since it's still an alpha. So I will recommend having a backup of the project and report bugs.

Start Multiuser

Starting multiuser is a 3 step process.

Step 1. Copy the project over to the other computers.

You have to have a full copy of the current version of the project. On all computers before you start the multiuser. Technically it could copy over the project for you. But it's a very un-tested feature. And not recommended. When all computers will be connected there will be no more need to copy the project over.

Step 2. Setup User-Names

Ideally every computer on the multiuser network should have it's own Username. So there will be less confusion of who does what and when. It's not a requirement tho.

Step3. Starting the Server

Now you just have to start the server and all the instances of the Project on the local network will automatically connect.

GUI Method

First click on the Multiuser Icon.

Then click the Start Server Icon.

And you will be able to see that the window filled up.

Terminal Method

It's not a nessasity to have the project it self on the computer that acts as a server. If you have an organization that can afford a computer for the server duty. The server could be started without any user interface.

For this when starting the VCStudio use -ms.

python3 run.py -ms

It will ask you the project's name. Type one as specified in the project's setting. Not the folder name.

Using Multiuser

The multiuser window is quite straight forward. Top left is your server outputs. Bottom left is the list of currently connected users. And on the right is a little messanger.

As you can see on the picture above. When the Multiuser is running. All the user's locations connected to the multiuser will be shown in the story editor space. Everything changed by one of the users will automatically update on all the computers. So you can think of it as if multiple people have access to 1 folder. But technically multiuser just creates the illusion of it. Since every computer has a separate copy of the project.

For example. Change something in the story editor and see the change appear on the other computer too. Or change something in the text of the story. Or add / change something in the asset / shot files. Or change something in the checklist. Or schedule something. Everything should be synced in real time. If something does not work as expected please report.

Advanced explanation

The folowing part of the article is for hard core nerdy people who want to know how everything works. And contains redundant information for a simple person that just want to use VCStudio. Anyway here it is.

Files

The best documentation is to read the code of the software directly. For the multiuser I recommend:

How does it connect?

When the server is started it broadcasts about it's IP on the local network's broadcast layer using UDP protocol. Which is 255.255.255.255 IP adress. The users always listen to this broadcast on the background. If they see the name of the project in the broadcast message. They connect to the server using a more relible TCP protocol.

How does it update the story?

Well the entire story is a large dictionary object that can be converted with ease to something like JSON. This is how the story is saved to the disk. And this is how it's transmitted over the network. It is done using network/network_multiuser.py.

When the user connects, the server asks him to give the version of the story and the last modification time of the story file. If there is no story or the users story is newer then the one on the server. It will update and send the updated version to all the users.

Same applies to the analytics. ( Schedules and History are parts of analytics )

How does it update assets so quickly?

Well you don't need to copy over the entire thing. It would be silly. Every time a given user enters an asset or a shot. It will send to the server the last modification time of the folder. And the server will send this data to all the other users.

If some user has less up to date version. It will ask the server to get the new version for him. Of course this is not as straight forvard because I wanted to optimize this even further. The first user will send the full list of files and folders in a requested folder with MD5 hashes for each. The second user will compare the hashes. And only when the hash is changed. Only then the file is transferred. Change of the hash means that something in the file is changed. If the hashes are identical it means that the files are identical.

How do I see where other users are in the story editor?

When the story is transferred. It carries over the camera variable. Which is the locaiton of the user in the story editor space. I can take this data and update the user's list with it. The one who has the latest story will be updated with the latest camera. And then I draw a little icon and a name to that location.