Jump to content

Advice on file system for versioning worlds


photo

Recommended Posts

Hi all, 
My company is looking for some guidance on managing the Unigine filesystem for world assets.
We are using the Sim version of Unigine. 

We have a need to provide our customers with the ability to create and modify some simple worlds.

We have some tools that will generate meshes to be used in the world, and the customer will need to be able to place assets in the world.
This means at least modifying mesh files and layers/node files.

When a world is ready for use, it will be "published" such that it can be used in simulations.

Our issue is that we would like to allow multiple versions of the published world to be in use.
We currently only plan to have one editing source, i.e. you only edit the latest working copy.

The use case is something like the following

  1. World is published at version 1.
  2. Simulation exercises are built using world version 1.
  3. Training starts on version 1.
  4. Editing of the world continues
  5. A new version of the world is ready and is published at version 2.
  6. We need to continue training against version 1, until completion.
  7. Simultaneously we want to be able to create and test Simulation exercises against version 2.

So we need to be able to load up a specific version of a world.

Our thoughts are that our options fall into two main categories

  1. All versions of the world are available to the Unigine filesystem at run time
  2. Only one version of a world is available to the Unigine filesystem at run time.

Category 1 will likely mean a lot of renaming/GUID generation and reference updates on publish to make sure things are unique between versions.

Category 2 means dynamically modifying our unigine filesystem at run time.

We are suspecting that category 2 will be the most feasible.
It looks like there are a few ways to achieve this with umounts or postfix filtering etc.

We were looking for any advice that you might be able to provide on a solution, or any points of consideration we may be missing.

This seems like it could be a similar situation to saving game files that include the actual content (as oppose to instructions to regenerate the content) and allowing you to reload a previous save. So maybe there are some solutions in that space that could help.

Thanks for any help,
Chris

Link to comment

Hi Chris,

It's always better to stick with editing and loading only a single world version at once.

Maybe mounts will help in your case. You can write an Editor plugin that will create mount and place all the required contents when new version of world is needs to be created. Later you can try to mount all the contents in simulator runtime and switch the worlds if needed.

Thanks!

How to submit a good bug report
---
FTP server for test scenes and user uploads:

Link to comment

Thanks for the speedy response! 

Using mount points did seem like our best bet, so that's good to hear.

We will look into getting some runtime code to dynamically add and remove mounts to switch out which world and version of the world to load as desired.
As well as generating the appropriate mount file during our publishing step.

Do you know of anything we should be considering in terms of performance for modifying the virtual filesystem?
i.e. should we be expecting this to all happen automatically when we add/remove mounts and be quick, or do we need to do something special to avoid reloading the static data etc.?
I'm sure we will find this out when we try but always good to get any insights up front when we can :)
 

Cheers,
Chris

Link to comment

Can't promise that everything will go smoothly, but it should be possible to achieve. However, as always, the devil is in the details :)

I would recommend prototyping this system on a completely blank project. In that case, it would be easier for us to help you if you encounter any difficulties with the API. Once the initial idea has been verified, you can then port the code to the final application.

How to submit a good bug report
---
FTP server for test scenes and user uploads:

Link to comment
×
×
  • Create New...