Документация
Docs/ru/reference/particle-format/runtime.md
Runtime-контракт частиц
Сгенерированный справочник. Не редактируйте эту страницу напрямую. Обновите
BuildTools/ParticleFormatInterface.json, затем выполнитеpython BuildTools/docs_particle_format.py --write.
| Индекс справочника | Правила исходников | Форматы и backend-ы | Отрисовка | Инструменты | Runtime | Интеграция | Проверка | Каноническая JSON-модель | Руководство | Инструменты авторинга |
| Стабильный ID | Правило | Требование | Причина | Источник |
|---|---|---|---|---|
particle-format.runtime.backend-composition |
Компоновка подсистем | Собирайте только подсистемы частиц, выбранные FO_SPARK_PARTICLES и FO_EFFEKSEER_PARTICLES. | CreateParticleRuntimeBackends — единая точка компоновки, учитывающая включённые возможности. | Source/Client/ParticleRuntime.cpp |
particle-format.runtime.extension-routing |
Маршрутизация по расширению | Ссылайтесь на пути запечённых .spk или .efk; ParticleManager выбирает подсистему по объявленному ею расширению. | Расширения исходных авторских файлов не являются runtime-форматами спрайтов. | Source/Client/VisualParticles.cpp |
particle-format.runtime.seed |
Повторное создание с seed | Используйте явный seed, когда требуется детерминированное воспроизведение или сравнение. | Нейтральный фасад передаёт seed выбранной подсистеме. | Source/Client/VisualParticles.cpp |
particle-format.runtime.scale |
Runtime-масштаб | Применяйте конечный положительный масштаб через ParticleSystem и повторно проверяйте границы, глубину и размещение привязок. | Масштаб входит в независимую от подсистемы runtime-настройку и принудительно обновляет трансформацию. | Source/Client/VisualParticles.cpp |
particle-format.runtime.baked-bounds |
Обязательные запечённые границы | Запекайте для каждой системы частиц смоделированный параллелепипед позиций и максимальный радиус billboard в runtime-ресурс. SPARK отклоняет систему, которая ни разу не показала частицу; Effekseer добавляет и проверяет обязательный trailer границ. | Статически измеренные границы заменяют ручные размеры отрисовки и не требуют пересчитывать AABB частиц каждый кадр. | Source/Tools/ParticleBaker.cpp Source/Client/EffekseerExtension.cpp |
particle-format.runtime.bounds-semantics |
Параллелепипед позиций и радиус billboard | Считайте ParticleBounds3D.PositionMin/PositionMax мировыми позициями, преобразованными полной матрицей размещения, а BillboardRadius — ориентированным к камере запасом, преобразованным только масштабом размещения. | Вращение или перемещение радиуса billboard как мировой точки завышает кадр и всё равно может неверно описывать его экранный размер. | Source/Client/ParticleRuntime.h |
particle-format.runtime.live-bounds |
Активные границы | GetLiveBounds возвращает преобразованные запечённые границы, только пока в подсистеме есть активные частицы или экземпляры; неактивные и завершённые системы не резервируют пространство кадра модели. | Периодические прикреплённые эффекты должны расширять содержащую их модель только во время видимости. | Source/Client/SparkExtension.cpp Source/Client/EffekseerExtension.cpp Source/Client/ModelInstance.cpp |
particle-format.runtime.sprite-frame |
Автоматический кадр спрайта частиц | ParticleSystem проецирует запечённые границы с учётом наклона камеры карты, добавляет запасы billboard и сглаживания и автоматически вычисляет размер атласа, смещение эмиттера и мировую трансформацию. При недопустимых или недоступных границах используются Render.DefaultParticleDrawWidth/Height. | Выделение ParticleSprite следует измеренному содержимому эффекта без авторского поля размера отрисовки. | Source/Client/VisualParticles.cpp Source/Client/ParticleSprites.cpp |
particle-format.runtime.prewarm |
Prewarm | Используйте prewarm, только когда эффект должен появиться уже смоделированным, и учитывайте его стоимость в проектном пороге производительности. | Runtime продвигает выбранную подсистему и сбрасывает время фасада к сообщённому прошедшему времени. | Source/Client/VisualParticles.cpp |
particle-format.runtime.update-cadence |
Частота обновления | Render.Animation3dFPS задаёт порог обновления частиц в миллисекундах; ноль оставляет нулевой порог и тем самым допускает обновление каждый кадр. | Симуляция частиц использует общую настройку 3D-анимации, а не отдельный FPS частиц. | Source/Client/VisualParticles.cpp Source/Common/Settings.inc |
particle-format.runtime.atlas-path |
Стандартный маршрут через внеэкранный атлас | При выключенном draw in scene обновления рисуют систему SPARK в промежуточную render target и копируют её в атлас спрайтов; обычный пакетный рендеринг спрайтов рисует полученный четырёхугольник. | Стандартный маршрут сохраняет обычный порядок и пакетирование спрайтов ценой уплощения глубины частиц. | Source/Client/ParticleSprites.cpp |
particle-format.runtime.scene-path |
Прямой маршрут сцены карты | При включённом draw in scene ParticleSprite рисуется напрямую и выводит геометрию SPARK в проекции карты с общей целью глубины вместо обновления своей области атласа. | Частицы мирового пространства могут перекрываться стоящими спрайтами и моделями согласно состоянию глубины выбранного .fofx. | Source/Client/ParticleSprites.h Source/Client/ParticleSprites.cpp |
particle-format.runtime.sprite-semantics |
Семантика анимации ParticleSprite | ParticleSprite нельзя копировать и он никогда не участвует в hit test; Play пересоздаёт систему, Stop ничего не делает, SetTime и SetDir игнорируются, а IsPlaying отражает активное состояние SPARK. | Универсальные элементы управления анимацией Sprite не соответствуют временной шкале SPARK или выбору направления. | Source/Client/ParticleSprites.h Source/Client/ParticleSprites.cpp |
particle-format.runtime.world-scale |
Общий масштаб моделей и частиц | Render.ModelProjFactor задаёт число экранных пикселей на единицу трёхмерного мира для моделей и частиц в сцене. Значение движка по умолчанию — 40.0; встраивающий проект может согласованно его переопределить. | ParticleSprite и проекция модели используют одну настройку масштаба, поэтому проектные переопределения влияют на оба типа. | Source/Common/Settings.inc Source/Client/ParticleSprites.cpp |