I’m involved in a project called Scene Fusion. It has been mentioned around here a few times. I lets multiple users connect to a single scene and edit it together. It is intended to vastly speed up world building by allowing people to actively collaborate. Here is a video of it in action with 6 users building a single scene together:
We put it online a couple of months ago to get people to try it out and give us some feedback. We have had a good response so far, but we’ve found getting feedback is a bit more difficult.
So, I’m coming out to ask all of you: What would this system need to do in order for you to find it useful, or even indispensable?
A little bit about what Scene Fusion is and how it works:
It is designed to allow multiple people to collaborate on a single-scene in real-time
It works with and compliments multi-scene editing
It works with and compliments Perforce, PlasticSCM, Unity Collaborate, and such tools
It is a cloud service so it works for local and remote world builders
It is currently based on prefabs, so it works best with a big studio workflow that only uses prefabs to populate the scene
It is in active beta, available to everyone today, at scenefusion.com.
If you have any questions, feature requests, or opinions, just fire away! I’ll be here to respond.
It sounds cool. So it can hook into source control like bitbucket/github? It only allows prefabs? Other than that it sounds cool. If I didn’t work solo so much, I’d try it out - haha.
It doesn’t have to touch source control, though there are certain things we can hook that that I believe could be really interesting if people wanted us to. Basically, you use source control to share your project with everyone, you then load a scene, and use Scene Fusion to ‘host’ it. Everyone else with the project sees your hosted session and can join.
Yes, at the moment it replicates prefabs and empty gameObjects. This is about the only complaint we’ve seen so far, so we’re fixing it to make SF work for more diverse workflows.
I think if it will be exclusively using prefabs that will limit it in certain ways, but as long as you can edit the “network” copy of the prefab, like say, tweak a characters speed in the prefab in the project, and then have those changes noticed and honored over the network to other instances of the game, that would be cool. If not then what about adjusting values on a prefab that is in a scene? If I make a prefab racecar really fast, will it also be really fast on everybody’s scene?
Short answer is yes. Scene Fusion replicates custom properties on gameObjects that are in the scene. So if you add a component to the prefab that contains a variable called “Max_Speed”, you can make an instance of that prefab and edit Max_Speed in the inspector, and everyone else will see the change happen in real-time.
If you want to update a prefab’s default value, ie. update the asset itself, you can just use an existing solution like perforce or plastic to distribute an updated prefabs, even while Scene Fusion is running.
Ahh ok. Well sounds like a great idea, and I think you should definitely keep working on this, and get some fellows from around here to help test it out! Perhaps it could help out a lot of indie teams working from a distance!
Thanks! So far that’s what has been going on. We have several teams using it right now who are happy with it because it suits their workflow. Most of them are distributed, so it helps them a lot. The people using it have reported that Scene Fusion is cutting what should be months of work down to a few weeks.
I wish it wouldn’t be tied to the cloud, i.e. you could download SF server app then make everyone in the team connect to machine hosted and controlled by you over the LAN that would then transmit it to the connected editor instances.
Would also lessen your hosting costs as the only thing you would have to pay for is web server, not whole cloud. Which when it will become popular (and it will, given the functionality) would provide incredible savings for you.
Also it would soothe types like me who don’t want data related to their super hyper awesome secret project fly all over the Internet.
And in case of whole team being in one office it would be just faster as you could host server machine in the office and have people connect to it over LAN, which means extremely low pings.
And that’s the problem that blocks real proficient collaboration.
Let’s say you need to make enemy X. But enemy X doesn’t have a model yet. So you open blender to make one. Now you’d like to be able for others to use it.
Without data transfer:
You need to upload/ftp/check in the model file
Then you need to tell your team to sync project
Then you need to wait until everyone does it.
Then you say: Hey, so this is the model for Enemy X. I need one of the programmers to write AI for it, can you do it?
Then you repeat steps 1-3 regarding AI code file after programmer writes and tests it
With data transfer:
You say: Hey, so this is the model for Enemy X. I need one of the programmers to write AI for it, can you do it?
After a while code for the AI just appears in your project, just like model file appeared for others.
I thought the idea was that the best time to use it might be long after files are imported and created at prototype stage, and at like a design stage, several people can collaborate on a scene kind of deal… did I misinterpret that? I see what you mean darkhog, but I think the idea is take an existing base of assets and work within them together… right?
Yeah, but often assets are created long after proto level is done. I mean, I’ve made yesterday a new enemy type, even though proto level was made a long time ago and level I am making now is halfway finished.
You should add a scoring system with achievements. Points could be accrued in a variety of ways like edit counts and combos. Awards for things like:
Quickest change stomp.
Nemesis: (multiple re edits undoing another’s work)
Changing names to confuse
Pwning: adding others work to your prefab.
Stuff like that. Make it a full on RTS-DvD battle.
@darkhog : Yes, we are considering what it takes to transfer the assets. We can do it, but what we’ve been hearing is that everyone is using Perforce which already allows you to ship the assets in near real-time, and we support that directly. For everyone who doesn’t have an asset, we show a placeholder ‘?’ in the scene. Once the asset arrives, we swap them in. Here is a video of how it works:
This is correct. Some studios do follow this type of workflow. The bigger the studio, the more of a serialized pipeline they have with their workflows. I worked in a similar pipeline before as well.
It has been awhile since I’ve posted an update on this project. We have made a tremendous amount of progress. First off, there prefab requirement is gone. You can now create gameObjects ad-hoc and have them replicate. As far as asset replication goes, we have tested with the upcoming collaborate system by Unity in addition to Perforce, PlasticSCM, etc. and those provide simple methods of providing asset updates to your team. We can certainly implement this ourselves, but it would take time and we are currently focused on making the replication portion as solid as possible.