Snapshot release of ColdScene - SceneXML v0.1 for Unity 3

We, Apex Virtual Entertainment, have been working on a tool for Unity called ColdScene which we want to share with you guys and hear your feedback on it with any improvements that can be done or any bugs you might find. It is a tool which can save your Unity scenes to XML and load them in-game using asset bundles. Feel free to try it out.

The main reasons we started developing this tool were:
1. We wanted a declared scene format
2. We wanted to be more in control of scene loading and unloading
3. We wanted to be able to do better memory profiling during scene loading (we haven't been able to create a totally reliable memory profiler yet)

We have demonstrated ColdScene by using it together with our small prototype terrain engine called ColdTerrain (which is still in progress)
and another demo with two small simple scenes.

What is ColdScene?
--------------------------------------------------
A small tool to save any Unity scene to XML format.
These XML files can then be loaded (and unloaded) as
scenes in Unity as normal Unity scene files can.

Why ColdScene?
--------------------------------------------------
1. Load events
ColdScene will get pre and post event on loading
of all serialized properties and fields in the scene.

2. Scene unload
Unloading scenes is possible in ColdScene which is
not currently available in Unity.

3. Step-by-step scene load/unload for debugging
With the scene enumerator you are able to bit by bit
load (or unload) a scene bit by bit which can be handy
for debugging.

4. Asynchronous scene loading problem solved
Using Unity's own asynchronous scene loading have previous
caused problems for some and for Apex as well (this might
have been fixed in Unity 3.0 we haven't tested that), so
we have tried to fix this with ColdScene. You also have the
option to choose how much time per frame you want to
use for the loading or unloading which is not currently
with Unity's asynchronous scene load.

How do I install ColdScene?
--------------------------------------------------
Import the included unity package into your project.
The package includes a .dll file which must be in your
unity project, it includes some editor scripts to save
your scenes and it also includes some test
scripts/assets/scenes which are just demonstration of
how ColdScene works, which most of you probably want to
re-write yourself.

How does ColdScene work?
--------------------------------------------------
Saving:
-------
Select the root of the scene you want to save. Click on
"ColdScene/Save scene to XML" to create the XML file.
An asset bundle will also be created that contains
all its dependencies and the XML file. It will be saved
in a subfolder of the Assets folder called "scenes".

Synchronous loading:
--------------------
Use: SceneManager.Get().LoadScene(string bucketId, float priority, string name)
(e.g. SceneManager.Get().LoadScene("Root", 0, "Root"), where "Root" is the
name of the asset bundle in the "ColdScene_files" folder, bucket is used as
an id for a tile where the scene is loaded so it is possible to prioritise
some tiles over other ones based on where the player is located, priority=0
will place requests in the front of the queue)

when sceneEnumerator.MoveNext() returns false the scene is fully loaded.

At every step a property is being set. If the component of the property
doesn't exist the component will be created. If the game object of the
component doesn't exist, it will also be created. The game object
will initially be deactivated and be activated
(if set to be so) when all properties have been set for the game object.

***Remark***
When building standalone apps remember to manually copy
the "ColdScene_files" folder containing the asset bundles of your
scenes into the data folder of the standalone build
(the subfolder of the build's .exe file called "<app-name>_data").

when sceneEnumerator.MoveNext() returns false the scene is fully unloaded.

A game object will be deactivated as soon as its first property is being set
to its default value (except for scene root objects which will remain
active at all time until deleted).

Can I obtain the source code of what is inside the .dll file?
--------------------------------------------------
Yes, you most likely can. Write an email to tech@apex.dk asking for it and
why you are interested in it, then we will get back to you.

Tutorial for loading/unloading test scenes:
--------------------------------------------------
1. Open the 'Start' scene
2. Run the player in editor (or in standalone build with 'Start' scene included)
3. Click on 'Load'
4. Click on 'Create player'

"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.