...

суббота, 25 июля 2015 г.

Модульная WEB админка на ASP.NET MVC и AngularJS

Как вы, наверное, догадались из названия, в этой статье речь пойдет об open source платформе, c помощью которой относительно легко и быстро можно создать web админку для вашего проекта, не заморачиваясь на стили, навигацию, архитектуру приложения и еще множество вещей, напрямую не связанных с решением прикладной задачи.

Внешний вид платформы и одного из модулей

Наша компания долго развивала один модульный ecommerce продукт на WFP технологии, было принято решение мигрировать все это творчество на web. В итоге получились два разных продукта: один — платформа, про которую и пойдет речь в статье, а другой — само прикладное решение, реализованное с помощью набора модулей.

Используемый стек технологий

Оговорюсь, что наш выбор был обусловлен большим опытом работы с продуктами Microsoft.

Решено было использовать следующий стек технологий:
ASP.NET MVC 5.0 — в качестве web хост технологии,
ASP.NET Web API 2.0 — для реализации REST сервисов,
Entity Framework 6.0 — ORM,
EF Migrations — для изменений схемы и данных БД,
ASP.NET Identity — задачи авторизации и идентификации,
AngularJS — для SPA интерфейса. Основной причиной выбора стала его распространненость и хорошая документация, до этого опыта работы с данной технологией не было вообще. Забегая наперед, скажу, что мы ни разу не пожалели о сделанном выборе.

Архитектура


Сама платформа и модули написаны с использованием парадигм DDD, SOLID, Test Driven Development. Для презентации, конечно же, MVVM (спасибо AngularJS — переход с WPF не вызвал никаких затруднений).

Возможности платформы


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

Свой Style Guide


Нами была разработана собственная тема приложения на принципах MCSS и создан свой style guide, а также визуальный конструктор элементов навигации (блейдов), позволяющий легко формировать разметку для последующего использования в модулях расширений.

Система навигации

Здесь представлена единая концепция навигации в пользовательском интерфейсе. Нам очень понравилась идея навигации нового портала portal.azure.com c горизонтальным скроллингом, поэтому решено было взять ее за основу.

Основными элементами навигации платформы являются:

  • blade” — аналог окон в классическом интерфейсе;
  • widget container” c размещающимися в них “widget
  • главное меню приложения — “main menu

Модульность

Платформа предоставляет возможность расширения функциональности системы в режиме runtime путем установки соответсвующих модулей расширения. Учитывая, что каждый модуль может предоставлять свой пользовательский интерфейс и сервисы REST API, платформу можно использовать для гибкой найстройки под конкретную специфику.

Модульность стала одной из самых сложных задач; для ее решения нам пришлось адаптировать Microsoft PRISM из WPF и заставить работать в ASP.NET MVC.
Модули снабжены информацией о версиях и зависимостях, которая учитывается системой при инициализации и установке модулей в систему.

Помимо расширения пользовательского интерфейса и API, каждый модуль может использовать собственную схему БД с поддержкой миграции данных при изменениях версий, а также расширять или перекрывать функциональность из других модулей благодаря Unity — IoC and Dependency injection контейнеру.

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

Остальные полезности :)

  • Авторизация и идентификация с возможностью федеративной идентификации — было реализовано на Microsoft ASP.NET Identity.
  • Управление пользователями и правами — собственная реализация с готовым интерфейсом.
  • Работа с бинарными данными (файлами) — расширяемая система предоставляет API по загрузке файлов в локальное хранилище на диске, или сетевую папку, или в azure blob storage. Может быть расширена на любую другую систему хранения.
  • Фоновые задачи с планированием — реализованная с помощью бибилиотеки Hangfire, довольно гибкая и функциональная система, обладающая собственным интерфейсом по мониторингу.
  • Система динамических настроек — позволяет декларировать настройки и работать с ними через стандартный интерфейс, либо из кода.
  • Система динамических свойств — позволяет динамически расширять любые пользовательские объекты новыми простыми свойствами через стандартный интерефейс, либо из кода.
  • Кэширование — готовый подход к кешированию с возможностью использовать различные системы для хранения кеша (AppFabric, WEB Cache и пр.)
  • Система рассылки уведомлений, основанная на шаблонах — все возможности по определению уведомлений, редактированию шаблонов, уведомлениям с поддержкой локализации, планированию и логом рассылки, а также поддержка множества каналов рассылки (email, sms и пр).
  • Общая система экспорта и импорта данных из модулей — единый интейрфейс и формат данных с реализацией специфики в конкретных модулях.

Это не серебрянная пуля, но все же...


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

Более подробную информацию о платформе можно прочитать здесь: http://ift.tt/1LJqQo9.

На данной платформе было построенно решение модульного ecommerce frameworkа, работающий пример которого можно посмотреть по этой ссылке: Virto Commerce online demo (frontend and manager).

Сам проект платформы находится здесь: http://ift.tt/1GN6m7y. Проект находится в активной стадии разработки, так что будут полезны любые ваши комментарии и пожелания.

Если будет интерес, в следующей статье я могу рассказать про ecommerce решение более детально.

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.

Магия тензорной алгебры: Часть 11 — Ускорение точки тела при свободном движении. Угловое ускорение твердого тела


  1. Что такое тензор и для чего он нужен?
  2. Векторные и тензорные операции. Ранги тензоров
  3. Криволинейные координаты
  4. Динамика точки в тензорном изложении
  5. Действия над тензорами и некоторые другие теоретические вопросы
  6. Кинематика свободного твердого тела. Природа угловой скорости
  7. Конечный поворот твердого тела. Свойства тензора поворота и способ его вычисления
  8. О свертках тензора Леви-Чивиты
  9. Вывод тензора угловой скорости через параметры конечного поворота. Применяем голову и Maxima
  10. Получаем вектор угловой скорости. Работаем над недочетами
  11. Ускорение точки тела при свободном движении. Угловое ускорение твердого тела

Сегодня мы завершим построение тензорных соотношений, описывающих кинематику свободного твердого тела. Так получилось, что на протяжении достаточно большого количества статей мы заново построили часть основополагающего курса теоретической механики. Данные построения, несмотря на некоторую абстрактность, полезны и с методической точки зрения, и с точки зрения того, что применительно к механике, тензорный подход, как скальпель, вскрывает истинную природу привычных нам понятий, таких как законы движения материальных тел, скорость их точек, угловая скорость, угловое ускорение. Вот об угловом ускорении сегодня и пойдет речь.

Мы всё глубже увязаем в математической матрице...


В статье, посвященной тензорному описанию кинематики твердого тела мы получили, что компоненты скорости точки тела, совершающего свободное движение в связанной системе координат определяются соотношением

image

где image — компоненты вектора скорости полюса в связанной системе координат; image — тензор угловой скорости. Верхний индекс в скобках означает, что компоненты этого тензора представлены в связанной системе координат.

Чтобы получить ускорение, во-первых, перейдем в базовую систему координат — дифференцирование в ней будет выполнять намного проще. Но так как преобразование поворота задано у нас для контравариантных компонент векторов, прежде всего поднимем индексы в (1)

image

а уже потом, применим к (2) прямое преобразование поворота

image

и теперь продифференцируем (3) по времени и получим выражение контравариантных компонент ускорения точки тела

image

где image — контравариантные компоненты ускорения полюса в базовой системе координат

Для интерпретации результата придем к тому от чего начинали путь — к связанной системе координат и ковариантным компонентам

image

Последнее выражение в цепочке преобразований содержит множитель

image

— тензор угловой скорости, поэтому

image

— конвариантные компоненты ускорения точки M твердого тела при свободном движении. Теперь постараемся вникнуть в смысл составляющих ускорения (5). Во-первых рассмотрим последнее слагаемое, тензор угловой скорости в котором можно расписать через псевдовектор угловой скорости

image

и, совершенно очевидно, что производная от тензор угловой скорости представляется через некоторый псевдовектор image, равный производной по времени от псевдовектора угловой скорости

image

Из курса теоретической механики известно, что производная от угловой скорости называется угловым ускорением тела. Значит (7) — угловое ускорение. Обычно угловое ускорение принято обозначать другой буквой, которая в LaTeX-нотации записывается как \varepsilon. Но это обозначение у нас «утащил» тензор Леви-Чивиты, поэтому будем использовать символ \epsilon который выглядит не слишком впечатляюще, но не менять же нам систему обозначений из-за подобной мелочи?

Исходя из вышесказанного делаем вывод, что производная по времени от тензора угловой скорости есть антисимметричный тензор углового ускорения

image

для обозначения которого возьмем букву \xi, стилистически напоминающую \varepsilon. Исходя из (8), последнее слагаемое (5) эквивалентно

image

или, в векторном виде

image

где image называют вращательным ускорением точки тела.

Теперь обратимся ко второму слагаемому (5). В нем распишем тензор угловой скорости через псевдовектор image

image

Здесь мы видим двойное векторное произведение. Действительно, ведь

image

контравариантное представление вектора скорости точки M относительное полюса, которое участвует в последующем векторном умножении на угловую скорость слева. То есть, второе слагаемое — это осестремительное ускорение точки тела

image

таким образом мы получили известную из курса теоретической механики формулу

Ускорение точки тела при свободном движении равно геометрической сумме ускорения полюса, вращательного ускорения точки вокруг полюса и осестремительного ускорения точки вокруг полюса

image

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

image

и мы получаем, в самой общей форме, ускорение точки тела при свободном движении

image

Ускорение (10) представлено в собственной (связанной с телом) системе координат. Данное выражение носит самый общий характер, а подход, с помощью которого мы к нему пришли позволяет нам выяснить истинную природу и соотношения между привычными нам кинематическими параметрами движения. В этом теоретическое значение (10).

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


Для начала вычислим тензор углового ускорения

image

Таким образом тензор углового ускорения определяется уже и второй производной тензора поворота. С другой стороны, пользуясь определением тензора углового ускорения (6), мы можем получить выражение для псевдовектора углового ускорения

image

Ну и, подставляя (12) в (11) мы получаем окончательно

image

Выражение (13) выглядит эффектно, и может быть использовано, например для того, чтобы выразить проекции углового ускорения на собственные оси через углы ориентации твердого тела (Эйлера, Крылова, самолетные углы и т.д.). Но по большей части оно носит теоретический характер — да, вот, смотрите, как угловое ускорение связанно с матрицей поворота.

Если же мы попытаемся получить псевдовектор углового ускорения через параметры конечного поворота, пользуясь (13), то этот путь сложно будет назвать оптимальным. Помните, сколько мы провозились с тензором угловой скорости? То-то же! А здесь можно, в принципе, обойтись и без СКА, достаточно обратится к формуле (7) и материалу статьи о псевдовекторе угловой скорости

Согласно (7) нам достаточно только продифференцировать псевдовектор угловой скорости, который выражается через параметры конечного поворота следующим образом

image

и мы получим угловое ускорение. Это можно выполнить и вручную

image

Выражение (15) можно слегка упростить. Во-первых, его второе слагаемое равно нулю, так как содержит свертку тензора Леви-Чивиты с одним и тем же вектором по двум индексам, что эквивалентно image. Во-вторых, можно привести подобные слагаемые, и мы получаем окончательное выражение

image

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

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

image

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

Формулы (10), (14) и (16) являются последними соотношениями, которыми замыкается построение кинематики твердого тела в произвольных координатах. Мы прошли большой путь — пользуясь аппаратом тензорного исчисления заново построили всю кинематику твердого тела.

Но мы не коснулись главного — каким образом удобно задавать положение тела в пространстве, какие выбрать параметры? Как связать эти параметры с кинематическими характеристиками движения твердого тела?

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

image

Обнулив в этом выражении угол поворота мы придем к выражению

image

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

Для построения моделирующих систем необходимо брать параметры не претерпевающие вырождения. К таковым можно отнести сам компоненты тензора поворота, но их девять. Плюс три координаты полюса. Итого — 12 параметров, характеризующих положение тела в пространстве. А число степеней свободы твердого тела — шесть. Таким образом шесть компонент тензора поворота являются зависимыми величинами, что раздувает порядок системы уравнений движения ровно в два раза.

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

image

и если бы не вырождение при image их можно было бы использовать.

Однако, невырождающиеся параметры, с помощью которых можно описать ориентацию твердого тела в пространстве есть, и они непосредственно связаны с параметрами конечного поворота. Это параметры Родрига-Гамильтона, о которых мы поговорим в следующей статье.


При подготовке данной статьи, для ввода формул, использован ресурс, созданный пользователем parpalak. В связи с этим хочу поблагодарить его за создание и поддержку такого полезного сервиса.

Ну и, традиционно, благодарю за внимание своих читателей!

Продолжение следует...

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.

пятница, 24 июля 2015 г.

Путь разработчика, часть 3: история создания игры

Всем привет, с вами спустя полгода снова Delfuego FM, и я хочу с радостью объявить о долгожданном релизе нашей мобильной игры – Sling Monsters!
image
В этой большой статье будет рассказано о разработке игры, развитии её визуального стиля и о том, что собственно она из себя представляет (на протяжении более года с момента первого запуска Unity я держал её основную механику в тайне, т.к. ничего идентичного ей не встречал), а также о том, на какие грабли наступал в процессе разработки, о развитии графического стиля, о всяких философских размышлениях на тему индустрии и всего остального.

Лучше один раз увидеть, чем сто раз услышать, так что вы сразу можете посмотреть наш промо-ролик:

Идея игры зародилась ещё давно, после неудачной работы в Москве, когда я выполнял задание по придумыванию различных концептов мобильных игр для какого-то удалённого продюсера. Из пары десятков идей эта была самой интересной и многообещающей, и я оставил её для себя.

За концепты мне так и не заплатили, продюсер куда-то пропал, а вот идея уникальной игры так и осталась. Всё-таки, иногда бесполезная на первый взгляд деятельность приносит свои вкусные плоды.

image
Первый рисунок игры, с которого всё началось

Монстры идут по дорожкам сверху вниз, а игрок палит по ним из различных магических рогаток.
По сути, игра является комбинацией идей Plants vs. Zombies и Angry birds.

Первый нормальный арт к игре (авторство не моё), когда я, будучи ещё только геймдизайнером, организовал 3,5 параллельных проекта (подробнее все мои приключения в геймдеве описаны в 2х предыдущих статьях, 1 статья, 2 статья).

image

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

В качестве движка разработки я хотел было взять Cocos 2dx, но благодаря одному по-настоящему хорошему человеку, а именно Сергею Ледину, я бросил эту безнадёжную для гуманитария затею и выбрал Unity. Как выяснилось, не зря – и если кто ещё раздумывает о выборе движка, то спешу развеять все ваши сомнения – смело выбирайте Unity. Благодаря какому-то любителю делать велосипеды из граблей и костылей, да ещё без сидения, я почему-то был уверен, что раз Unity позволяет делать сразу на любые платформы, то это сказывается на производительности и глючности. А внезапно этот движок оказался индустриальным стандартом, образцово-показательно документированным, с огромным количеством уже готового кода, с ответами на Unity Answers на все нубские вопросы.

image

Типичный любитель самодельных велосипедов из граблей

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

В качестве языка я выбрал Unity Script (разновидность JS). С одной стороны, он сильно проще C#, а с другой стороны, если не приучать себя к более сложным конструкциям, то когда дело дойдёт до интеграции плагинов, например с внутриигровыми покупками, то у вас могут возникнуть проблемы. Так что если за вами не гонится сумасшедший тираннозавр с плазменными пушками, то более разумным будет написание игры на C#.

Вдохновившись создателем Iconoclasts, я выбрал совершенно джейдайский путь, на котором собирался ещё и рисовать всю игру самостоятельно. Монстры выходили у меня неплохо. Первый монстр, синий кот, появился, когда я рисовал ледышку и внезапно понял, что она своими начертаниями напоминает кота.

image

На каждого монстра должно быть свой анти-монстр. Я помучался с рисованием неживых предметов (башенок и минивулканов), которые у меня выходили отвратно, а затем случайно наткнулся на роутер:

image

И придумал вот такого защитника:

image

Тут же образовался сюжетный концепт: добрые персонажи стреляют добрым колдунством по злым и делают их добрее. Если монстр добрался до низа экрана («базы»), то он крадёт у игрока сердце (жизнь). Звучит наивно, по-детски что ли, но в этом есть особый смысл. Даже самому злому монстру нужно лишь любовь и внимание. Как я уже упоминал в предыдущей статье, главный враг всегда находится внутри нас, а не вовне.

В своё время я не раз проходил такие игры, как Postal, Manhunt и GTA, но затем я стал убеждённым сторонником бескровного геймплея. Я считаю, что борьба – основа мироздания, а кровавое насилие в современной культуре (не только в играх) – пережиток прошлого. Со времён Большого Взрыва материя претерпевала не только структурные изменения, но и концептуальные. Изначально существовали только неживые соединения молекул, затем из всего этого хаоса как-то образовалась живая материя, которая эволюционировала в животных. Затем появился человек, который мало отличался от своих предков – та же жизнь под дудочку инстинктов, но более сложносочинённая. Сейчас же, на мой взгляд, человек находится в переломном моменте – из частично осознанной материи, за счёт накопления и осмысления культурного багажа и опыта цивилизации, мы постепенно становимся полностью осознанной материей. Так что в этой и других своих играх я попробую реализовать концепцию бескровной борьбы. На самом деле, можно даже MMORPG сделать с боёвкой, но без крови. Звучит странно, но на самом деле всё зависит от сеттинга и желания последовательно реализовывать нестандартную идею.

После определения сюжета я нарисовал и запрограммировал прототип. Вот что у меня вышло:

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

Я решил всё-таки заказать арт. По результатам сотрудничества, которое не задалось, получилось следующее:

Следующий художник был хорош, у нас с 1 раза вышел замечательный логотип, но Василий собрался в Тай на полгода и мне пришлось снова начинать поиски. В этот раз, после многочисленных злоключений (не относящихся к Василию) с художниками мужского пола я решил найти художницу, предполагая, что девушка будет относиться к работе более порядочно. До чего же правильное решение я принял! Мне удалось найти «ту самую», которая с ходу выдала крутейший комикс с историей мира.

Главного злодея Мориарти выгнали из ада за скверный характер, и теперь он творит беспредел и дестрой в некогда счастливой стране котиков и прочих чудил.

А пока ещё визуальный стиль не был полностью переделан, я своими силами дорисовал демку, и, поторопившись, отправил её в издательства. Выглядела она вот так:

Сейчас я понимаю, что зря спешил, с издателями надо было связаться после полного обновления визуального стиля для повышения шансов заинтересовать.

Несмотря на «яркий и красочный визуальный стиль» и «оригинальный концепт» (цитаты издателей), никто не заинтересовался в её издании. Казалось бы, что надо, чтобы игра заинтересовала? Визуальный стиль, который выделяет её среди остальных игр, но не артхаусный, понятный лишь единицам? Есть. Оригинальная и простая механика, не клонирующая ни одну игру, что позволит первым занять свою нишу? Есть. Кому всё это надо? Никому :)

В общении с одним из издателей я выяснил, что ориентировочная цена привлечения игрока в нашу игру в разы выше, чем прогнозируемая прибыль с него же, и поэтому вкладываться в «траф» (от слова «траффик», именно так сейчас издатели называют игроков), никто не будет. Это объясняло несколько десятков отказов от лучших издателей. Хотя для меня до сих пор остаётся загадкой, как бесчисленные 3 в линию, несмотря на маркетинговые бюджеты конкурентов в лице Candy Saga и многочисленных подражателей отбивает вложения, а у игры вроде моей – такой же простой и казуальной в сути, как CCS, но с оригинальной механикой, шансов по расчётам издателей нет.
Буду выяснять это на своём опыте.

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

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

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

Да, мы действительно разыгрываем 5 кг твикса в нашей группе

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

Сервер решили делать на Microsoft Azure – во-первых, это избавляет от необходимости писать велосипеды из костылей, а во-вторых, Microsoft даёт бонусные деньги на счёт Microsoft Azure каждого разработчика после регистрации проекта в BizSpark.

В качестве звукового оформления я решил использовать треки диджея и композитора, с которым успешно работал над одним из предыдущих проектов. В результате у нас получился оригинальный саунд-дизайн – в качестве фоновой музыки для уровней используются trance и breakbeat треки.

Скриншот трека Flashback

Монетизация игры очень мягкая – все 50 уровней можно пройти, не потратив ни копейки. Большую часть выручки планируем получить с помощью видеорекламы, которая показывается в 1 из 5 случаев после провала уровня. В своей первой большой игре я решил не выжимать из игроков все соки.

Вообще монетизация игры – отдельная интересная история. Пока игра ещё не успела запуститься, я уже сумел избежать нескольких граблей, связанных с ней. Началось всё с баннеров admob в нижней части экрана. Баннеры находились в том месте, куда так и тянется нажать, если один из монстров почти добрался до края экрана. И, зная как admob банит при малейшем подозрении на мисклик, я решил найти какой-то другой способ монетизации. Порыскав в статьях о монетизации, я решил юзать видеорекламу. В качестве системы выбрал Chartboost, ведь по косвенным признакам он хорошо работал в России. Но, как оказалось, видеореклама с наградой в России толком не работала, филлрейт был близок к 0. Выяснилось это совершенно случайно в комментариях на «Цукерберг позвонит». Там же я создал тему-опрос, какую видеорекламу юзать в России. Судя по всему, в России лучше всего юзать Unity Ads.

Монетизация нежадных игр вроде моей, приводит к парадоксальным результатам – если ты мягко монетизируешь игрока, то ты выживаешь только за счёт «перелива трафа» в игры китов индустрии. Да и вообще анализ всей ситуации в индустрии приводит к фантасмагорическим выводам – ведь раньше игроки платили за установки игр, а теперь за это платят издатели, зачастую тем же самым игрокам (с помощью сервисов мотивированных установок).

Cовременная модель монетизации большинства мобильных игр

Кроме видеорекламы, мы планируем получить кое-какую отдачу от со-финансирования проекта на краудфандинговой платформе Planeta.
Честно признаться, мне немного неловко собирать деньги на игру, когда по соседству собирают деньги на благотворительность, спасают жизни и судьбы людей, а мы тут со своими Sling Monsters. Но дело в том, что игра – не самоцель, в первую очередь я делаю её для того, чтобы получить финансовый базис для других проектов без необходимости инвестиций, которые зачастую, на опыте тех же Контакта и Хабрахабра, вынуждают тратить силы на скандалы и делёж долей вместо развития проекта. Что же это за запланированные проекты такие? Например, один из них может помочь локальным сообществам и даже государствам преодолевать кризисы более успешно.

К слову о кризисе. И снова с играми складывается парадоксальная ситуация – для таких игр вроде моей, которые монетизируются за счёт рекламы, высокий курс доллара даже на руку, ведь выручка от рекламных сетей идёт в долларах. То есть, даже если игра работает на экс-СССР рынке, а наши игроки не тратят ни копейки, прибыль ты всё равно получаешь, и причём в долларах. Удивительное дело.

Сегодня мы запускаемся в России и странах бывшего СССР, на очереди мировой релиз, перед которым мы планируем добавить много нового интересного в игру, в том числе и PvP со ставками в игровой валюте.

Ссылки на игру в статье к сожалению дать не могу. Возможно, вы увидите их в комментариях, если какой-нибудь добрый человек заинтересуется результатами моей истории.

Большое спасибо Полине, Даниле, Виталию и Сергею за то, что делаете игру со мной!

P.S.
Если вы хотели бы программировать эту или другую нашу игру на Unity (за оплату, конечно же) и вы готовы бросить всё и улететь на край света, то обязательно напишите мне в контакте.

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.