Custom World ZIP Uploads
========================
Cloud Sim custom-world ZIP uploads use a Fuel-style layout for the world and
any models it references. Put one unambiguous ``.sdf`` or ``.world`` file in the
archive and keep each bundled model in its own directory with the required
Fuel metadata and model SDF. ZIP uploads can be up to 1 GB; standalone SDF and
world files remain limited to 20 MB.
ZIP layout requirements
-----------------------
The recommended layout is:
.. code-block:: text
my-world/
├── world.sdf
└── models/
├── chair/
│ ├── model.config
│ ├── model.sdf
│ ├── meshes/
│ │ └── chair.dae
│ └── materials/
│ └── textures/
│ └── chair.png
└── table/
├── model.config
├── model.sdf
└── meshes/
└── table.obj
``world.sdf`` may be at the ZIP root or inside one enclosing directory, but the
archive must contain exactly one unambiguous world file outside model, mesh,
material, and thumbnail directories. Each bundled model needs both
``model.config`` and ``model.sdf`` in its model directory. Keep meshes, textures,
materials, and other model resources beneath that model directory.
Adding a thumbnail
------------------
ZIP packages may include preview images for the world. Use ``.png``, ``.jpg``,
``.jpeg``, or ``.webp`` files no larger than 5 MB. For the best results, place
them in a ``thumbnail`` or ``thumbnails`` directory, or include a name such as
``thumbnail``, ``preview``, ``screenshot``, or ``cover`` in the filename. Up to 20
matching images can be included.
For example:
.. code-block:: text
my-world/
├── world.sdf
└── thumbnails/
├── overview.png
└── cover.webp
When you review the uploaded package, the app shows any matching images so you
can choose one as the world's thumbnail. You can also upload a new image
during review, or save the world without a thumbnail.
Model references
----------------
Reference bundled models with ``model://`` URIs and keep model resources
relocatable:
.. code-block:: xml
model://chair
The upload processor also understands Fuel model URLs such as
``https://fuel.gazebosim.org/1.0/OpenRobotics/models/Box`` and downloads those
models into the uploaded simulation package. Local relative paths and
absolute filesystem paths are not interchangeable: absolute paths are not
portable and will be reported as asset warnings.
This layout follows the official `Gazebo Fuel model directory structure
`_.
Do not zip an extra parent directory around the package contents unless that
directory is the single enclosing directory described above.