Про upSL
Итак, наша кроссплатформенная обертка для игр, разрабатываемых с помощью cocos2d-x и использующих Scoreloop - upSL.Когда мы в Run In Crowd решили отказаться от OpenFeint в пользу Scoreloop, то встал вопрос о том, как организовать работу с его функциями в приложения.
Требования были такими:
- API должно быть кроссплатформенным
- Контроллеры должны создаваться из игрового кода
- Нежелательно создание лишних объектов, оборачивающих функционал сущностей Scoreloop
В итоге, пришли к такому вот решению. Покрыт не весь функционал, только то, что нам понадобилось.
Про Scoreloop
Пока разбирались, нашли несколько багов в Scoreloop, самые неприятные - в ios версии. Будем надеяться, исправят. Вообще, scoreloop достаточно капризный, например, нельзя разблокировать ачивку, если еще осуществляется синхронизация. Мелочь, но, в итоге, приходится в коде создавать дополнительные механизмы для обхода таких ограничений.Про сложности
Больше всего кода требуется для android, в данный момент это более 1700 строк jni_scoreloop.cpp. Кроме того, что jni сам по себе трудоемкий, дополнительные проблемы создает то, что часть функций должна вызываться в ui-thread'е, поэтому их пришлось реализовывать в Scoreloop.java c предоставлением доступа нативной части обертки. При этом, callback вызванный Scoreloop'ом после выполнения запроса должен быть вызван в render-thread'е, в котором крутится игровая логика.Будем рады, если кому-нибудь пригодится :)
Комментариев нет:
Отправить комментарий