iPhones.ru

Dev Story МонстроПёс — история о беге, полётах и фруктах

Информатор avatar | 11
FavoriteLoading В закладки
МонстроПёс — история о беге, полётах и фруктах

ТЕКСТ: НИКИТА ДЁНИН (BRITE KIDS) После того, как мы закончили нашу детскую книгу «Виксы» [iTunes link], пришло время думать, куда же двигаться дальше. Нам не хотелось расставаться со своими персонажами, но мы стремились создать что-то новое. «А ведь у нас есть собака, маленькая, но очень гордая!» — подумали мы и решили: вот наш новый герой.

Концепция

Повторять механику существующих игр или делать очередной клон «злых птиц» неинтересно, и мы решили создать что-то новое, но с оглядкой на успешные продукты с затягивающим и в то же время простым геймплеем. В голове роились картинки двухмерных аркад, рюкзаков для полётов и образы катаны, рассекающей фрукты. И вот после долгих размышлений короткими летними вечерами родились первые наброски МонстроПса (которого тогда мы звали просто Краббл): маленькая беззлобная собака, которая пытается догнать своего обидчика — апатичную свинью за рулём грузовика с фруктами, — внезапно превращается во всесокрушающего фиолетового монстра и размазывает фрукты по дороге с таким усердием, что позавидовал бы любой танк.

Подготовка

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

Относительная простота использования Cocos2D также повлияла на выбор: нам не приходилось разбираться с низкоуровневым программированием графики. Создать сцену, поместить на неё спрайты — и вперёд. Благодаря хорошей проработанности движка можно было сосредоточить внимание на механике игры, а не на реализации отрисовки, воспроизведения звуков и физики.

Первые сложности

Так как игра динамичная, и на экране зачастую присутствует большое количество объектов, то в первую очередь нам пришлось задуматься о производительности и доступных ресурсах аппаратов. Если старый iPhone 3GS работал «на ура» (так как разрешение его экрана в два раза ниже, чем у аппаратов с Retina, а аппаратная начинка относительно близка к ним), то на аппаратах линейки 4/4S становились заметными подёргивания и замирания игровых сцен. Эти проблемы решались долгим и нудным профилированием и упрощением алгоритмов. Сократить количество вычислений здесь, убрать ставший ненужным кусок кода там — и вот уже ощущения от игры становятся гораздо приятнее.

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

Фруктовое безумие

Самые большие проблемы начались, когда у нас появились летящие и падающие фрукты. Спрайты фруктов «съедали» жуткое количество памяти, и приложение «захлёбывалось» и падало. Обложившись документацией и переключив мозги в форсированный режим, мы взялись за оптимизации. Дважды переписанные куски кода, отвечающие за перерисовку фруктов, упаковка спрайтов в атласы, создание физических тел с помощью специальных редакторов — и вот уже через какое-то время мы сами отвечали на вопросы, связанные с генерацией двух тысяч спрайтов, на Stackoverflow.com, где ещё совсем недавно сами пытались выловить хоть какие-нибудь частицы информации.

Мультиплеер

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

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

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

Подготовка к публикации

Исходные материалы, занимающие 311 мегабайт, git-репозиторий, «раздувшийся» до 838 мегабайт… И всё это очень хочется уместить в 50 мегабайт финального пакета, который пользователи будут скачивать из App Store (причина проста: загрузка приложений через сотовые сети искусственно блокируется Apple, если их размер превышает 50 мегабайт).

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

Публикация

Рассмотрение игры цензорами Apple прошло в полной тишине. У них не возникло вопросов ни по поводу внутриигровых покупок, ни по геймплею, ни по стабильности работы. Тихо и скромно статус сменился с «Waiting for Review» на «In Review», и буквально через пару часов после этого на почту пришло уведомление, что игра готова к публикации. И вот мы снесли с аппаратов тестовые версии с сундуками набранных за время тестирования монет, поставили «боевые» версии из App Store и начали каждый свой путь к игровому Олимпу, на вершине которого сидит гордый фиолетовый пёс и с чувством выполненного долга жуёт корку арбуза.

Обзор для iPhones.ru:

iPhone + iPad: Бесплатно [iTunes link]

1 Звезд2 Звезды3 Звезды4 Звезды5 Звезд (1 голосов, общий рейтинг: 5.00 из 5)
undefined
iPhones.ru
ТЕКСТ: НИКИТА ДЁНИН (BRITE KIDS) После того, как мы закончили нашу детскую книгу «Виксы» [iTunes link], пришло время думать, куда же двигаться дальше. Нам не хотелось расставаться со своими персонажами, но мы стремились создать что-то новое. «А ведь у нас есть собака, маленькая, но очень гордая!» — подумали мы и решили: вот наш новый герой....
Здесь можно оставить комментарий! Для этого авторизуйтесь или зарегистрируйтесь на iPhones.ru.

11 комментариев

Форум →
  1. Xronos avatar
    Xronos 21 февраля 2013
    0

    Попробуем ! Спасибо !

    Войди на сайт, чтобы ответить
    Ответить
  2. Und avatar
    Und 21 февраля 2013
    0

    Пользуясь случаем, хочу еще раз поблагодарить за Виксов! Прекрасная книжка, которая помогала нам засыпать много-много вечеров :)

    Теперь попробуем краббла Мопси в сольном режиме!

    Никита Narmo Дёнин avatar
    Никита Narmo Дёнин21 февраля 2013
    0

    @Und, Пожалуйста :-) Мы рады, что книжка способствует здоровому сну.

    Войди на сайт, чтобы ответить
    Ответить
  3. TrasserZero avatar
    TrasserZero 21 февраля 2013
    0

    Отличный собак! Спасибо!

    Никита Narmo Дёнин avatar
    Никита Narmo Дёнин21 февраля 2013
    0

    @TrasserZero, Играйте и выигрывайте.

    Войди на сайт, чтобы ответить
    Ответить
  4. migmit avatar
    migmit 22 февраля 2013
    0

    Ребят… а где справка-то? Совершенно непонятно, что делать. Валятся какие-то фрукты — их подбирать? Или избегать? Умер пару раз, но не понял, от чего.

    Никита Narmo Дёнин avatar
    Никита Narmo Дёнин22 февраля 2013
    0

    @migmit, Уворачиваемся от фруктов, собираем монеты. Когда монет станет много, и собака превратится в монстра — можно разбивать фрукты.

    Войди на сайт, чтобы ответить
    Ответить
  5. aclex avatar
    aclex 22 февраля 2013
    0

    Фрукты вас отвлекли от правильной мысли!
    Грузовик должен был быть почтовый. Даже не грузовик, а почтальон на велосипеде.
    А кидался бы он газетами, журналами, почтовыми ящиками и посылками )))
    Спасибо за дев-стори, очень интересно.

    Войди на сайт, чтобы ответить
    Ответить
  6. Makarone avatar
    Makarone 22 февраля 2013
    0

    Wigman Big Run, Ребятки, Wigman Big run :)

    Войди на сайт, чтобы ответить
    Ответить
  7. am98pln avatar
    am98pln 25 февраля 2013
    0

    очень красивая картинка, графика в игре, но механика реализована плохо, физика очень странная и играть в итоге не удобно, можно, конечно, напрячься и приловчиться, но зачем? я бы вам предложил переделать физику, сделать игру более естественной в поведении и управлении, удачи!

    Войди на сайт, чтобы ответить
    Ответить
  8. MikeS avatar
    MikeS 12 апреля 2013
    0

    Крутая игрушка, ща скачаю!

    Войди на сайт, чтобы ответить
    Ответить
Помни о правилах — если начал оффтопить, то не удивляйся потом.

Нашли орфографическую ошибку в новости?

Выделите ее мышью и нажмите Ctrl+Enter.