Hello, Flox!

Кто здесь хотел замену Playtomic?

Сегодня я рад представить вам новый элемент нашей гейм-девелоперской вселенной: Flox.

Под катом перевод оригинальной статьи и мои добавления.



Что такое Flox?


Думаю, вы не будете возражать, если для начала я задам вам несколько вопросов ;-)
— Приходилось ли вам когда-либо поддерживать сервер для бэкенда вашей игры?
— Например для управления учетными записями игроков, состояниями или сохраненными играми?
— Волновались ли вы о том, выдержит ли ваш сервер нагрузку?
— Вам когда-нибудь был необходим платформо-независимый сервис хранения наград и таблиц рекордов?
— Или вы просто хотели узнать какие критические ошибки приводят к краху игр во время дистрибуции?

Если вы хоть на один вопрос ответили да — Flox может быть тем, что вам нужно!

Flox — Бэкенд для игр без проблем


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

Но это еще не все, на что способен Flox. Есть также огромное количество менее масштабных функций, которые делают наш сервис еще более интересным:
— в Flox есть поддержка Flash/ActionScript SDK и он идеально подходит для Starling Framework
— может использоваться с Google AppEngine и легко масштабируется. Что-то типа «брось-всех-своих-игроков-нам-если-осмелишься»,
— Flox легок в настройке и не требует затрат на поддержку. Создавайте игры, грязную работу оставьте нам,
— Flox создан для игр. Все из чего он состоит может пригодится в разработке игр,
— Закрытая бета Flox'а тестировалась в течение месяцев многими смелыми разработчиками (Спасибо, парни!) Теперь время для открытой беты.

Столько полезного, и это только начало! Вы уже заинтересованы?

Игроки


Независимо от того, на какой платформе работает ваша игра (будь то iOS, Android или Facebook), вам всегда необходимо каким-то образом идентифицировать ваших игроков, чтобы хранить необходимую им информацию. Игры, в которых не продуман данный аспект, рискуют лишить игроков сохраненных игр, достижений и любой другой информации, которую необходимо хранить.



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


//залогинить игрока
Player.loginWithKey("myForeignKey",
    function onComplete(player:Player) {
        //Да! Игрок вошел в систему!
    },
    function onError(message:String) {
        //Черт! Что-то пошло не так во время аутентификации...
    }
)

//Получаем доступ к текущему игроку
var currentPlayer:Player = Player.current;

//Выходим из системы
Player.logout(); 



Но это еще не все! Flox может не только сохранять, загружать и запрашивать информацию об игроках. Он может делать это практически с любым объектом! Например, в вашей игре есть некоторые предметы, допустим оружие или броня. Или быть может вы позволяете вашим игрокам кастомно сохранять игры? Храните все это в Flox! О чем вы сейчас подумали? Храните в Flox и это :-)

Мы вложили все наши знания в базу данных Flox и теперь нам очень интересно узнать, как вы будете ее использовать! Дополнительную информацию можно найти на странице Flox help, а также Player and Entity Introduction.

Таблицы рекордов


Использование таблиц рекордов, залов славы и прочего, является практически обязательным для игр многих жанров. Вот почему мы напрямую интегрировали данную функцию в Flox. Создавайте и используйте столько таблиц рекордов, сколько захотите. Отсылка и получение очков игроком очень просты:

//отослать очки
Flox.postScore("default", 999, "Meriadoc");

//Загрузить очки
Flox.loadScores("default", TimeScope.ALL_TIME,
    function onComplete(scores:Array):void {
        trace("retrieved " + scores.length + " scores");
    },
    function onError(error:String):void {
        trace("error loading scores: " + error);
    }
)


Аналитика


Более того, Flox предлагает мощную систему аналитики, которая позволит вам анализировать данные и строить графики для стандартных игровых данных. Также есть возможность создавать свои внутриигровые события.

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

Не претворяйтесь, будто с вами такого никогда не было ;-)

Публичная бета


Некоторые храбрые герои среди вас использовали Flox в течение закрытого тестирования, объявленного на наших форумах несколько месяцев назад. Дьявол, неужели столько времени прошло? С вашей ценнейшей помощью и фидбеком, Flox перерос эту начальную стадию и мы наконец-то можем двигаться дальше к публичному бета-тестированию. Спасибо вам, ребята!



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

В течение беты, Flox является бесплатным. Используйте его так, как хотите. Данный этап продлится до тех пор, пока мы не реализуем весь запланированный функционал. Посетите данную страницу, чтобы узнать больше о бете Flox и будущей ценовой политике.

Заключение


Спасибо за то, что дочитали данную заметку — я знаю, что в ней много текста, за что хочу извиниться :-)

Теперь самое время создать свой аккаунт Flox и начать использовать его! Более подробная информация на странице проекта.

Надеюсь вам понравится работать с Flox и жду ваших комментариев! Как всегда.

************************************************************************************************************

Перевод записи из блога Gamua (создатели Starling и Sparrow) Оригинал

От себя хочу добавить (помимо восторгов) небольшой туториал.

1. Регистрируем аккаунт на Flox
2. Скачиваем SDK www.flox.cc/sdk/as3/current
3. Инициализируем flox
Flox.init("game", "game-id", "0.9");

Последний параметр — версия игры. То есть можно связать конкретные версии игры со своей аналитикой!
4. Наслаждаемся работой с Flox, например:

//Игра запустилась
Flox.logEvent("GameStarted");
//Игрок совершил переход из главного меню в меню настроек
Flox.logEvent("MenuChanged", { from: "MainMenu", to: "SettingsMenu" });


Создаем класс сохранения игры, наследуя его от com.gamua.flox.Entity
package
{
        import com.gamua.flox.Entity;
        
        public class SaveGame extends Entity
        {
                
                public var maxLevelReached:int;
                public var playerScore:int;
                
                public function SaveGame()
                {
                        super();
                }
        }
}


Сохраняем сохранение, используя созданный класс SaveGame
var savegame:SaveGame = new SaveGame();
savegame.maxLevelReached = 3;
savegame.playerScore = 500;
savegame.saveQueued();


Отправляем очки
Flox.postScore("BestFloxers", 500, "Floxer");


В трейсе получаем:
[Event] GameStarted
[Event] MenuChanged: {«to»:«SettingsMenu»,«from»:«MainMenu»}

И в режиме реального времени смотрим нашу аналитику и таблицу рекордов:





Как видим, все весьма удобно. Мечты сбываются :-) Удачного использования!

PS. Все это счастье будет работать в flash player 11 или Air 3

Комментарии (22)

+2
Неужели нашлась замена Playtomic? А как у них с ограничением по трафику в играх?.. Если вдруг в первые дни до миллиона игроков в сутки?.. Это ж при десятке эвентов создаст достаточно крупную нагрузку.
0
На форуме вроде договорились что GA для своей статистики использовать можно спокойно: flashgamedev.ru/viewtopic.php?f=6&t=7297
0
От трафика сильно зависит. Если игра генерирует в сутки больше определённого количества событий — надо отдельно договариваться. У меня, обычно, генерирует больше…
0
Если генерирует больше, то они просто прибавляются к общему количеству в конце суток?
+1
Пишут «если генерирует больше, свяжитесь с нами». Т.е. отдельно договариваться надо на такие дела.
0
Здорово что теперь есть facebook login без js, и кроссплатформенные сейвы.
0
Выглядит очень вкусно :)
0
Вот такой вопрос. У меня игра в которой юзеры строят свои деревни: дома, заборы, башни, рудники и т. п. Каждый объект имеет кучу своих характеристик: x, y, поворот, уровень, защита и т. д. Можно все это хозяйство сохранять для каждого отдельно взятого юзера с помощью Flox?
Сейчас я храню локально в таблицах SQLite. Но если бы все эти данные хранились на сервере, независимо от устройства юзера, было бы замечательно.
0
Дело в том, что у меня не совсем простая структура. Деревень может быть несколько, т. е. связанные таблицы.
0
Двачую вопрос, мне тоже интересно.
0
Если я правильно понял вопрос, то можно. Какждая Entity имеет своего владельца (OwnerID).
Если добавить еще одну фичу Flox (о которой я не написал) — запросы, то можно реализовать все, что придет в голову. Запросы дают возможность делать выборку из сущностей. Практически та же SQL. То есть сохраняйте деревни для каждого игрока сколько душе угодно :)
Например:

var query:Query = new Query(Village);
query.where("ownerID == ? ",  OWNER_ID);
query.find(function onComplete(villages:Array):void
{
     // Массив villages содержит все деревни данного игрока
});
0
Хочется опробовать хотя бы статистику плеев. Никаких проблем не будет?
//сервис все таки новый, а слова красивые :)
0
Это можно будет узнать только после экспериментов :-)

Собственно, просто к playtomic и mochibot теперь добавился Flox. Хочешь спать спокойно — имплементируй все три. Благо времени много не займет.
0
Использую под Андроидом, работает хорошо. Для авторизации беру данные из аккаунта пользователя.
Есть facebook login? Что-то я не видел.
0
И как стабильность? Хотя конечно вряд ли это миллионы установок (как с флэш играми).

По поводу facebook login.
Можно использовать фэйсбуковский ключ для привязки профиля игрока в Flox. Аутентификацию придется делать самостоятельно(подробнее)

Player.loginWithKey("myForeignKey",
    function onComplete(player:Player) {
        //Все ок, получили профиль игрока в player
    },
    function onError(message:String) {
        //Что-то не так
    }
);
+1
Ну анонсы-то они всегда клевые. А потом пользователи встречают слабые сервера, кривой код, непродуманную монетизацию и прочие проблемы. Ну и загнивание перспективного проекта. Привет плейтомику.
+1
и что же делать? :)
0
Для мобильных — parse.com/ и www.flurry.com/

Для Flash playerio.com/
0
Не смог привязать SDK :( Вылетает на инициализации.
ReferenceError: Error #1065: Переменная flash.crypto::generateRandomBytes не определена.
        at global/com.gamua.flox.utils::createUID()
        at com.gamua.flox::Entity()
        at com.gamua.flox::Player()
        at com.gamua.flox::Player$/login()
        at com.gamua.flox::Flox$/initWithBaseURL()
        at com.gamua.flox::Flox$/init()
        at StateManager()
        ...
0
На ниже 11 версии вылетает T_T
0
Да, flash.crypto (и, соответственно, flox) можно использовать начиная с Flash Player 11, AIR 3

help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/flash/crypto/package.html

Добавил в пост.

Надеюсь отпишешься по результатам использования? :-)
0
К сожалению не получится. Спонсор, да и сам я, имеет очень сомнительную ситуацию насчет 11 плеера. В этот раз MochiBot :(
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.