Unity in multiple screens (multiple machines)

Hello!

I have 4 big screens on the wall of a room, each one connected to one machine (PC running Unity). People can go in the middle of the room and have the 4 screen all around him/herself, like this:

The idea is that each machine is running an instance of Unity showing the same scene, from 4 different cameras placed 90 degrees one from the others - in order to “immerse” the person in the 3D world.
One (or more) object(s) will move passing from one screen (i.e. PC) to another. Imagine a ball which goes around the people in the room for example, from one screen to the next one in a loop.

Which is the best solution to achieve this system with 4 computers to view the same scene from 4 different camera angles, over a network?
Should one machine act as a server and the other 3 as clients? How can I synchronize the positions of the object in the different machine using Unity?

Thank you in advance for your help,
Cheers

Have you considered using only one computer using 4 monitors? there are many options as to how that could be done and it would eliminate lag and any networking hassle. Even if you needed 4 different camera views you can use 4 cameras with the proper viewport settings.

I can explain further if this might be an option.

Hi, thanks for your reply.
Unfortunately I cannot use a single machine (yep, it would be definitely easier!).
I have to keep 4 machines (it’s a practical reason: the screens are actually projectors and all the hardware is already setup this way)…

Hi Assassin!

I have the similar need for my project. I need the option( using only one computer using 4 monitors),could you explain further?Thanks!

Well idk how much you know about unity so I’ll just go over the concept real quick.
Note: I am using windows don’t own a mac so can’t help there.

Method one:
Requirements:
You must use windowed mode. You can remove the borders and make the window take all the screen so it looks fullscreen though. Use the command line argument -popupwindow when running the exe to remove the border.

The trick is that you would have to manually set the screen resolution to the size of you screens (hopefully all screens are the same size.) Example: Two 1080p screens would be a screen resolution of 3840X1080. Use Screen.SetResolution(3840,1080,false)
You can use camera.rect to change where the camera is rendered on the screen. This is normally used for splitscreen games etc. We can use this to show different cameras on different screens if we need to or we might be able to just change the fov of the camera so that it uses 360 degrees I haven’t tested this far so just mess around with stuff to see if it works.

Method Two:
use nVidia surround or ati’s equivalent and just change the fov (still not sure if changing the fov to 360 works or not)

@alb
Networking the computers should work. If you have a specific thing you don’t know how to do or you can’t find a good networking tutorial let me know. Otherwise I’m not sure what you are asking. Synchronizing the positions of the objects is what networking is so you basically asked “how do I network ?”. Which is a very large topic lol.