Real Time Collaborative Development

The key here to make this happen is, that UE Dev Team is involved and have motivation and interest to make it happen (if it’s doable within reasonable resources).

I think it can be split to practical aspects as following:

  1. Content sharing & backing up, massive storage, massive syncs

=> Use DropBox, Google Drive, OneDrive (OneDrive Business for example has 1TB per-user storage - which is PLENTY for any content)

  • Make the editor support the “standard” behavior of these services - make the content files modular enough so that the products don’t constantly end up “collisions, same file changed” kind of issues.

Focus on accepting the “industry standard” for massive file sharing, that’s already there and simply adapt the editor/workflow to support the current mainstream file sharing (with its problems and caveats as well).

  1. Recognize the version control aspects on where they apply - and remove the issues with them

=> Take Git and alike version control products as baseline, “no merge conflicts” as basic principle and so forth

This is also very achievable. I’ve personally been focused on modular language/platform agnostic developer models, where modularity is achieved in this manner. The moment the version control system can eat/deliver the source/project file stack and merge any change fluently - basically keeping modules independent of themselves on version control leve, the goal is achieved.

Simplify-remove-the-traditional “this is impossible” burden:

=> Accept the fact, that users need to have responsibility to understand how to work with the system. If someone goes and accidentially/deliberately moves/deletes files or corrupts them with editor, they will be broken. Don’t try to solve that problem too much, because in the end, version control / content sharing history/backup options will be the solution to remedy the problem.

I found this through an open source project I am working on.

Verse Project

I would Highly recommend Epic Games giving it a look over. :slight_smile:

Here it is in action -

I’m extremely interested in this, particularly level building and also collaborative blueprint editing (I think it would be awesome, if not for general development, then certainly for collaborative debugging).

Particularly for small teams, and for cases where a more experienced dev has someone on as a sort of “apprentice”, but also for really big teams, this type of collaborative editing can mean a huge boost in productivity and also the quality of output.

I think it’s also fine if some features aren’t available while connected, as long as it’s reasonable. And in particular to get an experimental version of this type of feature going quickly you could make it disable/only locally update for features like Matinee.

Another benefit would be training and tutorials in general. I know there are a few devs on the forums here that offer their services with live help and coding/debugging, and being able to literally connect into the client’s editor in real time would be a massive benefit to quickly helping people out like that.

You could also quickly train people by having them follow along the blueprint/level design/whatever in the editor while an instructor performs the basic steps and such.

There’s a lot of potential in collaborative real time development that’s left untapped right now, and I think if UE4 were to do this, it would basically give the engine a massive edge that few other products could match.

Further it would lay the ground work for more large-world style games support, and the types of editing that stuff requires. I could see UE4 capturing a lot of the smaller time MMO developers in that case.


On security, personally, I’d prefer security/user management to be handled in such a way that you just plug a normal system into it (source control or whatever) rather than it being built in, as for a lot of smaller teams it’s going to be fairly useless to have to set up a bunch of roles and permissions when there are only 1-10 people working on it, and it’s versioned anyway.

I think it’s kind of a separate topic from the real core discussion of what’s needed for real time collaborative development. It’s kind of a fluff feature… I think the best way to handle it is by making the engine hook into whatever solution for that that is already used.

At least, that is talking about some complex role/permissions management thing. If we’re talking just basic security of connection - sure that needs to be solid.

I mentioned on chat in the last UE4 Twitch that I had a bit of eureka moment with this.

I have a concept for a two stage simple prototype to test the collaborative editing concept

  1. Have a few people use Multiple Mouse and/or Windows MultiPoint Mouse SDK on a single machine.

I would assume some changes would be required in the editor to accommodate multiple people clicking around selecting different tools and operations.

  1. Using multi-mouse concept from above, but have everyone remote into a single machine.

Given that Microsoft also has technologies such as Remote FX, the latencies should not be that bad.

I’m not trying to do a Microsoft lock-in here,

This prototype would help to get a real understanding of the workflows that would best benefit from collaboration.

Anyone interested in having a go at developing this prototype further?

I think such feature would be really awesome, and a huge time saver of course, heh!

This would be so awesome! +1

Hi all :slight_smile:

Just a heads up that I have created a new thread with similar toptic to this one which might interest some of you

Link:

My current solution is to use screen sharing and voice chat to remotely work with another person between syncs. This feature would streamline that entire process.

I think the idea from @HeadClot of using a listen server is an excellent idea. LiveSync could timestamp all modifications in order to avoid version control issues. Any modifications made to level or blueprint could push updates to all clients based on the most recent timestamped version.

This would enable remote collaborative functionality of almost all UE development but would be exceptionally useful for level design. I would love to see this feature appear on the roadmap. Even if it is lower priority it’s something that could be beneficial for smaller developers, and with the $20 sub model I think there is an ever growing number of us.

I know this thread is a bit old, but I am developing an plugin called “MultiEdit” for a while now. You can find more info here. I want to achieve real-time collaborative level editing in the engine. I would love to hear from you what you would want in the plugin. What do you need for you and your team members to develop games real-time together?

Just a quick update - I tested with my son a real scenario of collaborative editing. It is doable, but it also clearly needs editor/engine support. We are doing it side-by-side, but we used Dropbox (paid version) alone because the real scenario is to support full distributed teams (or school kids each from their home of course).

The scenario is now as following:

  • We focus on blueprint & editor collaborative work, we build from source code, but mainly focus on using binaries
  • Sharing self built binaries was a no-go; the total amount of data to share is around 20 gigabytes, can be done “once”, but it’s not feasible to update
    => So we controllably get latest/same version each from GitHub and build it on every machine separately
  • We share certain parts of the editor folder structure through symbolic linked folders

What’s working so far:

  • Files get edited just fine, close to real-time, working on different areas causes no conflicts
  • If there would be conflicting edit, Dropbox should notify and create conflicting version as separate

What’s not working fluently:

  • Editor does not recognize the files being changed “on the background”
    => Reloading the assets/project is needed to see other person’s changes

What would be needed to get proper tooling support:

  • Blueprint files as textual (we’re aiming to customize them to be XML-editable), so that the changes even within the same files would be manageable through source control tooling => merges and so fort.

I can give better details and/or share the setup for testbeds if someone else / EPIC would be interested to implement the editor support for collaborative editor. I don’t think it takes too much, it’s much the same as “Get Latest from Source Control”; just has to happen with automatic listening on local filesystem changes.

… or f 's MultiEdit is in state of this being something that could be implemented :-).

Having this thread go with so long pauses in posting - never know who is following anymore…

I would love to know aswell