Pull to refresh

Использование OpenFeint в Unity3d

Reading time3 min
Views5.1K
OpenFeint — достаточно популярная социальная сеть для игроков. Социальная составляющая всегда важна для казуальных (да и не только) игр, ведь она добавляет интерес к игре со стороны пользователей, да и способствует распространению.
Итак, наша задача на текущий момент — встроить OpenFeint в наш проект игры на Unity3d. Итак, все по порядку.

Для начала нужно зарегистрироваться на сайте OpenFient в разделе разработчиков. После регистрации создаем новую игру, просто кликнув кнопку «Add new game». Надо выбрать платформы, на которых вы собираетесь издавать игру и ввести ее название. Все, полдела сделано.
Если рассматривать в кроссплатформенном разрезе (iOS и Android), то OpenFeint поддерживает игровые достижения (achievements, или ачивки в простонародье) и лидерборды (leaderboards). На те и другие можно перейти, кликнув закладку Features в так называемом дешборде разработчика. Остальные возможности на текущий момент поддерживаются только для iOS.
Добавляем нужные лидерборды, заполняем ачивки. У каждого из них есть очень важный параметр — Unique ID. Он-то нам и понадобится, с его помощью будем открывать ачивки и заполнять лидерборды.
Переходим к делу. Тут все просто: качаем OpenFeint Unity SDK для iOS или для Android. Содержимое SDK надо поместить в папку Plugins проекта (через добавления ассетов или путем перетаскивания в иерархию проекта). Класс OpenFeintFacade представляет основной набор функций для работы с функциями социальной сети OpenFeint.
В примере, который прилагается к SDK, делается как описано ниже (исходный код может несколько отличаться от оригинала примера, однако он рабочий).
Создаем свой класс, который на старте создает объект-фасад для опенфейнта. В нем и будем использовать функции OpenFeint. Класс обзовем OpenFeintController и поместим скрипт на GameObject в нужную нам сцену Unity3d. Через него и будем вызывать всё, что нам надо.

private static OpenFeintFacade openFeint;
private static OpenFeintController instance; 

private const string appName = "";// Имя вашего приложения, отобразится в дешборде
private const string key = ""; // Уникальный ключ
private const string secret = ""; // Секретный ключ
private const string id = ""; // ID приложения

void Awake()
{
 if (instance == null)
 {
  instance = this;
  DontDestroyOnLoad(this); //это нужно для присутствия объекта OF в каждой сцене
 }
 else
 {
  Destroy(gameObject);
 }
}
void Start()
{
 openFeint = new OpenFeintFacade();
 Init();
} 

public static void Init()
{
 if (!Application.isEditor) //не вызываем ничего в редакторе, это нам не надо
 {
  if (!openFeint.isUserLoggedIn()) //проверка на авторизацию
  {
   if (!openFeint.isInitialized()) // проверка соединения
   {
    openFeint.Init(appName, key, secret, id, 1);
   }
  }
 }
}


Добавим пару функций для открытия дешборда, заливки хайскора в нужный лидерборд и разлочки ачивок:


public static void ViewDashboard()
{
 if(!Application.isEditor)
 {
  openFeint.OpenDashboard();
 }
} 

public static void ReportScore(int score, string leaderboard)
{
 if (!Application.isEditor)
 {
  if (openFeint.isUserLoggedIn())
  openFeint.SubmitScore(leaderboard, score);
 }
}


public static void UnlockAchievement(int achievementID)
{
 if (!Application.isEditor)
 {
  if (openFeint.isUserLoggedIn())
  openFeint.UnlockAchievement(achievementID);
 }
}


Можно добавить еще одну функцию, если ваше приложение использует ачивки, которые открываются постепенно (то есть можно задать прогресс зарабатывания ачивки — от 0 до 100%). OpenFeint и на такое способен, и это очень интересно:

public static void UpdateAchievement(int achievementID, float percentage, 
 bool showNotification)
{
 if (!Application.isEditor)
 {
  if (openFeint.isUserLoggedIn())
  openFeint.UpdateAchievement(achievementID, percentage, showNotification);
 }
}


В классе OpenFeintFacade содержится еще множество полезных функций, которые в значительной степени повысят социальность разрабатываемой игры, но я люблю только по существу. Кстати, указанный пример работает только на Android. Для iOS дела обстоят несколько по-другому. Чтобы узнать подробнее, обратитесь к документации по iOS и Android интеграции OpenFeint в Unity3d.

Всем успехов, спасибо за уделенное время

Ссылки по теме:
Tags:
Hubs:
+15
Comments11

Articles

Change theme settings