Почивший Flash и Samsung Smart TV

Автор: Dmitry Shatunov
Все это началось в один декабрьский вечер 2012 года. В тот день в доме появился большой и красивый экран, пришедший на замену старому служаке со стеклянным кинескопом. Звали героя Samsung, было в нем аж целых 42 дюйма и кроме всего прочего он успешно подключился к интернету через встроенный wi-fi.
tv 01
Вдоволь наигравшись с системой распознавания жестов и 3d очками, я обратился к встроенному магазину приложений Samsung Smart TV Apps. Увы, вместо ожидаемого "фейерверка удовольствий" я увидел скромный набор игр, большинство из которых были неудобоваримы как по графике так и по геймплею. Ярким пятном выделялись AngryBirds (играть можно только жестами) и еще, исключительно в угоду личных предпочтений, TexasPoker. Было еще несколько красивых игр, но души они не радовали и больше всего напоминали привет из очень далекого прошлого, когда ни о мобильных сторах ни даже о flash порталах никто ничего не слышал. Это было странно. В 2012 году планка качества для небольших игр была уже очень высока. В частности на flash, издавалось очень много и успешно. Было совсем непонятно, что мешает портировать часть этой лавины на телевизор. Ответ на этот вопрос я получил практически сразу, как только собрал и отправил на свой Samsung тестовый билд на основе flash.
 
Свою первую игру на flash`e я сделал в 2001 г. Как сейчас помню - недоклон спектрумовского JetPack, мда… Мысль о том, чтобы серьезно свернуть в сторону игровой индустрии в голову не приходила, ибо занимался я тогда совсем другими вещами. Однако, на протяжении всех этих лет, flash периодически давал о себе знать. Чаще всего в виде небольшой халтуры, вроде всяких презентаций и небольших игр. В итоге, к 2012 году я вполне сносно знал ActionScript 3.0 и даже делал осторожные и запоздалые попытки войти на рынок портальных игр. Однако, почему телевизор? Есть один интересный факт. Когда я начал посматривать на игровой рынок и слушал аудиозаписи докладов конференции FlashGamm, я наткнулся на одну очень зажигательную речь. Некий человек (имени я не запомнил), очень красиво рассказывал всякие истории про разработку игр. А его фраза «кто-нибудь из вас делал игру для телевизора?» - засела у меня в памяти, вместе с рассказом, что TV рынок сейчас совсем пуст. Возможно, всё это и привело к тому, что я быстро зарегистрировался на сайте разработчиков Samsung Smart TV и начал пробовать.
 
Прочитав документацию по SDK, я с восторгом узнал, что модели старше 2011 года поддерживают  flashplayer 10.3. Этого было достаточно. Через три дня, слегка разобравшись с Eclipse и Apache, я отправлял на телевизор свой первый тест, в котором красный кубик двигался по белому экрану. Да, этот красный кубик двигался. Двигался упорно и уверенно… С частотой fps – ТРИ. 
 
karl
 
Это была катастрофа. Ни о каких играх с физикой речи не было вообще, да и без физики ловить было нечего. Как в голову пришла мысль, благодаря которой все получилось - я сейчас помню очень смутно. Кажется, сначала это был просто перебор возможных решений. Потом появилась идея – повысить производительность, уменьшив размер активной зоны игры. Я уменьшал размер зоны flashplayer на html странице и оценивал прирост fps. Прирост fps - был, причем довольно уверенный. И наконец, когда при размере зоны 30х30 пикселей, счетчик показал фантастические 25 fps – в моей голове что-то щелкнуло и наступило прозрение.
 
А что если всю физику, игровые механики, анимацию, звуки и даже реакции UI мы будем быстро считать «внутри» .swf размером 1*1 пиксель? А из .swf будем отправлять данные о координатах, шагах анимации и прочего, с помощью ExternalInterface.call AS3? Ну, а выводить все это на экран  - с помощью, CSS и функций JavaScript!  ТA-ДA!
 

genius

Мысль эта была странная и требовала проверки, но первые же тесты показали - работает! Прицепив к flash проекту box2d и столкнув два шарика, я убедился, что работает и физика. Конечно, fps не поднимался выше 20, но это было терпимо. Вполне возможно (и даже наверняка), я изобретал велосипед. Но проверять тогда поленился и только при написании этого блога узнал от уважаемого @TheRabbitFlash, что такой подход иногда применялся для embedded устройств и что сейчас не применяется вовсе (за ненадобностью). 

Собственно с двух шариков в box2d всё и началось. Для TV надо было сделать что-то легкое и с физикой, на пробу. Что именно - да бильярд! Про спектрумовский вариант бильярда VideoPOOL я вспомнил практически сразу, попутно вспомнив печальный рассказ своего одноклассника о том, как его батя рубиться часами в этот самый бильярд, не пуская своего ребенка поиграть. О светлые времена спектрума, Elite, Saboteur 2, магнитофон Соната-216 и черно-белый телевизор... мда...
 
videopool
 
Video POOL 1984 г. (zx spectrum)
 
Конечно, просто так взять и «передрать» VideoPOOL на телевизор я не хотел. Это было бы не прикрытым цинизмом и даже святотатством. Но взять общую идею – решился. Бильярд, игра на очки без врага, три черных шара - три жизни. Все остальное добавлялось в процессе разработки - бонусы для забитых подряд шаров, вариант с отмеченной лузой, принципы управления ТВ пультом и игра на двоих.
 
Отдельная песня про настройку баланса. После сбора работоспособной версии я понял, что забить шары без «доводчика» ну просто нереально тяжело. Только вот «доводчика» не хотелось. Совсем. Пришлось пойти на хитрость и поставить в лузах «магниты». Сбалансировав зону притяжения, я добился некой казуальности. Играть стало легко, но и фан от удачного попадания остался.
 
Система управления из .swf с помощью div, css и jquery вышла простой и не принесла никаких неожиданностей. Единственный недостаток - не получилось перемещать объекты на доли пикселей. В результате на маленьких скоростях шаров заметны рывки. Но в целом все работало совсем неплохо. Игровую графику и анимацию я рисовал сам в 3dMax + Photoshop, несколько картинок и музыку честно купил в стоках. В итоге все это к марту 2013 г. выглядело приблизительно вот так:
 
Screenshot 1
 
Screenshot 2
 

Практически сразу стали появляется мысли о том, как всё это дело следует превращать в деньги. В 2013 году на Samsung Smart TV существовала, ныне покойная, система AdHub. Она позволяла монетизировать рекламу в приложениях Samsung Smart TV баннерами и даже видео рекламой. Еще на Samsung Smart TV можно было размещать платные приложения, однако уже тогда было понятно, что платная модель себя не оправдает. На мир вовсю надвигался free-to-play и народ начал активно привыкать, что попробовать любую игру можно бесплатно. 

В итоге я остановился на популярной ныне рекламной модели монетизации и платного отключения рекламы. По мимо отключения рекламы в «полной» версии можно пройти все 12 уровней (в бесплатной только 8), после чего можно было отправлять свой результат в глобальный рейтинг. Купить полную версию жителям России можно было смской на платный номер, а для всего мира (включая Россию) оплатив покупку на сайте Payproglobal.com (известного торговца shareware продуктами).

После того как на домашнем TV игра уже полностью функционировала, у меня начались первые контакты с людьми из Samsung. От общения с русской группой Samsung Smart TV лично у меня остались только положительные впечатления. Люди были благожелательны, а общение проходило легко и быстро. И хотя позже выяснилось, что таких проектов монетизации на Smart TV русский отдел еще не запускал – все в конечном итоге устаканилось и заработало.

Когда все было готово я впервые в жизни столкнулся с таким страшным явлением как Samsung Approve. Конечно я не знал (да и до сих пор не знаю) как проходят апрув на PlayStation или Xbox но судя по комментариям других разработчиков это мутно и долго. В точку! Это было мутно и долго. Иногда я даже начинал сомневаться – закончится это когда-нибудь или нет, мда... Хотя контроль качества у корейцев и был слегка параноидален, они все же нашли такие баги, которые я сам не выявил бы ни при каких обстоятельствах, за что им конечно - честь и хвала. Очень порадовало и то, что рядовые корейские тестировщики не пытались говорить со мной по англицки, а просто присылали видео косяка на телевизоре – жестами показывая, что здесь не так.

В результате запуск все-же состоялся и, как следовало ожидать, в первые несколько дней в игру не играл совсем никто. А потом от Samsung внезапно прилетел российский «фичер». Появился он на 3й день после публикации – в виде ярлыка с игрой в верхнем ряду Smart TV приложений. Просмотры побежали вверх, а потом через месяц дали мировой «фичер» что подбросило просмотры до 4000 в день (в новогоднем пике  конца 2013 г  - 11639 сессий/день).

ficher

Фичер от Samsung

Что же в итоге? Игра жива до сих пор. В российском списке рекомендуемых приложений на Samsung Smart TV - мой EasyPOOL на первом месте (по крайней мере для моделей 2012 г). В среднем играют 4000 человек в день, а всего сыграло 1 883 532 уникальных игрока, за неполных 4 года (9 125 572 сессии).

stat 01

stat 03

На графике можно заметить гребенчатые всплески – это уикенды, по субботам и воскресеньям на телевизоре прогнозируемо играют больше. На первых местах Россия, Украина и как ни странно Бразилия.

Ну а про деньги… Рекламный сервис Samsung AdHub помер в 2015 году, похоронив оставшиеся на нем недополученные мной 40,05$, а про продажи - тут как говориться "или хорошо или ничего". Я конечно никогда в серьез не рассчитывал обогатиться, выпуская эту игру, но конверсия 0,042% от числа игроков, мда… Конечно, это в любом случае получился очень любопытный еxperience, и скажу больше - Smart TV остается для меня тихой, заповедной зоной, в которой обитают не слишком многочисленная группа пользователей, порадовать которых хорошими играми на TV никто толком так и не сумел. Поэтому, как ни странно это прозвучит, еще как минимум два игровых проекта я всё-же попытаюсь портировать на SmartTV, несмотря на очевидное отсутствие коммерческих перспектив.

18 марта 2017 г.