Well, Unity uses Prefabs instead of factories, as far as i know, because it's a data-driven approach, which Ash promotes (isn't it?), a rational thing to do especially with editor (which uses itself to add prefabs as well).
So, yes, i managed to make Prefabs, Prefab is basically an entity with number of components with preinited data. Which makes them useful for pooling as well.
<prefab>
<component cclass="ottomoto.components::Prefab" name="bg" precache="2"/>
<component cclass="ottomoto.components::Transform" x="320" y="200" rotation="0" scale_x="1" scale_y="1" />
<component cclass="ottomoto.components::SpriteRenderer" visible="true" drawable="{asset:'bg1'}" layer="0"/>
</prefab>
And there's a level description wich may look like that
<level>
<entity>
<component cclass="ottomoto.components::Prefab" name="bg"/>
</entity>
</level>
Deserializer takes that data, checks that it's based on Prefab, then creates prefab, or in fact takes it from the pool,
then it goes through properties described in the level and sets mentioned vars (in this case, no vars).
If we have something like that for example:
<entity>
<component cclass="ottomoto.components::Prefab" name="saw2"/>
<component cclass="ottomoto.components::Transform" y="271" x="252"/>
</entity>
it means that we have a 'custom' values for Transform component (x, y), and all other components and properties are taken from Prefab.
In Unity, being in Editor, we will see such 'custom' values in Bold if i'm not mistaken.
And yes, it is achievable, one just have to perform per-component per-variable check and compare the values with values stored in Prefabs.
I did manage to do that, so yeah, the Editor looks somewhat like Unity now. Having 'custom' thing highlighted is very useful.
And of course, the main feature is to be able to drop components onto new entity and save everything you did as a Prefab, to be able to use it in the future.
And to be able to have it in the 'Library', which is used for rapid development (drag and drop).
One last thing with Prefabs, as soon as one of the components removed, or added, it's not a Prefab anymore (but of course may be saved as one if it is needed).
Basically, to be able to use Prefabs, one must be able to save only the data which is different from the Prefab entity to the level file, that's all.
Topic is closed.
Cheers.