At our studio we have an old game that we would like to take a new pass at mixing.
I was wondering if it’s possible to create a copy of our project and in that project do all the mixing in, and then merge the project back into our old one? The mixing will mostly involve reorganizing the buss structure.
The reason we can’t just replace the old project with the new one is because we push updates to the game almost weekly and we suspect the mixing will take more time then a week.
I suspect that it might not be possible, but wanted to see if anyone has any experience or answer to this.
FMOD’s source control integration does permit merging changes made in separate versions of the project - in fact, that’s the main benefit of using our source control integration. Each user collaborating on a project is actually working on the copy of that project that’s present in their local workspace; every time they select “Sync Latest, Merge & Commit…” they merge their changes into the copy of the project stored in their source control repository. If you want to avoid merging your local changes into the repository, all you need to do is avoid using the “Sync Latest, Merge & Commit…” command.
There is one limitation of this: FMOD Studio cannot intelligently merge changes made by multiple different users to the same file. This is rarely a problem, however, as an FMOD Studio project consists of not one file, but many; each bus, snapshot, event, asset, bank, shared effect, parameter, and folder in your project has its own metadata file in the project folder, and can be edited independently.
This means that as long as the person who’s updating your project routing only changes the routing destinations of events and buses that aren’t currently being edited by anyone else, they’ll have no trouble working on the project at the same time as other people. (To clarify, when I say “the routing destination,” I mean only the specific bus that an event or bus is routed into. Other buses further downstream are irrelevant. For example, if the “cow” event is routed into the “barn” group bus and the “barn” group bus is routed in turn into the “farm” group bus, rerouting the “barn” bus into a different group bus does not count as changing the routing destination of the “cow” event, as it is still routed into the “barn” group bus, even though the “barn” group bus’ routing destination has changed.) Thus, if they only reroute buses and do not touch events, you won’t have to do anything special to make this work.
If they do need to change the routing destination of an event that’s being worked on my someone else, the procedure is simple:
The person working on the event should “Sync Latest, Merge & Commit…” to ensure their changes are subnmitted to your source control repository.
The person rerouting your project should “Sync Latest, Merge & Commit…” to make sure they have the latest version of the project.
The person rerouting your project should reroute the event.
The person rerouting your project should “Sync Latest, Merge & Commit…” to ensure their change is subnmitted to your source control repository.
The person working on the event should “Sync Latest, Merge & Commit…” to make sure they have the latest version of the event, then resume working.