The everlasting problem with Scenes in Unity3D:
Every developer will sooner or later face the hurdles when working with multiple scenes as the scene management is one of the biggest issues in Unity. Also is it very difficult to implement persistent stuff which should be available in every scene. One way is to implement a prefab system which automatically loats in the prefab but it is very difficult to debug and maintain later on. During my internship at Polycular, I had to implement a system which allows the user to switch between scenes regardless which scene is currently loaded. The project itself was a collection of scenes where each scene contains a simple minigame.
My first approach was to implement a user interface and declared it to be not destroyed when the scene unloads. Although it did its job, it was not enough as my chief asked to implement scene transistions and loading screens which really gave me trouble because of the scene changing system of Unity3D. Whenever you change a scene, the whole game freezes and the new scene pops in without any visual effect which looks dull and unprofessional. More or less I managed to implement a transistioning effect using prefabs which was sufficient for that project but it was very complicated and difficult to maintain. A week later, I had to test a plugin for Unity called UFrame which implements a visual coding system similar to Blueprint in Unreal.
Although I disliked the visual coding systems, UFrame has a core component called UFrameKernel which loads a special scene into the game regardless of which scene you are starting from. The scene itself was just there to excute stuff inside UFrame. However we started to throw in stuff which should be persistent like the menu where the user can switch scenes and it really was there in every scene. As nobody like the visual coding system, we deleted everything from UFrame and just keep that Kernel for that usage and so payed for huge product even if we use only a tiny fraction of it.
No project without a Masterscene:
The Masterscene does nothing more than implementing a scene which is persistent and always active no matter which scene is loaded. This means stuff placed in such scene is persistent during the whole game. Without a masterscene, I had to implement complicated singleton systems to create a similar persistence. Also scene transistion effects and loading screens are much easier to implement as it uses additive and subtractive scene loading. The stuff which I usually have in the Masterscene are plugins, player controls, transistion effects, user interfaces, plugins from third party software and much more.
My first game Endless Dream would be far more difficult to develop without this system. An additional feature is also the management of the build settings. I often forgot to add new scenes to the build settings and wondered after building the game why the added scene is just black. Such mistakes are annoying and cost precious development time. Every Unity project I am working on will use this system because I know how difficult scene related stuff can be and the 10$ are a fair price as it solves some really nasty problems in Unity. For more Information, you can check out the documentation or simply watch the videos below which explains its features.