Окончание первой части истории, раскрывающей кратко упомянутый эпизод в финской книге "Finnish Video Games: History and Catalog".
В этой части я описываю организационно-технические вопросы и делаю некоторые выводы об организации проекта и причинах по которым он был успешен.
Итак, закончив короткий шведский проект и отдохнув какое-то время, я устроился работать в компанию производящую контент под торговой маркой «INFON» (да, это тот самый — «ИНФОН тебе в телефон»). У «INFON» тоже были планы по производству мобильных игр в 2001м, но этот рынок был еще достаточно туманен и отсутствовала нужная количественная база устройств, в конторе видел только телефон Nokia 9110 пригодный к разработке игр, но поигравшись с ним решили отложить это дело (я слышал, что потом этот «кирпичик» подарили какому-то губернатору). Меня посадили заниматься аплетами для онлайн-сервисов компании, публикуемых под маркой “Логотон”, позволяющие пользователям подготавливать графический и звуковой контент, с последующей отправкой себе на телефоны через SMS. В целом за таким занятием я провел почти год.
Где-то в марте 2002 года и началась та история про которую в своем интервью кратко рассказал Микко Хонкакорпи. Насколько помню, изначально на меня вышел Артем Голубчин, управленец из финско-российской рекрутинговой компании MPS-Russia (работавшей на финский рынок) и предложил пройти собеседование на предмет работы. Они решили развивать бизнес и перейти в категорию оутсорсинговой разработки, открыв так называемые “competence centers” (так они называли свою бизнес-модель). Основным достоинством “центров” была простота манипулирования кадрами со стороны компании-работодателя, а именно — легкость закрытия и увольнения, так как в Финляндии с этим очень большие сложности и неправильное увольнение может вызвать разорение компании.
Одной из компаний, которые хотели разместить свой «центр компетенций», была финская компания Akumiitti Oy. На тот момент достаточно известный поставщик решений для организации мобильных сервисов. Первое собеседование было без присутствия представителя финской компании. Если не ошибаюсь, в первый раз меня собеседовали Артем Голубчин и два финна. Один из финнов был похожий на викинга Тимо Мултамаки (Timo Multamaki) (сейчас известный финский дизайнер настольных игр) и еще какой-то финн, чье имя я уже не помню. Запомнилось только, что спрашивали какая игра мне нравится, на что я ответил, что «Operation Flashpoint». Потом было собеседование с психологами, и только раз на третий было собеседование с Микко Хонкакорпи (Mikko Honkakorpi). Параллельно финны вышли на контакт с Сергеем Кулигиным и нас пригласили на обсуждение проекта.
Выяснилось, что одна из крупных телекоммуникационных компаний планирует начать продажи нового бюджетного телефона Siemens M50 в одной из стран восточной Европы и так как телефон имел на борту встроенную поддержку J2ME, то заказчик хотел получить от Akumiitti вместе с мобильными сервисами и пакет из 20 игр. Основная сложность была, что дедлайн был назначен на 1-е июня, а на дворе был уже конец марта и на всё про всё оставалось меньше двух месяцев. Сергей Кулигин, исходя из своего богатого игрового опыта, отклонил предложение по сотрудничеству, сославшись, что сделать столько игр за такой срок — авантюра, но я был менее опытен и продолжил переговоры.
Мне было предложено разработать сценарии 20 мобильных игр и показать их на следующей встрече, которая должна была пройти через несколько дней. По вечерам в течение этих дней я «перелопатил» кучу старых игр со своих архивов от БК-0010, сделав компиляцию подходящих сценариев. Игры включали в себя аркадные, азартные и логические. Встретившись через несколько дней с Микко и Тимо, я представил им сценарии. Микко сказал, что сценарии им подходят и при мне они с Тимо пожали друг другу руки, ознаменовав заключение сделки. Ну а я подписался на создание команды и выпуск 20 мобильных игр по своим сценариям с «дедлайном» 1 июня 2002 года.
На фазе формирования команды проектом удалось заинтересовать еще трех человек:
Из всех членов команды, непосредственный опыт работы с мобильными устройствами имел только я и Сергей Олейник. Компания выделила нам комнатку в их офисном помещении на Большой Морской улице, рядом с Домом Композиторов. Было завезено необходимое оборудование в виде компьютеров и офисной мебели. Всё это было не новое и носило явные признаки «бэушности». Компьютеры «брендовые» и если не ошибаюсь производства COMPAQ, с предустановленной новой по тем временам Windows XP, с которой мало кто из нас на то время сталкивался (мы предпочитали Windows 98). Вся эта «брендовость» и специфичность «железа», не давала нам возможности переставить операционку, что давало дополнительные риски в напряженном проекте, поделать с этим мы ничего не могли.
Следующей фазой было проектирование и планирование работ. Исходя из "дедлайна", я рассчитал, что среднее время на одну игру выходило примерно в 2.5 дня (понятно, что о выходных и праздниках, при таком напряженном графике, говорить не приходилось). Разрабатывать игры при таком по стандартной общепринятой методике — "на, тебе, программист, задание и сделай мне хорошо" было нереально и так как я помнил заветы Адама Смита про увеличение производительности при помощи своего рода "конвейерности", то ориентировался на "конвейер" с минимальным переключением задач. Был составлен четкий сетевой график с расчетом времени и порядка работ позволяющий максимально распараллелить работы.
Роли распределились в таком порядке:
У нас не было реального физического устройства на старте проекта (его финны подвезли где-то через две три недели насколько помню) и мы пользовались эмуляторами от компании Siemens (эмуляторами для SL-45 и M50). В качестве системы итоговой сборки мы использовали Sun Java Wireless Toolkit. Никаких обфускаторов на тот момент не было, систему контроля версий мы тоже не имели (работали по системе общего файл-сервера), автоматизация была минимальна.
Так как целевое устройство имело очень жесткие ограничения по производительности и памяти, то было принято решение минимизировать нагрузку на "сборщик мусора" через создание игровых объектов при запуске игры и повторного использования их в процессе работы приложения, т.е. на старте мы сразу создавали всё нужное и оно жило до конца работы приложения. Хранение графики осуществлялось в виде PNG файлов и за нехваткой времени мы сделали минимальную автоматизацию по их упаковке (за счет удаления избыточной и дублирующейся информации) и оформили это отдельной утилитой склеивающей графические ресурсы вместе. Текстовые ресурсы так же паковали и хранили отдельно, за это отвечала специальная утилита. Звуковое оформление решили исключить в связи с бедностью возможностей устройства, нехваткой времени и экономией памяти. Каждая игра должна была быть представлена JAR архивом размером в 30-40 килобайт.
Поскольку некоторые игры требовали вычислений с плавающей точкой, но CLDC 1.0 (которая была на целевом устройстве) не поддерживала ни float ни double, то мы, как на старых компьютерах, выкрутились переведя все такие вычисления на «фиксированную точку» (8 бит в int отводилось на дробную часть), тригонометрические функции были реализованы через таблицы и была реализована небольшая библиотека для такого типа данных. Для того что бы не путаться в типах данных, так как всё было int, мы сделали специальную нотацию, где в имени переменной префиксом шли дополнительные данные, например i8_width обозначал значение с фиксированной точкой 8 бит (мне потом было долго не отделаться от использования такой нотации).
С использованием моих предыдущих наработок, был создан игровой фреймворк. Фреймворк состоял из нескольких интерфейсов и вспомогательных классов и описывал стандартную абстрактную модель мобильной игры, которая покрывала бы все жанры из запланированного пакета игр с возможностью загрузки-сохранения игрового процесса.
Каждая игра разрабатывалась по паттерну Model-View-Controller, это позволяло изолировать разрабатываемые модули и не «зависать» в процессе разработки на каком либо из этапов подготавливая модули пакетами.
Когда были завершены подготовительные фазы, то начали производственные работы. Первой выпущенной игрой, если не ошибаюсь, была игра «Carting» (автогонки), потом её игровая модель была с небольшими изменениями переиспользована для игры «Downhill race» (лыжный спуск). В процессе разработки, все производимые игры имели свои кодовые названия, а готовый продукт уже именовался именем присланным Микко. Некоторые названия игр были достаточно странны (например игра про каратэ называлась «Chop Chop»), но если вспомнить, что шведам пришлось в какой-то момент избавляться от названия Battleships, то в этом было здравое зерно.
Работы шли достаточно гладко и серьезных организационно-технических проблем не припомню. Как обычно, реальное устройство показало, что эмуляция не всегда отражает реальную картину вещей, но не было каких то критичных моментов требующих тотальной переделки. С "малознакомой" Windows XP был «забавный» случай, когда приехав с утра на работу мы совершенно неожиданно для себя увидели, что все компьютеры поменяли пароль и нам не войти в систему. При этом компьютеры были сконфигурированы так, что у нас не было возможности установить новые пароли, судя по всему, забыли сбросить какие-то настройки безопасности. На возню с этим делом было потрачено примерно половина рабочего дня и кончилось всё тотальным взломом систем с изменением системных паролей.
Слава богу, никто за период работ не заболел и не случились какие-то форс-мажорные обстоятельства, так как на них у нас не было никакого запаса времени. Микко лично посещал нас нечасто, в основном с ним шла переписка по емайл. Бывало, что он мог приехать и я узнавал об этом только постфактум. Где-то через месяц-полтора после начала работ, он сфотографировал нас троих на рабочем месте для внутреннего информационного листка Akumiitti.
Не обошлось и без изменений рабочих планов повлиявших на график. Один из игровых сценариев был на тему 11 сентября и игроку предлагалось защищать башни-близнецы от летящих на них самолетов-камикадзе. Поначалу этот сценарий был одобрен финнами и Сергей Олейник нарисовал отличную заставку (другие он и не умел рисовать) вместив туда даже миниатюрный портрет Усамы бенЛадена, но где-то во второй половине производственных работ, я получил сообщение от Микко, что от этой игры придется отказаться, так как очень «мутная тема» и никому не хочется разгребать вероятные проблемы с духовным миром террористов и им сочувствующих, которые могут неправильно оценить игру. Так что этот сценарий забраковали и игра была спешно заменена на другую, что потребовало дополнительные пару дней.
В конечном итоге все 20 игр были сделаны в срок + 2 дня вызванные изменениями со стороны заказчика. Пакет был полностью оттестирован и отгружен сначала Akumiitti, а потом ими их заказчику (крупной мобильной компании). Пакет состоял из следующих игр:
На фоне такого достижения, руководством TekLabs (так стало называться бизнес-подразделение MPS-Russia) и Akumiitti было решено отметить это дело через однодневное посещение руководством и командой пригородного дома-отдыха «Скандинавия» с торжественным обедом и сауной. Так-же через некоторое время нас посетил «топ» из Akumiitti Юрки Матикайнен (Jurki Matikainen) и обсуждались пути развития мобильного направления. На митинге я описал какие ресурсы требуются для организации производства мобильных игр в промышленных масштабах, но особого понимания не встретил (это не было приоритетным направлением для финнов).
Микко через какое-то время уволился и нашим куратором со стороны головной компании стал Ээро Пойри (Eero Poyry) (в настоящее время директор по развитию в Rovio). Он держал нас в курсе дел по отгрузкам изданного первого игрового пакета. От него пришла информация, что на 1000 первых проданных их заказчиком мобильных телефонов Siemens M50 было отгружено более 1200 мобильных приложений, что показывало реальную заинтересованность пользователей в J2ME контенте. Я получил по емайл диаграмму отгрузок по играм и в ней сбылось эвристическое правило высказанное мне еще Сергеем Кулигиным — «если хочешь, что бы игра гарантированно продавалась — делай гонки», игра «Carting» была абсолютным лидером по отгрузкам и взяла больше четверти диаграммы.
На этом думаю можно остановиться, так как на мой взгляд достаточно подробны раскрыты детали и результаты проекта.
На фоне всего вышеописанного, хотелось бы сформулировать ряд причин, которые по моему мнению привели к успеху проекта:
Из неправильных шагов которые хотелось бы отметить, были:
На фоне шагов в области мобильных игр со стороны западных партнеров, нельзя не рассказать об известных мне шагах российских игроков в этой области. Как указано выше, до проекта я работал в компании INFON и она тоже не хотела оставаться в стороне от разработки J2ME игр. INFON вообще по бизнесу был очень схож с Akumiitti, за небольшой разницей — то, на что финны закладывали 10 лет, в INFON делали за полгода-год.
В июле 2002го года, владелец INFON обратился с просьбой сделать мобильную игру на тему «утиной охоты», так как он собирался на охоту с одним из топ-менеджеров NOKIA. Требовалось сделать игру для нового (на тот момент) Nokia 3410. Задача была успешно решена, мы разработали сценарий и сделали достаточно неплохую реализацию. Мне запомнилось как мы обсуждали с Сергеем Олейником отрисовку уток и он стоял за реализм, а я за «диснеевский подход», вобщем я победил в споре. К сожалению «директорская охота» сорвалась и заказчик презентовал игру на одной из западных тематических конференций. Вернулся назад он с горящими глазами и словами — «Когда я им это показал, то на меня смотреть стали совсем по другому! Только ради этого уже стоило делать!».
INFON заказал еще одну игру на тему сноуборда для отгрузок на мероприятии в Москве (как понимаю это было Nokia Totally Board, прошедшее в сентябре 2002 года). Аркада Snowboard была успешно спроектирована и реализована для телефонов NOKIA 3410, музыку к ней я заказал у Сергея Боярского. По заказу INFON были сделаны еще игры Penalty и Drive OFF. Позднее все эти игры были адаптированы под более широкую линейку телефонов.
Однажды, открыв один из популярных тогда российских журналов по мобильному контенту (к сожалению уже запамятовал название), я увидел скриншоты из Fowling и Snowboard с пометкой, что «игры компании INFON открыли эру мобильных игр в России».
Как ни странно, но отголосок тех мобильных проектов, до сих пор звучит, хоть и не на мобильных платформах.
Где-то ближе к концу лета 2002 года, для автоматизации сборки под разные мобильные платформы, была сделана версия препроцессора для языка Java. Думаю если это и не был самый первый Java-препроцессор (препроцессор Antenna появился в том же году), то по крайней мере был самый мощный, так как двухпроходовый и позволял даже держать данные в XML файлах. Этот проект жив до сих пор как OSS и используется например при сборке JDBC драйвера командой Postgres. Я был даже немного удивлен, обнаружив этот препроцессор в разных Linux репозиториях обозначенный как пакет libcomment-preprocessor-java.
К сожалению, не доступен сервер mySQL