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. We have updated the language to the Editor Terms based on feedback from our employees and community. Learn more.
    Dismiss Notice
  3. Join us on November 16th, 2023, between 1 pm and 9 pm CET for Ask the Experts Online on Discord and on Unity Discussions.
    Dismiss Notice

Collaboration in Real Time

Discussion in 'General Discussion' started by Gustav_Bok, Nov 2, 2016.

  1. Gustav_Bok

    Gustav_Bok

    Joined:
    Dec 6, 2012
    Posts:
    35
    Hi fellow game developers!

    I felt it was time that we became even better at collaborating using Unity.

    I'm currently working on an in-editor server client-solution that can make any number of people able to collaborate in real time within the same scene, any changes made by one person propagates to everyone.

    I start this thread so we as a community can discuss what kind of functionality we want from this system and what features should be prioritized during the development.
     
  2. Gekigengar

    Gekigengar

    Joined:
    Jan 20, 2013
    Posts:
    706
    Whoa that will be extremely fun o.o

    Gamifying game making through real-time collaboration..

    Are you going to host the server yourself?
    Or can we actually host the server for people to join?
    If its the latter, you can make it open source so the community can help making this possible faster ;)

    How do you synchronize the project when not everyone have the same project?
    Whose file will be synchronized to where?

    What if you edit stuff offline and later joined the server?

    How will this be installed? As an asset package?

    And doesn't unity have "Unity Collaborate"?
     
    Last edited: Nov 2, 2016
  3. Gustav_Bok

    Gustav_Bok

    Joined:
    Dec 6, 2012
    Posts:
    35
    Hi Gekigengar, and thank you for your quick response!

    I'm talking about real time in-editor changes, for example if I start moving a gameobject in the scene it will be moving on your screen as well. if you make changes to any script in the scene the values will be propagated to everyone connected. If you create an object it will pop up on my screen as well. If I choose to delete it, it will vanish for you.


    Are you going to host the server yourself? Or can we actually host the server for people to join?
    Server can be hosted by anyone. No limitations on number of connected people except your bandwidth.

    If its the latter, you can make it open source so the community can help making this possible faster ;)
    I will look into making it open source or not, it depends on if this is something I want to make a living on or not. :rolleyes:

    How do you synchronize the project when not everyone have the same project?
    I was thinking of having some kind of version handling, I will have to take a look into Unity Collaborate and how it can be used in this regard. Why invent the wheel twice? I might make a system that as long as you are connected to someone that person always have the correct project, and if you make any changes they will be sent to the server who implements the changes and propagate back to the connected users.

    Whose file will be synchronized to where?
    I'll start by building a functionality that checks for changes in your own assets folder. If anything differs from the previous state the file/files that's different will be sent over the network to the server, who then sends it to all the connected users.
    This is something that needs to be discussed further because this is not an optimal way of doing it.


    What if you edit stuff offline and later joined the server?
    If your new stuff doesn't conflicting names with ones already on the server, all "new" occurances can be treated like if it's just a new file added. If there are naming-conflicts I have to implement some kind of warning system that probes the changes before it sends them to the server, and gives the user the ability to rename on the fly.

    How will this be installed? As an asset package?
    It will with high probability be installed as an asset package.

    And doesn't unity have "Unity Collaborate"?
    What I've learned about Unity Collaborate is that it's an built in version control, and it's only to make sure we are using the same resources. The system Iäm building is about the actual collaboration while working in the editor in real time.

     
  4. Kiwasi

    Kiwasi

    Joined:
    Dec 5, 2013
    Posts:
    16,860
    Do you actually have the core tech working, or is this just vapour ware at the moment?

    It sounds like it will be more trouble then its worth. If I make a change, I don't want it perpetuating through other users until I have confirmed that it works. I don't want other users changes perpetuating through my scene while I am in the middle of a play test.

    Getting scenes to merge in a smart way would be good. Getting real time editing seems to be a gimmick rather then a useful tool.
     
    MV10 and Martin_H like this.
  5. zombiegorilla

    zombiegorilla

    Moderator

    Joined:
    May 8, 2012
    Posts:
    8,986
    Kiwasi likes this.
  6. Gustav_Bok

    Gustav_Bok

    Joined:
    Dec 6, 2012
    Posts:
    35
    Hi BoredMormon and zombiegorilla,

    BoredMormon:

    Do you actually have the core tech working, or is this just vapour ware at the moment?
    I have the connection set up between collaborators, I'm currently focusing on the design aspect of syncing objects. One could say it's semi-vapour as I have not decided on how I want to do the sync yet, but I got alot of ideas by looking at "Scene Fusion" that zombiegorilla linked above.


    zombiegorilla:

    I really liked the first link about Scene Fusion, They have alot going for them and I will look more into their product for inspiration. The other link you sent that was about UNSE (that doesn't exist any longer FYI) looked like too much manual labour and too complicated for the user. The user shouldn't need to change their workflow to make a tool useful, it's the tool that should promote the users own workflow!
     
  7. Gustav_Bok

    Gustav_Bok

    Joined:
    Dec 6, 2012
    Posts:
    35
    Small update:
    Here's two different editors messing around with the transform values of the same gameobject.

     
  8. NathanHold

    NathanHold

    Joined:
    Jul 17, 2013
    Posts:
    58
    Yeah, this is my dream. There are several engines that do this already for inspiration:
    and of-course my own engine\editor:
    Here are the main features I think are required or really cool:
    • Viewing of where other people are in a scene with billboard avatar and outline coloring on their editing object. Double clicking follows the user and their actions.
    • Scene collaboration and Code collaboration (Option to only compile your non-collab changes so you can still have source control properly manage this)
    • Ability to lock\unlock or assign portions of a scene to someone or objects.
    • Needs a very large undo system across everyone's edits.
    • Source control should only see your changes (So people can still commit things separately to the repository).
    • Chat and notes system.
    • Administration system
    • Ability to turn on\off specific person
    • Ability to 'lose' all of someones elses changes
     
  9. Gustav_Bok

    Gustav_Bok

    Joined:
    Dec 6, 2012
    Posts:
    35
    Thank you for your input Nathan!

    A lot of good and interesting suggestions. I'll take them into account when continuing the development :)
     
  10. grimunk

    grimunk

    Joined:
    Oct 3, 2014
    Posts:
    270
    @NathanHold Scene Fusion has several of the features you are looking for: View sharing (follow and goto modes), visual representation of other people, locking colors, handling of Unity's undo system, real-time chat with special codes to reference objects or viewports.

    Some of the things that are not on your list but Scene Fusion has are: API for extension, full real-time property syncing, even for your custom components, stand-ins for assets someone else has but you have received from source-control yet, seeing edits in play mode.

    We are looking at several other of your list as well. Code sharing is one thing that is extremely tricky, and generally a difficult to work with because it easily introduces side-effects into other people's work, and tools like Git or Collab handle code additions very well. Scene area/object locking is pretty simple, though amazingly no-one has told us they needed it yet. Losing all of someone's changes can be tricky, as often times people will adjust each others objects.

    All in all great stuff though! I do have to say, working together in a single scene is *much* more efficient than any other solution out there, in particular when you have people who are skilled in different areas of design working directly together.
     
  11. Loaphs

    Loaphs

    Joined:
    Jan 25, 2019
    Posts:
    3
    @Gustav_Bok do we have an estimated release date? Is the project still being worked on? Or is it out?
     
  12. grimunk

    grimunk

    Joined:
    Oct 3, 2014
    Posts:
    270
    Scene Fusion, which does everything noted, has been out for quite some time now: https://kinematicsoup.com/scene-fusion