Контекст

Поскольку недавно я решил публиковать игры более быстрыми темпами, я решил, что мне нужно упростить процесс создания и интеграции списков лидеров. Ранее я создал новую базу данных и написал новые API для таблицы лидеров каждой игры. Этот подход чрезвычайно утомителен и дико неэффективен (демонстрация моего нубства). Решение этой проблемы состоит в том, чтобы просто доверить таблицы лидеров третьей стороне.

Я также решил внедрить вход через facebook в таблицы лидеров. Таким образом, первым местом, которое я искал, была платформа facebook для разработчиков. Facebook предоставляет достойный и хорошо документированный пакет для Unity. Учебники довольно просты, и вы можете легко написать свой собственный скрипт для выполнения инициализации и входа в систему за очень короткий период времени. Ранее Facebook предлагал API очков и достижений, который удовлетворил бы мои потребности, но в последнее время он устарел. В настоящее время существует Facebook API лидеров, но на момент написания эта услуга, по-видимому, предлагалась только для Instant Games, а не для проектов Unity.

Небольшой поиск альтернативы привел меня к PlayFab. PlayFab предоставляет разработчикам игр огромное количество услуг, поддерживающих большинство платформ разработки. Внешний вид его веб-конца также великолепен.

Как только вы создадите бесплатную учетную запись, вы просто войдете в систему и настроите данные для своей игры. Учебное пособие по Unity проведет вас через загрузку SDK и первый вызов API. Теперь немного кода. Желательно, чтобы игрок сначала вошел в Facebook, который затем был получен PlayFab SDK для получения/создания собственной модели игрока.

Приведенный выше код следует шаблону singleton, чтобы предотвратить создание повторяющихся экземпляров. Этот скрипт прикреплен к GameObject в сцене главного меню. Частная статическая переменная isLoaded предотвращает создание дубликатов при возврате в сцену главного меню. Похоже, что и facebook sdk, и PlayFab sdk используют Coroutines или эквивалент для своих вызовов API, поэтому не рекомендуется встраивать их методы в свои собственные сопрограммы. Это также причина, по которой реализована переменная isRunning, чтобы проверить, выполняет ли facebook или playfab операцию. Это становится особенно полезным для отображения экрана загрузки в ожидании входа в facebook.

Поток приложений прост. После пробуждения инициализируется facebook sdk. По завершении запускается OnFacebookInitialized, поскольку он был предоставлен в качестве обратного вызова. если FB.IsLoggedIn, SDK PlayFab инициализируется с подключенной учетной записью facebook. Этот шаг, в частности, не дается новичкам с ложечки и, безусловно, был препятствием в моем процессе разработки, хотя он должен был быть интуитивно понятным для меня.

Затем в веб-интерфейсе PlayFab вы настраиваете таблицу лидеров, которая создает базу данных для хранения ваших данных (примечание: в документации PlayFab таблицы лидеров называются статистикой). Фрагмент ниже показывает пример кода, который получает 20 лучших игроков в статистике.

Большинство вызовов API PlayFab следуют формату PlayFabClient.Action(new ActionRequest{……}), где должны быть установлены результат и обратный вызов ошибки. В Документации по API есть все, что вам нужно, чтобы быстро приступить к работе, и сообщество поможет вам.

Ограничения

На бесплатной учетной записи я ограничен 25 списками лидеров и неограниченным количеством игроков, что я считаю довольно удивительным (полный список ограничений можно найти в вашей учетной записи в разделе «Настройки» -> «Ограничения»).

Моя единственная жалоба - невозможность удалить таблицу лидеров. Во время тестирования я создал фиктивную таблицу для проведения некоторых экспериментов, но позже понял, что не могу удалить эту таблицу. Это означает, что я потратил впустую 1/25 бесплатных таблиц лидеров, ха-ха. Я понимаю, что в бэкэнде удаление таблицы базы данных — это головная боль, но, насколько я могу судить, пользователи жалуются на отсутствие этой функции с 2016 года! Ой!

На момент написания статьи я все еще был просто любителем, публикующим небольшие игры для получения опыта. При этом бесплатный уровень идеален для меня, пока я немного не продвинулся в мире XD.

Альтернативы

Одной из альтернатив, которую часто сравнивают с PlayFab, является GameSparks. Если вы ищете профессиональный бэкенд, я настоятельно рекомендую обратить внимание на оба из них. В моем случае создание центрального веб-приложения для управления данными всех выпусков моих казуальных игр также является вариантом, который я настоятельно рассматриваю. Это все для этого поста, ребята (извините за длинный кусок кода XD).