30 июл. 2011 г.

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

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.
Создаем свой класс, который на старте создает объект-фасад для опенфейнта. В нем и будем использовать функции 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);
 }
 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);
 }
}

Можно добавить еще одну функцию, если ваше приложение использует ачивки, которые открываются постепенно. Да, да, 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.

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

Комментариев нет:

Отправить комментарий