Лого 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"? Об этом вы узнаете после рекламы. Оставайтесь с нами.

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

Сейчас обсуждают
Iziah Moscow

Название так себе и их апп в сторе не пашет, но молниеносная подача, хорошие машины и гуманные цены

Неизвестные загрузили в App Store приложения-клоны Gett, Uber и других такси-сервисов
0
Олег Дергилёв

Не ну конечно, для данного продукта эффективен контент-маркетинг. Есть ЦП с большой аудиторией и она во многом ЦА, есть есть спарки,роему,секретыфирмы и прочие косса.ру куда можно писать полезные статьи и они попадут в длительное юзанье потенциальной ЦА.
А вот например взять строительную компанию в провинции,работающую только в своем регионе. Блогеров там нет, ну не считая девочек с шелаком в инстаграме и ВК, контентных порталов тоже там нет.
Писать в тот же ЦП - бессмыслено, его в регионе читают 3,5 айтишника и 2 сектанта из БМ, покупатели даже не узнают.
Ну есть там городской новостной портал, форумок местный, но там и так баннеры висят и журналисты пишут про каждую пролетевшую мимо птицу, включая про стройку-новостей же крайне мало.
И в таких условиях эффективность контент-маркетинга сложно оценить,так как пристроить его некуда:)

Кейс из России: Как увеличить оборот B2B-сервиса с нуля до 14 млн рублей в год с помощью контент-маркетинга
0
ObliQ Brutale

А ведь могли обойтись просто теннисным мячиком ?

: )))))))

Олег Тиньков потребовал от сотрудников есть один раз за рабочий день и «не красть время» акционеров перерывами на кофе
0
Павел Леонидович

Не пытайтесь использовать программы для развития предпринимательства с целью трудовой эмиграции или просто для получения свободы перемещения по шенгенской зоне. Это легко вычисляется и неприятно заканчивается.
Резиденты РФ, начиная трудовую или предпринимательскую деятельность в ЕС, не игнорируйте требования Постановления Правительства РФ от 12.12.2015 N 1365 (не забывайте, в РФ крепостное право ещё не отменили).
Простая, пошаговая инструкция – как начать предпринимательскую деятельность в ЕС через Эстонию, здесь: www.plm.pw/2016/10/E-Estonia.html

Эстония запустила стартап-визы для иностранных предпринимателей и специалистов
0
Дмитрий Трипалюк
hyper weapon

Был когда-то такой ресурс о рекламе - Adme.ru, где публиковались лучшие мировые рекламные кейсы. Теперь это ресурс про котиков и няшечек. Сражение за качество рекламной продукции в России окончательно проиграно, но почему? Сложный вопрос. Коротко - заказчики не любят креативную рекламу, а рекламщики не хотят терять заказчиков. Молодые таланты если и появляются, то им быстро указывают на место. Общая энтропия в России стремительно растет, и как это остановить - пока непонятно.

«Конечно, Нектаринчик»: бренд соков «Любимый» решил привлечь зрелую аудиторию при помощи мини-ситкома
0
Показать еще