Is there an Ability to link to and import Scenes and assets from other projects?

I just though it would be great to be able to link and import Scenes/Assets between projects.

For instance:

  • Options Menu systems.
  • Game Studio Intros
  • Credits
  • Hi Score Tables

Or other elements that could be used across platforms e.g. UI Overlays or Controls for common types of games.

Would benefit multi-projects allowing updates to be made in one place and automatically incorporated into new builds across multiple projects.

You can use git submodules to put an entire directory (underneath Assets) into its own git repository.

Then your outer git repository (you ARE using source control, right???) would track what state the inner repository should be at.

My company uses this mechanism at fairly large scale. Forensically the outer git module precisely and repeatably controls the position of the inner submodule to be able to instantly replicate any setup, as well as control the uptake of library (shared) features.

If that’s too much plumbing you can just link (ln) directories in your filesystem, but that has the drawback that every game is instantaneously using only one version of every file, and you are not source controlled. All damage to shared files spreads instantly to all projects using it.

Personally, I think this is risky. Developers get tunnel vision when working on their project, and make changes which may unintentionally break how the same code is used in a different project. From a QA perspective, it also becomes a nightmare, because changes now need to be verified across all projects which use that shared code, instead of just the project the change was intended for.

This also creates a problem when one project is getting close to release, you’ll need to freeze any code shared between projects, which interrupts those other projects. In a project nearing release, you don’t want to take any unnecessary changes.

So I think it is better to manually merge changes to shared code. It is more work for the devs when merging, but it allows projects to not step on each other, it allows devs to focus on just their project instead of worrying about what their changes are going to break in any other project, and it lets QA focus on just verifying changes to the one project the change is intended for.

1 Like