понедельник, 29 апреля 2013 г.

От Аддиктивности до У!Я!


На днях я побывал на конференции, посвященной GameDev'у, организованной компанией iLogos. Об этом событии мой краткий отчет для коллег, чьи души поглотила пучина субботней отработки выходных :)

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

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

"Плохая новость - любая игра подходит к концу. Хорошая - ты можешь создать продолжение!"

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

Когда все расселись по своим местам, последовало краткое приветствие и знакомство с аудиторией, из которого стало очевидно, что в зале собрались не только программисты. Много было художников, менеджеров, эйчаров и даже немного QA :) География участников также не ограничилась одним Харьковом, было много представителей из десятка других городов Украины.

Аддиктивность, или простой способ зацепить игрока


С первым докладом выступил Денис Романко, автор известного блога xitri.com. В нем он поведал, как правильно варить мет и сушить траву спроектировать игру и какими фишками ее необходимо приправить, чтобы игроки "залипли" надолго и всерьез.

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

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

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

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

Более подробно о докладе можно будет узнать из презентации (к слову, с приятными иллюстрациями), когда она появится в сети.

Создание арта для кросс-платформенных игр


Следующим докладчиком стал Олег Акимов, художник-аниматор из компании iLogos. Он рассказал о трудностях подготовки графики и анимаций для кросс-платформенных игр, инструментах разработки, и методах оптимизации.

Так были рассмотрены проблемы хранения огромного количества графических ресурсов и их систематизации. Объединение ресурсов в атласы отчасти минимизирует количество файлов с графиков, но подразумевает под собой возникновение некоторых побочных проблем. У дизайнеров появляется дополнительная задача - как оптимально разместить графику в листах атласа, при том что все листы имеют одинаковый размер (1024x1024, если мне не изменяет память). При этом должно учитываться использование определенных элементов графики одновременно, чтобы была возможность загружать-выгружать из памяти графику по мере необходимости и игра была работоспособна в условиях ограниченной памяти.

Олег донес до слушателей простую но глубокую мысль - для оптимизации скорости выполнения программы вся используемая графика должна быть растровой. Растеризации подлежат даже все используемые шрифты.

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

Еще Олег напомнил участникам, что при разработке игр под разные платформы им придется иметь дело с огромным количеством разных размеров, пропорций и разрешений экранов. Приговор неутешительный - для каждого устройства должен готовиться свой набор графики, ибо только так можно гарантировать ожидаемое качество картинки. Конечно, охватить вообще все устройства таким образом может оказаться делом непосильным, потому следует использовать динамическую верстку с привязкой элементов к центру, к сторонам или к углам холста, а также 9-Slice компоновку элементов GUI.

Да уж, дизайнерам не позавидуешь. Впрочем, и программистам тут придется попотеть :)

Магия без грязных хаков


Андрей Андреев, следующий докладчик, рассказал о своем участии в разработке мобильной версии TankiOnline, где он использовал и модифицировал свои наработки по распознаванию жестов.

Как сказал Андрей, он больше математик, чем программист и больше программист, чем разработчик игр. Неудивительно, что в его разработке использовалась математика, так называемые расстояния Левенштейна. Как объяснил Андрей, чтобы неподготовленному слушателю было понятно, суть расстояний в чем-то сродни игре со словами, когда вам нужно превратить муху в слона, последовательно заменяя одну из букв. Также этот метод используется во многих программах, пытающихся угадать подобрать наиболее близкое подходящее слово к тому что вы написали (привет приколам от T9 :).

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

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


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


Разработка мультиплатформенных казуальных игр: грабли, шишки, практика


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

Среди прочих критериев успеха докладчик называл внимание к графике. Так им удалось буквально продать еще раз одну из своих старых игр, просто заменив в ней графику на более качественную, современную. Впрочем, слово просто здесь не совсем уместно, ибо по словам Виталия, заказчик им на этом проекте всю душу вымотал, тем не менее, их вложения в размере 50k принесли доход в размере 500k. Наконец-то интересные конкретные цифры, подумал я :)

В одном из прозвучавших вопросов была поднята тема локализации. Дескать, есть ли смысл русифицировать игру, какова финансовая отдача от русскоязычной аудитории. Виталий ответил, что смысл есть, ибо как и в покрытии максимального количества устройств, так и в покрытии максимального числа языков кроется успех продукта. Но.. отдача все же сильно разная. Так, он назвал основными потребителями, готовыми платить китайский, японский, американский рынки. Привел в пример историю, где только лишь переведя меню игры на китайский (кажется) язык, они получили продажи, принесшие им около 300k. Однако, не всегда это сработает. Принятие игры на том или ином рынке зависит не только от локализации, а и от того насколько подходит игра к менталитету или темпераменту аудитории.

Среди прочего Виталий также дополнительно упоминал о сложностях разработки под различные устройства, вспоминая доклад Олега Акимова. Он сказал, что заставляет своих дизайнеров рисовать интерфейс программы для конкретного устройства на миллиметровке, чтобы они хорошо понимали, на что они могут рассчитывать, насколько мелкие детали имеют смысл. Также он упомянул о своей находке, позволившей им сократить время загрузки графических ресурсов в память чуть ли не вдвое - они не грузят отдельно страницу атласа и описывающий ее XML-файл, а записывают закодированный XML прямо в страницу атласа в виде последовательностей байтов в технологических промежутках между спрайтами :)

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

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

В целом, хоть все доклады можно назвать интересными, этот я бы поставил на первое место. И не только я один, чему свидетельством был плотный круг участников, который окружил Виталия в перерыве после его доклада :) Я даже не пытался пробиться туда, вместо этого почитал твиты на табло, среди которых были смешные, вроде:
  • Наконец мы узнали разницу между freemium и free2play, ура!
  • Если собираетесь к Виталию на работу, берите с собой миллиметровку!
  • Это первый раз, когда я не хочу выиграть 10$!

ScummVM - мультиплатформенное семейство движков приключенческих игр


Евгений Сандуленко, лидер проекта ScummVM рассказал о том, что из себя представляет этот проект. От себя отмечу, что я далек от этой темы и у меня не сложилось четкого понимания, что и как там работает так что в своем пересказе я могу исказить факты :)

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

Евгений рассказал об одной детективной истории, которая произошла с их проектом. Не помню уж как случилось, но они выяснили что одна достаточно известная компания, кажется Atari, использовала ScummVM в некоторых своих играх, но при этом не проставила лебл ScummVM на дисках и не опубликовала открытым исходный код этих игр, как того требует лицензия GPL, под которой работает ScummVM. Участники проекта обратились в правозащитную организацию с уведомлением о нарушении прав, шестеренки завращались и вскоре издатель обратился к ним с предложениям устранить конфликт, путем отзыва непроданных дисков и добавлением лейлба на них. Однако, с открытием кода возникли сложности связанные с требованиями заказчика. Компромисс был невозможен. В итоге конфликт был решен перечислением довольно крупной суммы штрафа в какой-то фонд, поддерживающий open source разработки :)

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

В конце доклада Евгений призвал желающих присоединяться к проекту. На резонный вопрос, а какая в этом польза, он ответил, что это как минимум отличная строчка в резюме. А кроме того, проект участвует в программе Гугла по поддержке студентов-программистов: Google Summer of Code, победа в которой может даже принести реальные деньги. Ну и опыт, разумеется :)

Создаем успешную мобильную игру: маркетинг и паблишинг


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

Тем не менее, на вопрос, на какую долю доходов может рассчитывать разработчик, Ростислав ответил, что случаи бывают разные, но в основном стоит отталкиваться от паритетных начал. Фифти-фифти не заставит ни одну из сторон чувствовать себя обделенным и жалеть о сотрудничестве.

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

Телевизионная революция. История маленькой но гордой консоли


Финальным аккордом конференции прозвучал доклад Татьяны Евдокименко, PR-менеджера комании iLogos. Это был самый позитивный доклад и сейчас я объясню почему.

Речь зашла о новой консоли, которая выходит на рынок - телевизионной приставке OUYA, работающей под ОС Android. Первым делом Татьяна донесла до слушателей, как же именно следует читать это название. Оказывается, его нужно произносить не как "ОУЯ" и не как "ОЮВайЭй", а как "У!Я!", то есть вот так два слога и оба ударные. Это оказывается боевой клич такой :) После нескольких громких У!Я! от аудитории, докладчица продолжила и рассказала, что консоль своим рождением обязана проекту KickStarter, собрав требуемый капитал на нем в рекордно короткие сроки - всего за 8 часов. При этом в общем за время сборов, она собрала капитал превышающий изначально заявленный в 9 раз! В чем же секрет такого успеха на Кикстартере? Может в авторах этой консоли. Татьяна назвала авторов, чьи имена мне ничего не сказали :) Но она объяснила, что один из них, дизайнер, оказывается весьма знаменит и работал со многими крупными брендами и вроде что-то там разрабатывал для Nivea. А может успех заключается в заявленной цене на консоль. Если верить википедии, потребителю она должна достаться по цене 99$.

Татьяна сказала, что ей советовали использовать в докладе больше шуток, но судя по реакции зала никаких шуток кроме самого названия консоли и не нужно. И действительно, каждый раз при слове У!Я! зал начинал смеяться.

При кажущейся легкомысленности царящей атмосферы, перспективы консоли были рассмотрены как говорится, "кроме шуток". Оказывается, игр для нее готово крайне мало, к заявленным срокам релиза, судя по оценкам специалистов она еще совершенно не готова и ее едва можно считать альфа-версией. И в общем и целом никакой революции она из себя не представляет, а по начинке это не более чем смартфон, к которому прикрутили джойстик и возможность вывода на телевизор. И тем не менее, по словам Татьяны, они не сбрасывают ее со счетов и уже сейчас разрабатывают несколько игр под У!Ю!, что в принципе может быть разумно - малое количество игр плохо для потребителя, но хорошо для разработчика - больше шансов попасть на глаза.

Поначалу я не понял, почему игр так мало то? Андроид же. Разве не должна консоль автоматически получить все игры, которые работают под Андроид? Не тут то было - управление ведь совершенно другое. Ни тебе сенсорного экрана, ни гравицапы. Джойстик в руки и вперед! У!Я!

Заключение

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

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

Комментариев нет:

Отправить комментарий