Documentation
Docs/en/reference/particle-format/xml.md
Particle Source Rules
Generated reference. Do not edit this page directly. Update
BuildTools/ParticleFormatInterface.json, then runpython BuildTools/docs_particle_format.py --write.
| Reference index | Source rules | Formats and backends | Rendering | Tooling | Runtime | Integration | Validation | Canonical JSON model | Guide | Authoring tools |
| Stable ID | Rule | Requirement | Why | Source |
|---|---|---|---|---|
particle-format.xml.spark-graph |
SPARK XML graph | A .spark source must be accepted by the vendored SPARK XML loader and contain a usable System graph. | Baking fails when loadFromBuffer(“xml”, …) returns no system. | Source/Tools/ParticleBaker.cpp |
particle-format.xml.spark-textures |
SPARK texture paths | SPARK texture paths must be relative, contain no line-control characters, and remain inside the particle’s resource source. | The baker rejects absolute and escaping paths before producing .spk. | Source/Tools/ParticleBaker.cpp |
particle-format.xml.effekseer-project |
Effekseer project XML | An .efkproj source must be a non-empty EffekseerProject XML document supported by the fixed compiler profile. | The native compiler rejects malformed XML and unsupported profile features during baking. | Source/Tools/EffekseerCompiler.cpp |
particle-format.xml.effekseer-dependencies |
Effekseer dependency paths | Keep compiler-reported dependencies relative and inside the directory resource source that owns the project. | Dependency snapshots and compilation resolve against the physical project directory and reject escapes. | Source/Tools/ParticleBaker.cpp |
particle-format.xml.root |
SPARK document root | The document element must be named SPARK exactly. | The XML loader rejects missing or differently named roots before graph construction. | ThirdParty/spark/spark/src/Extensions/IOConverters/SPK_IO_XMLLoader.cpp |
particle-format.xml.single-system |
Exactly one System | The graph must contain exactly one System object; nested helper objects do not replace it and a second System is invalid. | Graph validation selects the sole System as the load result. | ThirdParty/spark/spark/src/Core/IO/SPK_IO_Loader.cpp |
particle-format.xml.object-tags |
Registered object tags | Every object element name must match one of the registered object tags in the generated catalog. | Graph::addNode fails when IOManager cannot construct the named object. | ThirdParty/spark/spark/src/Core/IO/SPK_IO_Loader.cpp |
particle-format.xml.attributes |
Attribute elements | Serialize descriptor values as attrib children with a non-empty id matching the object’s descriptor attribute name. | The loader ignores non-attrib children at attribute level and looks up each id in the descriptor. | ThirdParty/spark/spark/src/Extensions/IOConverters/SPK_IO_XMLLoader.cpp |
particle-format.xml.values |
Value attribute or text | A scalar or array value may be written in the attrib value XML attribute or as element text; value takes precedence when both exist. | XMLLoader::getValue checks the value attribute first and otherwise reads child text. | ThirdParty/spark/spark/src/Extensions/IOConverters/SPK_IO_XMLLoader.cpp |
particle-format.xml.arrays |
Semicolon arrays | Separate array values with semicolons; each element is converted independently and at least one converted value is required before assignment. | convert2Array splits only on semicolons and returns false for an empty conversion result. | ThirdParty/spark/spark/include/Extensions/IOConverters/SPK_IO_XMLLoader.h |
particle-format.xml.references |
Nested objects and references | Reference attributes may nest an object directly or identify a previously described shared object through ref; arrays of references use nested objects and Ref children. | The loader resolves both inline graph nodes and integer reference IDs, while the saver emits references according to graph sharing. | ThirdParty/spark/spark/src/Extensions/IOConverters/SPK_IO_XMLLoader.cpp ThirdParty/spark/spark/src/Extensions/IOConverters/SPK_IO_XMLSaver.cpp |
particle-format.xml.names-and-unknowns |
Names and unknown attributes | Write an object’s optional display name in its name XML attribute. Unknown non-empty attrib ids are logged as warnings and skipped rather than becoming custom data. | Names have a dedicated descriptor path, and typoed attributes do not affect the loaded object. | ThirdParty/spark/spark/src/Extensions/IOConverters/SPK_IO_XMLLoader.cpp |