Лого vc.ru

Инструкция: Как интегрировать данные Unity-проектов в таблицы Google

Инструкция: Как интегрировать данные Unity-проектов в таблицы Google

Независимый разработчик Александр Петров написал для рубрики Unity заметку с инструкцией по использованию Google-таблиц в разработке игр. По его словам, подобная интеграция позволяет решать задачи менеджмента данных — управление параметрам внутриигровых предметов (юниты, оружие, умения), экономикой в игре, локализацией.

Поделиться

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

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

Преимущество Google-таблиц в том, что с ними может работать одновременно большое количество человек в режиме онлайн — это значительно повышает скорость разработки, устанавливает надежную и понятную коммуникацию между членами команды: программистами, художниками, геймдизайнерами.

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

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

Как вы, возможно, заметили, разные цветовые схемы добавили в довольно простую игру изюминку, сделали ее чуть привлекательнее и интереснее для пользователя. Без систематизации данных это сделать было бы практически невозможно.

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

А сейчас перейдем к техническому аспекту интеграции Google таблиц с Unity. Игровой движок Unity предоставляет множество способов взаимодействия с таблицами Google, одним из которых является интеграция на базе standalone-приложения. Но основным вызовом в этом случае может быть использование движка .NET 2.0.

С 5 мая 2015 года Google прекратила поддержку устаревшего протокола авторизации OAuth 1.0, и все те приложения, которые не перешли на новый OAuth 2.0, перестали работать. Так вышло, что разработчики бесплатных плагинов, которым я пользовался, Unity-GData и его обновленной версии Unity-Quicksheet, об этом не позаботились, и мне ничего не оставалось, как искать решение самому.

Поначалу мне казалось, что проблем с авторизацией на Unity и С# возникнуть не должно, потому что документация на эту тему исчерпывающая. Но оказалось, не все так просто.

Во-первых, были заминки с самим процессом авторизации, так как некоторые параметры для запроса OAuth 2.0 в документации к Google Spreadsheets не были указаны, например «Access Type» и «Token Type».

Во-вторых, в некоторых обновленных библеотеках .dll Google Data API, которые я импортировал из Google Data API SDK для mono, в Unity возникали ошибки при компиляции, тоже самое было и с рядом старых .dll из плагина Unity GoogleData. Пришлось комбинировать.

В-третьих, нужно было еще добавить нужную библиотеку Newtonsoft для работы с JSON-запросами.

Перейдем к делу. Процесс интеграции Google-таблиц с Unity можно разделить на несколько этапов:

  • Предварительная настройка аккаунта Google.
  • Настройка доступа к Google Drive API.
  • Получение и сохранение данных из Google-таблиц.

Для начала нужно скачать Unitypackage, в котором уже есть все необходимые библиотеки и скрипты (репозиторий).

Предварительная настройка аккаунта Google

  • Входим в свой аккаунт.
  • Переходим по ссылке и создаем новый проект «Create new project».
  • На боковой панели консоли разработчика в разделе «APIs & Auth» выбираем вкладку «APIs».
  • Переходим в настройки «Drive API» в группе «Google Apps API» и подключаем данный API к нашему приложению кнопкой «Enable API».
  • В том же разделе «APIs & Auth» выбираем вкладку «Consent screen». Вводим имя продукта «Product name» и по желанию указываем адрес домашней страницы, логотип и другие параметры.
  • Снова в разделе «APIs & Auth» выбираем вкладку «Credentials». Создаем новый Client ID для работы с Auth 2.0 — кнопка «Create client ID». В диалоговом окне отмечаем «Application type» как «Installed application», а «Installed application type», как «Other». Подтверждаем нажатием кнопки «Create Client ID».
  • Мы получили значения Client ID, Client Secret, которые потребуются в дальнейшем.

Настройка доступа к Google Drive API

  1. После того, как вы импортировали Unitypackage, скрипт «SpreadsheetEntity.cs» должен автоматически начать свою работу при запуске Unity. Открываем скрипт для редактирования, и вводим информацию для авторизации.
  2. Присваиваем переменным «_ClientId» и «_ClientId» значения «Client ID» и «Client Secret», полученные из консоли разработчика.
  3. Запускаем Unity-проект. Он автоматически переходит по ссылке, где после авторизации можно получить «Access Code» для того, чтобы приложение могло успешно авторизоваться с Google.
  4. Копируем «Access Code» и присваеваем его значение переменной «_AccessCode» в скрипте «SpreadsheetEntity.cs».
  5. После этого снова запускаем проект и получаем из лога консоли Unity значения «OAuth 2.0 Access Token» и «Refresh Token», которые нужны нам для постоянного доступа к таблицам Google. Присваиваем эти значения переменным «_AccessToken» и «_RefreshToken» соответственно.

Приведу пример скрипта — SpreadsheetEntity.cs.

Отмечу некоторую особенность: этот скрипт выполняется при запуске редактора Unity, это очень удобно, потому что все данные уже будут на месте перед выполнением основного кода приложения. Подробнее здесь.

После того, как вы выполнили все необходимые шаги, проект готов для работы с Google-таблицами.

Получение и хранение данных с Google-таблиц

У Google процесс работы с таблицами хорошо описан в вышеупомянутой документации для разработчиков. Но для ясности приведу небольшой пример.

Для получения данных я использую запросы на основе списков (list-based feeds), а для хранения — файлы XML. Более подробную информацию по работе с XML в Unity вы можете найти здесь.

Стоит еще добавить, что скрипт работает только в редакторе, использовать функциональность Google-таблиц на устройстве нельзя, это связано с проблемами совместимости части библиотек с некоторыми платформами.

Предложенные мной библиотеки в Unitypackage не будут компилироваться ни для одной из платформы, кроме редактора. Если вам все-таки потребуется использовать таблицы на устройстве, то в пятой версии Unity можно выбрать платформу, которую должен поддерживает плагин, с помощью Plugin Inspector, а в более ранних версиях — поместить плагин в нужную папку (подробнее здесь).

Итак, электронные таблицы являются незаменимым инструментом в процессе разработки игр. Они помогают оптимизировать рутинную работу и наладить взаимодействие всей команды, визуализировать огромные массивы данных и использовать математику для их расчета. Интеграция Google таблиц с Unity — процесс несложный, но он требует немного знаний и усилий.

Популярные статьи
Показать еще
Комментарии отсортированы
как обычно по времени по популярности

Тоже подумал, что на Хабр зашёл.

0

Да, лучше бы не размывали свой этих подобными темами, а сконцентрировались на околобищнесовых вопросах

0

Автор, конечно, молодец, только делать так ни в коем случае не надо.

Ой вей. Чувак учится использовать вручную OAuth2 и интегрировать гугл сервисы. Прямая трансляция, не пропустите.
Как на самом деле называется хедер с токеном, "Access-Token" или "Access token"? Об этом вы узнаете после рекламы. Оставайтесь с нами.

Возможность комментирования статьи доступна только в первые две недели после публикации.

Сейчас обсуждают
ave ego

Популярным станет когда за ту же цену количество доступного контента сравняется с американским. А то платите также, а смотреть можете в 10 раз меньше.

Роскомнадзор заявил об отсутствии претензий к Netflix из-за «непопулярности сервиса» в России
0
Борис Моренко

Название отличное. Лучше только stalin.tv)

Французский видеосервис Molotov привлёк $22 млн от Михаила Фридмана и других инвесторов
1
Yuriy Belonozhkin

В начале 2016 года мы шифровали как могли (Эзоповым языком и смайликами)

Акционеры Facebook раскритиковали инвестора Андриссена за помощь Цукербергу втайне от совета директоров
1
Yuriy Belonozhkin

Перед перезапуском Secret он решил поразмяться на блог-сервисе)

Сооснователь Secret запустил анонимную блог-платформу IO
0
Николай Анников

Основатель компании владеющей супер защищенным мессенджером не смог сохранить переписку в тайне?

Акционеры Facebook раскритиковали инвестора Андриссена за помощь Цукербергу втайне от совета директоров
0
Показать еще