the question in the topic is basically all I need to know and if so, how. Tried looking for it before posting but everything I find is about working on the same project and version control, but that’s not the thing I’m looking for.
I need to know if it’s possible for different people work on the same map in real-time, like in different layers or something, so that two different artists or designer can be doing different parts of a single map/level.
That question comes up, alot, and I’ve wondered the same years ago when working with Unity. Of course thinking about the collaboration situation. There was an engine years ago that disappeared I believe that had that function, but it was a hosted solution expensive middleware.
Nobody has this that I am aware of. About 4 years ago Carmack was demoing I’d tech 5 and said they had it. However when they finally released it did not. Why because it required a cluster or render farm with a lot of bandwidth and hardware. They didn’t figure ppl could pay for it.
The Torque Game engine has this for short time. One of the community members released a mod to the engine that allowed upto 32 players to work on a single game world at one time.
With the tree view setup in the editor something like this could be possible with afair amount of work. Really if you think about it, its nothing more then spawning objects into the game world and saving them to the map. In that case the basics are already there inside of the engine / editor. You would need to come up with a way to keep the artwork (models / materials / blueprints) syncing up with each other. (Like a svn / github / perforce style system in realtime.
Doing something like multiple people working on the same blueprint seems like it would be out of the question. But just simple populateing the game world with models wouldnt be out of the question. Terrain editing would be a different story.
There must be a way, i mean Epic use UE4 to game their games, having integration is key to complete the game with so many people. I would like to see some answers from Epic i think they know more than us
The best way to do this is hosting tools locally but hosting the rendering side of things as well as all the assets on a shared server. It would take an incredible amount of power and bandwidth though. Well, relative to your standard home development environment.
You could just do the same thing that the Torque pack did, basically.
Have one person be the server - they are responsible for actually saving the level.
Let clients connect, and replicate their camera position and such, as well as any objects they create. It would also need some capability to upload resources to the server when they’re imported, but that’s not too crazy.
Clients make objects, their info is replicated to the server. The server saves the map with any objects created on the local client and any remote clients.
No need for an intermediary server to host everything, really. Just need to be able to replicate the actions of clients in the editor to a server.
Obviously some stuff would be disabled as a remote client - baking the lighting, playing, etc.
HeroEngine does it, and does it well. But their engine is built specifically for MMO game world development. Because of this they already have a complex replication stack in place that is able to replicate the entire change real time to the other editors / people working in the game world. You could in theory try and do it but as stated you basically need about 4 servers. An area server that plays master roll for the area / level. A repository server responsible for saving all the data from both the clients(people working on the map, and the area itself) the phsyics server, as all clients render physics differently so you need a central control valve to manage the raw data then pass it along to the client’s machines to render. Which also drives lighting to be different as well cause you have to have basically real time light rendering at all times, can’t pre-bake any lighting. Etc so it could be possible but it’s not simple.
Now with that said you can make multiple layers and stack them onto each other. So could have a terrain level, then put a level with buildings inside of it. Steam them together, if I’m not mistaken. So someone could be adjusting the level with terrain, while the other person is adjusting the level with buildings etc. But it takes a bit of a solid team to set that up, from what I have read.
You don’t need all that. Like I said earlier - that’s not how the Torque version worked, and IMO, that setup is needlessly complex and only makes sense if you are trying to be HeroEngine/BigWorld and have 20 people work on a humongous map at once. That’s not what we’re talking about here, which is just being able to have remote clients edit and their changes replicate to a server. The only thing that matters is replicating the objects that remote clients create over to the server, and their camera position and stuff - physics, etc. does not need to be replicated… the goal is not to let every person play at once together, just edit and create/place objects.
The server handles lighting like normal, completely separate of any online functionality.
We created an open world map (not that large in size) for the last phoenix, our UDK game. We had 3 guys working on the map at the same time. We approached this by using level streaming and set the streamed levels to always load. The persistent map was a blank map with no content in it. Its purpose was to stream in all the other maps and act as a common point where content was brought together. Our world was divided into sections and each section was its own map. These section maps contained only level geometry. We had several other streamed maps as well. One that contained only lighting, one with only audio and one that contained all elements of the game that were scripted using kismet and it also contained our cinematic sequences. Essentially each map acted as a layer ( no not the kind of layer that Unreal uses) and this allowed multiple people to work on the same map. It also gave us flexibility to utilize level streaming to unload maps if we ran into framerate issues. Fortunately we did not have to unload anything given the small scale of our world. Hopefully this wasn’t too confusing.