FOnline Engine
Current master GitHub
Документация Docs/ru/reference/image-format/runtime.md

Контракт runtime спрайтов

Сгенерированный справочник. Не редактируйте его напрямую. Обновите BuildTools/ImageFormatInterface.json, затем выполните python BuildTools/docs_image_format.py --write.

Индекс Форматы FOFRM Параметры Запекание Runtime Проверка Канонический JSON Руководство
Стабильный ID Правило Требование Причина Источник
image-format.runtime.factory-coverage Граница расширений штатной factory DefaultSpriteFactory регистрирует все встроенные расширения ImageBaker, кроме spr; прямым путям .spr нужна custom factory или, обычно, авторская .fofrm-обёртка. Поддержка запекания и поддержка штатного runtime path являются разными registry расширений. Source/Client/DefaultSprites.h
image-format.runtime.decode Декодирование baked container Штатный runtime читает только запечённый контейнер через ReadSpriteResource, проверяет magic, version, числа кадров/направлений, полные frame/mesh records, footer и trailing data, затем создаёт AtlasSprite либо SpriteSheet. Source decoders принадлежат только baker и не поставляются как runtime image parsers. Source/Common/SpriteResource.cpp, Source/Client/DefaultSprites.cpp
image-format.runtime.static-frame Поведение одного кадра Ресурс с одним кадром и направлением становится AtlasSprite и применяет разрешённый draw offset concrete frame; сериализованные NextX/NextY остаются metadata, потому что поверхности frame displacement SpriteSheet нет. NextX/NextY имеют значение только когда consumer sheet выбирает и интерпретирует animation frames. Source/Client/DefaultSprites.cpp
image-format.runtime.sprite-sheet Состояние направления и playback SpriteSheet принимает одно или полное число направлений карты, поддерживает выбор направления, random prewarm, normalized time, loop/reverse playback и считает один кадр либо нулевые полные ticks непроигрываемыми. Animation state является клиентским presentation state, а каждое направление владеет параллельным frame sheet. Source/Client/DefaultSprites.cpp
image-format.runtime.frame-offset Смещения спрайта каждого кадра Concrete и shared frames SpriteSheet сохраняют импортированные NextX/NextY в _sprOffset; обычный draw использует offset выбранного AtlasSprite, а locomotion projection потребляет отдельный массив frame offsets. Визуальное root-motion displacement должно оставаться отдельным от sequence placement и authoritative world movement. Source/Client/DefaultSprites.cpp, Source/Client/DefaultSprites.h
image-format.runtime.atlas Загрузка в atlas, polygon draw, border и hit mask RGBA frames положительного размера размещаются в запрошенном AtlasType, загружаются с продублированными однопиксельными краями filtering и преобразуются в hit mask SpriteHitValue. Обычные полноразмерные draws отправляют запечённый indexed silhouette, когда он есть; crops, tiled/padded draws, fonts, blits, model sprites и particles сохраняют прямоугольные пути. Mesh geometry меняет fill/submission cost, не меняя pixels атласа, picking, logical scaling или специализированные прямоугольные render-контракты. Source/Client/DefaultSprites.cpp, Source/Client/SpriteManager.cpp
image-format.runtime.cache Идентичность cache копируемых спрайтов Copyable sprites кэшируются по hashed path вместе с AtlasType, а каждая загрузка возвращает MakeCopy, поэтому один source path может иметь отдельные atlas-backed cache entries. Независимое animation state не должно изменять cached prototype, а разные классы atlas нельзя безусловно размещать совместно. Source/Client/SpriteManager.cpp
image-format.runtime.missing-cache Мемоизация отсутствующего пути Отсутствующие paths/extensions, неизвестные factories и ошибки factory load мемоизируются по пути в _nonFoundSprites; CleanupSpriteCache не очищает этот набор. Добавление ранее отсутствовавшего ресурса во время live session обычно требует пересоздать manager или перезапустить client перед повтором того же пути. Source/Client/SpriteManager.cpp, Source/Client/SpriteManager.h
Введите запрос.