К содержимому
Профили публикации
На этой странице

Профили публикации

Как сервис заявляет, какие уровни он принимает, в виде файла данных, а не кода

Профиль - это данные

Профиль публикации (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
Чтоstandardstrict
лицензии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 - находки группы Error
  • NeedsManualReview - находки группы Warning
  • IsReady

Что делать дальше, профиль не решает. Клиент блокирует загрузку при ошибках. Сервер ставит уровень в очередь на проверку вместо публикации

Та же проверка со стороны автора - Готовность к публикации