Профили публикации
Как сервис заявляет, какие уровни он принимает, в виде файла данных, а не кода
Профиль - это данные
Профиль публикации (PublishProfile) описывает, какие уровни принимает сервис. Это модель, которая сериализуется как любой другой корень, со своим поколением.
Добавить сервис - значит написать файл, а не править анализатор
Уровень может попасть в Steam Workshop, на официальный сервер, на сервер сообщества, в каталог магазинной сборки. Каждое место по-своему отвечает на одни и те же вопросы. Ответы меняются с годами, а код - нет
Что решает профиль:
| Поле | Смысл |
|---|---|
ProfileKey | какой это сервис, повторяется в каждом отчёте |
AllowedLicenses | значения TypicalLicenseType, которые сервис принимает |
AllowedUriTypes | как можно получать ресурсы. Пустой список значит любой способ |
AllowUnknownLicense, AllowPermissionInstead | хватает ли неизвестной лицензии или письменного разрешения |
RequireResourceMeta, RequireResourceUrl, RequireAttribution, RequireAgeRating, RequireLevelAuthors, RequireHashes | что обязано быть заполнено |
MaxResourceBytes, MaxDataFileBytes, MaxTotalBytes | пределы размера, 0 значит без предела |
Sources, UnknownSourceTrust | список сайтов и оценка для сайта, которого в нём нет |
Какие лицензии допустимы, решает только профиль. Это похоже на свойство лицензии, но на деле это свойство принимающего сервиса
Три встроенных профиля
| Фабрика | ProfileKey | Для чего |
|---|---|---|
CreateOpen() | local | уровень на вашем устройстве. Ничего не требуется |
CreateStandard() | standard | публичный сервер |
CreateStrict() | strict | магазинная сборка, строже standard |
| Что | standard | strict |
|---|---|---|
| лицензии | CC0 1.0, CC BY 4.0 и 3.0, CC BY-NC 4.0 и 3.0, SIL OFL 1.1, MIT, Apache 2.0, the Unlicense | как в standard |
| откуда ресурсы | из папки уровня, из игры или по прямой ссылке | без ссылок |
| атрибуция и хеши | - | обязательны |
| предел на ресурс | 64 МиБ | 32 МиБ |
| предел на файл данных | 32 МиБ | 16 МиБ |
| предел на уровень | 256 МиБ | 128 МиБ |
Не добавляйте фабрику для своего сервиса. Возьмите один из трёх профилей, поменяйте нужные поля и поставляйте его JSON-файлом
Почему такие лицензии и размеры
- лицензии семейства GPL исключены из
standard. GPL-работа, распространяемая через App Store, конфликтует с условиями Apple - CC BY-SA исключена: ShareAlike заставил бы сменить лицензию самого уровня
- CC BY-ND исключена: NoDerivatives запрещает редактирование, на котором построена игра
- строгие размеры - это то, что телефон может скачать по мобильной сети
Откуда пришёл ресурс
Поле лицензии говорит, что заявляет автор. SourceTrust говорит, чего это заявление стоит с учётом сайта, откуда пришёл ресурс:
| Оценка | Исход | Примеры |
|---|---|---|
Approved | публиковать | Kenney, ccMixter, Incompetech |
PartiallyApproved | публиковать, запись стоит просмотреть | Pixabay, SoundImage |
RequiresLicenseCheck | сверить лицензию с настоящей страницей | OpenGameArt, Free Music Archive, Wikimedia Commons |
RequiresResourceCheck | сначала опознать саму работу | Rawpixel, itch.io |
NotAllowed | отказать | YouTube, SoundCloud, Spotify |
Unknown | записи нет, решает UnknownSourceTrust | - |
TrustedSourceCatalog.CreateDefault() возвращает 25 сайтов. Это стартовый список. Предполагается, что каждый оператор его изменит. Поэтому ничто не вправе рассчитывать на наличие записи
Пустой список Sources выключает оценку источников
Стриминговые платформы перечислены как NotAllowed, а не пропущены. Отсутствующий сайт оценивается через UnknownSourceTrust, а в standard и strict эта оценка просит проверки, а не отказывает
Каталог и Лицензионная политика для пользовательских уровней описывают одно и то же и правятся вместе
Что делать с ответом
Вызов - ValidationFacade.ValidateForPublish. Подробнее - Валидация
У PublishReadinessReport есть:
HasErrors- находки группыErrorNeedsManualReview- находки группыWarningIsReady
Что делать дальше, профиль не решает. Клиент блокирует загрузку при ошибках. Сервер ставит уровень в очередь на проверку вместо публикации
Та же проверка со стороны автора - Готовность к публикации