ТЕКСТ: ВИТАЛИЙ НИКУЛЕНКА. В конце сентября 2011 года мне поступил заказ на изготовление игры-говорилки (наподобие Talking Tom), в которой в качестве главного героя должен был выступать полярный медведь Бернард, широко известный всем по одноименному мультфильму. К тому моменту около 5 игр было выпущено на основной работе и одна маленькая игра Galaxy Panic вышла за 3 месяца до этого. Так что, поскольку определенный опыт в разработке и выпуске игровых продуктов уже имелся, я охотно согласился выполнить данную работу.
Кто не знает, как в общем устроены говорилки – поясню. Как правило, данный тип игр состоит из набора заранеее подготовленных анимаций, которые запускаются по нажатию игроком на определенные части экрана или по каким-либо другим событиям. Анимации представляют собой набор .jpg-картинок, показываемых одна за одной с частотой около 14-15 кадров в секунду – это практически максимум, на который способен первый iPad.
Начало
Talking Bernard предполагали довольно интенсивно делать в свободное от работы время – заказчик со сроками не давил, а также предоставил довольно подробное описание игрового процесса, которое вполне сошло за черновик дизайн-документа.
В команде предполагался следующий состав:
- 1 разработчик
- 1 художник
- Я в роли руководителя и game designer
- Представитель заказчика в виде продюссера
В общих чертах, задачи стояли следующие:
- Игра должны максимально соответствовать атмосфере мультфильма
- Игра должна обновлять цены гардероба и других покупок с сервера
- В игре необходимо организовать запись видео
- Игра должна работать на iPad и, может быть – на iPhone
О проекте начали говорить в конце сентября. Неспешно обсуждали продукт, подбирали команду, запрашивали материалы у студии-производителя оригинального мультфильма. Прежде чем окончательно согласиться на работы, мы ждали рабочие материалы от студии, так называемые . Это было необходимо, чтобы точно определить возможность выполнения работ, а также их сроки. У нас в команде был художник с навыком владения 3DMax, поэтому, получив пакет материалов, где все модели были в Maya, мы не сильно обрадовались, т.к. для художника это означало дополнительные затраты на перенос моделей в 3DMax.
В итоге, во второй половине октября 2011 года были окончательно определены объем работ, а также – сроки сдачи работ: первая половина января 2012 года.
Подготовка к разработке
После улаживания формальностей, мы приступили к работам над игрой.
Несколько дней ушло на создание среды работы (wiki, репозиторий).
2-3 дня пришлось потратить на диаграмму , где были в графическом виде представлены все переходы анимаций Бернарда.
Еще 1 день ушел на подготовку GDD с полным списком анимаций и действиями.
Параллельно художник занимался концептированием игровых сцен и пользовательского интерфейса.
Параллельно программист занимался поиском оптимальной платформы для разработки.
На все про все ушло около недели.
Да – играм, нет – технологиям!
Уже в который раз я убеждаюсь, что при разработке игр подобного плана (маленьких, мобильных, казуальных) нужно в первую очередь делать ставку на сам продукт, а не на технологии, на которых он сделан. Данная игра не стала исключением, к превеликому моему сожалению.
Преимущества разрабатываемой игры состояли в том, что большую часть времени программист и художник могли работать самостоятельно, т.к. игровой процесс был интуитивно понятен, а средства управления – просты.
Моя помощь тоже не особо требовалась, т.к. все документы были готовы, и, самое главное, всем было ясно, что делать.
Художник должен был предоставить на выходе – набор кадров анимаций и меню.
Программист должен был обеспечить работу всего того, что предоставит художник с достаточной производительностью. На практике оказалось, что не так-то просто выжать из iPad jpg 15 кадров. Программист уперся в разработку на своем собственном движке, который показал быстродействие в 3-4 кадра в секунду и потратил кучу времени на абсолютно ненужную оптимизицию ненужного, как в последствии оказалось, кода. Тем временем я проверил скорость работы Cocos 2d, но и там результаты не утешили – 2-3 кадра в секунду на jpg файлах.
Помог стандартный cocoa интерфейс Apple. Он показал ожидаемую скорость в 15 кадров в секунду.
На все мои призывы использовать cocoa + obj-c программист упорно продолжал оптимизировать свой движок. Надо сказать, я на тот момент не сильно настаивал, т.к. программирование – не основная моя специальность, поэтому, я предпочитаю не лезть лишний раз со своими советами и не мешать людям работать, полагаясь на их компетенцию.
В итоге, примерно через полтора месяца (а на дворе уже была 2-я неделя декабря), у нас был черновой набор графики и движок, позволявший играть jpg с более-менее приемлимой скоростью и все!!!
Уже наступало время для демонстрации хоть чего либо заказчику, а мы могли похвастаться лишь тем, что умеем с нужной скоростью проигрывать jpg файлы. А впереди еще стояли другие проблемы – захват видео на iPad, работа с голосом, создание игры, работа с сервером и сетью.
Поскольку программист в упор не хотел слушать моих предложений о переходе на технологии, позволяющие производить быструю разработку, то я был вынужден начать параллельную работу над альтернативной версией проекта.
В итоге – через 3 дня был готов полностью рабочий и удовлетворяющий всем требованиям производительности прототип (полностью написанный от и до на стандартном Framework от Apple).
Программисту было предложено продолжить работу над моим прототипом, но он предпочел самоустраниться, поэтому роль программиста пришлось занять мне.
Новая эра
Поскольку теперь пост программиста занимал я, то проект несколько преобразился. Он был построен на существующих технологиях/библиотеках. Я происхожу из perl программистов и предпочитаю использовать то, что уже написано, а не разрабатывать код заново. Поэтому, проект быстро обзавелся такими классами/библиотеками, как Asihttprequest, Sharekit, Semimodal, CocosDension, etc… К слову, CocosDension потом пришлось убрать и заменить собственным классом AudioPlayer, т.к. он не подходил для работы со звуком во время записи видео (необходим был более полный контроль над временными метриками). Все меню разрабатывались при помощи Interface builder.
Дальше дело пошло гигантскими шагами и к концу января 2012 года (со всеми этими издержками невозможно было не выбиться из графика) заказчику была продемонстрирована бета-версия игры (частично не хватало сетевой функциональности, некоторых анимаций, не было звуков).
В процессе написания кода в игру добавили много значительных улучшений с точки зрения удобства и маркетинга, которые врядли были бы реализованы, если бы программист остался работать и выполнял действия строго по дизайну.
Игра приобрела:
- Динамические In-app purchases
- Загрузку предметов гардероба online
- Динамические предметы для покупки за внутреннюю валюту и их обновление online
- Обновляемый список существующих приложений для их продвижения
- Подарки
- Напоминания о подарках
- Предупреждения и подтверждения.
- Вывод в дополнительное окно информации, помеченной, как важная.
- Многие другие мелочи, о которых сейчас уже и не упомнишь
Ужас и неотъемлемая часть Game development
После демонстрации продукта заказчику было предложено несколько, на первый взгляд, незначительных переделок (в частности, добавить в некоторые анимации других персонажей из мультфильма), которые в итоге, вылились в лишние два месяца трудоемкости преимущественно для художника, т.к. количество анимаций в общем осталось неизменным, но пришлось переносить и делать риггинг еще для 2-х персонажей. Дополнительно ситуация несколько усугубилась тем, что художнику подходило время работы над другими проектами. Пришлось не спать и совмещать, за что ему отдельное спасибо!
Пока художник работал над измененениями, я добавил в игру существенные мелочи:
- Защищенные NSUserDefaults, как легкое средство против читеров.
- Хранилище профилей на сервере (для восстановления внутриигровой валюты и предметов в случае переустановки приложения)
- Локализацию на русский язык
- Локализованные закачки игровых файлов (в зависимости от установленной локализации)
- Шаринг действий на Facebook и Twitter
Как итог, игра Talking Bernard вышла в продажу только в середине мая 2012 года
Некоторые цифры:
- Время от упоминания до выхода в продажу: 8 месяцев
- Длительность активной разработки: 6 месяцев
- Примерное время, потраченное на ожидания ответов от заказчика/студии: 1.5 месяца.
- 21 анимация
- Более 1400 кадров
- Около 65 мегабайт игровых данных
- Около 300 килобайт кода игры (не считая бибилиотеки и сторонние классы)
Спасибо, что дочитали 🙂
iPad: Freemium [iTunes link]
Данная история опубликована в рамках рубрики Developer Story, где разработчики делятся секретами своей внутренней кухни.
Источник: