Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. Dismiss Notice

A server architecture that allows for real-time collaboration in unity.

Discussion in 'Made With Unity' started by RikB, Jun 16, 2014.

  1. RikB

    RikB

    Joined:
    Apr 18, 2014
    Posts:
    5
    Greetings developers and hobbyists!

    My name is Rik Beyen I just finished my graduation project at the NHTV breda in the Netherlands.

    I researched/developed a server architecture that would support the integration of collaboration in software applications.

    Video:


    I did a survey some time ago on the Unity forum and wondered if the Unity community was still interested in getting their hands on this?

    Any feedback for future development is also much appreciated.
     
  2. 3agle

    3agle

    Joined:
    Jul 9, 2012
    Posts:
    508
    I am very interested in this, if it allows several people to work on one unity scene, but have a lot of questions and concerns over features.

    Will this integrate with version control?
    How many people can work in a scene?
    How does it deal with code compilation/scripts being edited/scripting conflicts?
    How does it handle lightmapping?
    Does it support undo?
    Does it track changes in some sort of log?
    Can you have several people working in the same project but in different scenes?
    Can you enter play mode independently of others?
    Is it possible to lock files/settings/objects?

    I have more questions but feel like that is enough for now....
     
  3. Peter Ples

    Peter Ples

    Joined:
    Mar 12, 2013
    Posts:
    237
    Wowww!!!!
     
  4. StarManta

    StarManta

    Joined:
    Oct 23, 2006
    Posts:
    8,738
    Uh, yes. Badly. Put that on the Asset Store and it'll sell like hotcakes. Better yet, get yourself a job at UT ;)
     
  5. RikB

    RikB

    Joined:
    Apr 18, 2014
    Posts:
    5
    Sorry for the delay! I got caught up with *stuff*...

    I Have an appointment in 5 so I got to run, but I just wanted to say I would try and answer all questions in this thread later tonight!

    Spread the word! ;)
     
    StarManta likes this.
  6. Litwin

    Litwin

    Joined:
    Aug 15, 2013
    Posts:
    70
    Oh, very good! Same system from Hero Engine. :)
     
  7. RikB

    RikB

    Joined:
    Apr 18, 2014
    Posts:
    5
    Will this integrate with version control?

    I am not sure to what extend you mean with integrating the plugin with version control. However currently the plugin relies on version control software to sync asset files. (svn or Unity’s own subversion control) Streaming assets is possible but might introduce some latency, this has not been tested yet. In the future it might be nice to have streaming of assets as an option maybe? Anyway I hope that answers your question?


    How many people can work in a scene?

    Currently the architecture assumes that no more than 100 people work together simultaneously. Do not that this has only been stress tested up to 6 people at the time. Working with a lot of people will require a strong machine as a host. Using a 64-bit OS, Intel® Core™ i7-2670QM CPU @ 2.20GHz with 8 GB RAM works fluidly for 6 people at the time. (host included)


    How does it deal with code compilation/scripts being edited/scripting conflicts?

    This is currently a problem. I did not investigate it too much yet, but when recompiling the script resets the plugin state which results in undefined behavior. I am not sure how to fix this unless I could re-implement the plugin with Unity’s source code.


    How does it handle lightmapping?

    Currently not supported, is on the to do list.


    Does it support undo?

    Yes, both undo and redo are working. I am not that happy with the way it works though. Clients can undo/redo things they did locally. If you want to remove something made in another client you have select and delete it. If the Undo/Redo operation is invalid it will get ignored. So an example would be:

    Client 1: Create cube

    Client 1: Create sphere

    Client 1: Parent sphere to cube

    Client 2: Undo last operation (non have been made so it ignores it)

    Client 2: Delete Sphere.

    Client 1: Undo last operation (sphere does not exists anymore cant unparent it, ignore operation)

    Client 1: Undo last operation ( sphere does not exists anymore cant delete)

    Client 1: Undo last operation ( deletes Cube)

    Client 2: Redo last operation ( sphere object became unidentified does to cross interference of clients operation ignore)

    Client 1: Redo last operation ( re-create cube)

    Client 1: Redo last operation ( sphere object became unidentified does to cross interference of clients operation ignore)


    Does it track changes in some sort of log?

    Yes it will track every incoming and outgoing information when the “show debug logs” button is enabled.
    Can you have several people working in the same project but in different scenes?

    I am not sure what you mean? Isn’t this already possible without the use of networking?


    Can you enter play mode independently of others?

    This is not supported yet, but tests indicate that it is indeed possible to keep streaming data while in play mode. This is a feature that will be researched in the nearby future.


    Is it possible to lock files/settings/objects?

    If people would want this feature it would be possible to implement. Haven’t researched it indepth yet.

    I love your enthousiasme. ;)

    Hmmm I would like to share this with the community, but I am not sure if it is stable enough yet to be tested by the masses. Regarding the job… that would nice. ;)



    I hope this answers some of the questions, if anything is unclear don’t be shy just ask I don’t bite, most of the time...

    EDIT: for those that are interested in the thesis and how the server architecture works, I made all documentation regarding the graduation process available here:

    http://rikbeyen.com/projects/ServerArchitectureDocs.html

    Do note: my graduation was regarding a server architecture that would allow collaborative features to be implemented in 3D modelling software/ level editor. (Not specifically Unity, just saying)
     
    Last edited: Jun 19, 2014
    3agle likes this.
  8. 3agle

    3agle

    Joined:
    Jul 9, 2012
    Posts:
    508
    That does answer my question thank you :)

    Sorry, I didn't word it very well. By this I mean are the scene files sync'd so that you could have 2 people working simultaneously in scene1, and 2 in scene2, then if one from scene1 decides to open scene2, will they be up to date with changes made by the 2 already working in that scene?

    The use case for us would be that we are intending to change our GUI system so that it exists on it's own in a scene, and is streamed in at runtime, so we would potentially have people working on GUI and the rest of the project, but not necessarily in the same scene. I hope that makes sense.

    I realise this could be done by just versioning the scene files, but that isn't particularly elegant when someone has to manually update the scene from the repo every time they need to open it, and commit when someone else needs the new scene.

    It's not an essential feature, it would just be nice from a workflow perspective.

    Sorry for pressing you on all these Unity specific issues, It's just that we have been looking into various solutions that do just what your software does and have found these areas to be some of the problem cases for us.

    Thank you for your detailed response, and fast, too!

    The code compilation issue and file locking are the only things we'd need to see from our point of view.

    Excellent work, I look forward to seeing more!
     
  9. RikB

    RikB

    Joined:
    Apr 18, 2014
    Posts:
    5
    Ah! Never thought of that, but will definatly look into it. Thanks for the suggestion!

    No please keep it Unity specific :). I just wanted to clearly state that for my graduation my focus was on creating a generic architecture that would be able to connect to all kinds of applications. (so people that were interested in the documentation and source code would not expect a Unity plugin, but rather a server architecture to create plugins) My earlier statement might have been a little confusion, my apologies.

    Thanks for all the feedback! Currently I have multiple projects (including this one) I would like to finish so please accept my apologies upfront if progress/responces are a little slow.

    I will look into file locking and the compilation issue. (I currently have no idea how to fix the latter one, but I will figure something out hopefully)