MultiEdit - Collaborative Level Editing Plugin

Hello,

I am creating a plugin called MultiEdit for the unreal editor to enable collaborative level editing.

If you have ever worked with google docs you are probably familiar with this concept.
My goal is that multiple developers can create a level together at real-time on different machines.

The video below demonstrates the first version.

It demonstrates:

Creating a host and client on one machine. Multiple clients can connect to this host

Render location and rotation of other users, so you can see where you colleagues are

Creating lights, particles, meshes and sounds

Moving actors

Note: Deleting actors is also working!

I would like to hear if anyone has suggestions and or questions!

Edit: Check out the trello page for this plugin!

I thought that UE4 already had this feature, but if not this is awesome!

I know there is something called LiveEdit, but there is almost none information about it. I am just guessing that it is probably a bit similar.

There is also this thread about this topic. My conclusion from this thread is that it doesn’t exist and people want such a feature.

And he is an Unreal Engine Developer.

Do you intend to sell this or make it avaiable for free? No matter what, we really would love to use this. Great Job! Do you have an ETA?

What happens, when two people manipulate the object at the same time?

Thank you for your reply! Let me give you some background information. I am developing this plugin for a minor of my bachelor studies. The end of the minor is around end January so that would probably be the estimated time of the first release.

I am not sure how to answer your question about if it be free or not. I am currently a poor unemployed student so it would be awesome if I could earn some money with this.

About your other question what happen when 2 people manipulate the object at the same time. Currently the last transformation be used. But I would like to hear feedback from you guys what should happen.

This looks pretty cool… there is definitely a need for a plugin like this, I would say you can easily put this in the marketplace when it’s finished.

I have a couple of suggestions.
Ideally I think you could make an option of how often the updates are going to be send/received over the network. For example if two people are on the same local network you could configure it to be nearly real time (and so not only the last transformation is going to be send).
I imagine you have already though about this… but there should be a visual indication when an object is been selected/manipulated by the other people, perhaps a different highlight color would be nice.

Do you have a “currently planned feature list” by any chance? I would gladly give you ideas if you need some :stuck_out_tongue:

Great work bro! If you end up releasing it, I certainly purchase it. :smiley:

Thank you for your responses. It really motivates me!

That is really good feedback! We (my product owner/teacher and I) were also thinking about how to update the scene. We were thinking about a sync button, so an user can sync an object when she/he wants to. But the concept initially is that the workflow of a designer is not changed. So she/he does not have to change the behavior it is used to when she/he is working in the Unreal Engine. A sync button like this would be conflicting with that concept. About your concept of updating depending on your location and others is an improvement for later. It probably be more necessary when a big group of people are working in a big level. However such a thing is hard to test for me alone. But I definitely keep it in mind!

Yes I did. It would probably be something similar as the highlighting of the Unreal Editor (yellow color around objects), but then with other colors. It would be good if rendered users have the same colors as the highlight. Google docs is a good inspiration for these types of features!!

Yes I am using it is currently public, so everyone can watch but not edit. I am doing sprints of 2 weeks. My product owner/teacher decides what should be done next sprint. I know trello has some support for voting and such so I take a look at that! It would be cool if people can add features to the trello board!

This looks cool.

I can understand that code sync (c++ changes) might be harder to handle, but I see no reason that blueprints could not be implemented and working quite well in this context.

You are running a custom c++ driven module for the plugin to handle network information and create positioning objects?

Thank you for your suggestion !

I understand your opinion. I do not know much about blueprints, since I have not worked with blueprints yet. But I know you have to compile blueprints. So I am not sure how to handle this (I could figure this out ofcourse). However I don’t think that creating blueprints via collaborative editing is a priority right now.

Yes I am. It is also good to know for you guys that I never change the UE4 source. I think it would be really bad if a designer or something has to build my fork from github to use the plugin.

The other users in the scene are now cameras. So now you can see the perspective of the other users!

This is seriously awesome.

You sir, are totally awesome. :smiley:

Nice. I personally feel collaborative-enablilty be the standard of App design. Good eye on the future.

Anyone assisting you with remote testing between machines? Like source control, on the fly asset ownership control:checkout/locking/transfer should available to prevent user conflict.

Combined with UE4 Source Control Support, and built-in Chat/VoIP, UnrealEd be the ultimate collaborative Game Dev Suite.

This is brilliant and definitely something I’d pay for. Good job!

I totally agree with you, I think features like this can improve development time a lot!

I be doing a test with some game designer from my school on different machines. They are pretty good in Unity, but never used Unreal. So I am wondering what the result of the test be. I am also building my own desktop (I only have a laptop at the moment) with the last money I have :p, so I be able to test on 2 machines in the future. But it would be awesome if the community could test it of course! I am a programmer, so I don’t know the workflow of a designer in Unreal. I actually never created a “big” level in UE4 (I did in UDK). That is why I created this thread, I would love to hear from designers how it should be.

Currently I am assuming that all the users in the session have the same assets. But it probably happen that for example one of them created a new mesh and wants to use it. But the others don’t have this mesh. I am not really sure how I handle such a situation. Do you guys all use git for your game/leve? As first version it could be possible that the assets be shared using git and the plugin only detect if all users have the asset that is added to the world. Then it could give a message to sender “Is asset x/x/x.uasset pushed?” and the receiver “You don’t have asset x/x/x.uasset did you pull?”. What is your opinion on this?

Is there already a built in Chat system in Unreal ? Or would you like to see this in the plugin? I think teams would prefer using third party speaking systems like skype for communication.

About missing assets, I would say a good idea would be to spawn a temporary placeholder mesh or sprite that be locked (until the user checkout/import the real asset) then update the temporary asset with the real one… or something along those lines :stuck_out_tongue:

I agree… no need to over-complicate things lol

I absolutely must get my hands on this tool! This is exactly what I’ve been asking Epic about since the engine came out, and they said the framework was there but it was actually a feature officially.

That is a really good suggestion! I put it on the trello board immediately!

Sweet work! Reminds me of Hero Engine (used for Star Wars: The Old Republic among some other titles) where multi-user editing was a pillar feature. This could be very cool for collaborative editing during review / design discussions (w/ off-site work while Skyping for example, narrow use-case but potentially super valuable)