Первый блин комом: разработка симулятора силами трех человек

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

В закладки

Вместо предистории

На данный момент, у нашей компании в работе два крупных проекта с timeline-ами от полугода до двух лет. Так уж вышло, что новые участники команды ранее не работали вместе, и как показывает практика, требуется время для создания удобной для всех экосистемы из рабочих отношений, обязанностей и привилегий.

Именно с этой целью и был создан наш симулятор старой игрушки, который на момент написания статьи доступен в магазине Google Play. Сразу оговорюсь, что "проба пера" не всегда возможна в силу ограниченности ресурсов, и стоит прежде всего рассчитывать собственные силы.

В создании любого тайтла классически принято выделять ключевые стадии разработки: идея, концепт, прототип, pre-production, production, post-production. Такой подход проверен не одним десятилетием, и отказываться от него в пользу "креативной разработки" при доступных ресурсах было бы ну совсем лишним.

Идея и Концепт

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

Согласитесь, более простую игровую систему придумать сложно.

Обсудив идею с командой проекта, решили приступить к реализации, добавив в оригинальную игру некоторые правки:

  • отказаться от привязки модели к гироскопу, так как для качественной реализации требовалось уделить немало времени Research-аспекту;
  • вместо одной кнопки сделать две - таким образом игрок полагается не только на слепую удачу, и его навыки становятся ключом к успеху.

Приятной новостью также стало небольшое количество аналогов на Google Play, что дало шанс создать привлекательный для конечного пользователя продукт.

Как показала практика, концепты и визуализация - ключевой фактор для передачи собственного видения.

Прототип

Поначалу всё шло гладко. Модели колец, крючков и самой "пластиковой коробки" для прототипа были сделаны за час, а движок Unity предоставил достаточно достоверную симуляцию перемещения динамичных объектов на уровне, "заполненом водой".

Вечером на второй день проекта мы дружно собрались у экрана Артема (нашего программиста), чтобы посмотреть на первый запуск симуляции. Но в тот момент, когда кольцо должно было наконец "одеться" на крючок, оно ловко отпружинило от него. Спустя два дня правок и предположений проблема была устранена - как выяснилось, пустоту внутри модели кольца Unity заполняла для упрощения рассчетов, поэтому помимо визуальной части, кольцо прошлой длинный путь от 16 сфер-коллайдеров до 8 циллиндров, столкновения с которыми и позволяют кольцу быть одетым на крючок.

То самое злополучное кольцо, состоящее из 16 сфер. Даже на компьютере FPS проседал до 3 кадров в секунду при использовании 8 колец на сцене.

Pre-production

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

  • отрисовать интерфейсы и собрать их в Unity;
  • нанести текстуры на игровые модели;
  • подобрать звуковое сопровождение для игры.

Интерфейс, внешний вид моделей и звук должны выглядеть целостно, потому мы задались вопросом: а о чем будет наша игра? Совет: никогда не оставляйте решение этого вопроса "на потом", это чревато срывом всего проекта.

Нас спасла погода: выйдя на перекур, я с удивлением заметил первые снежинки. Ассоциативный ряд привел к выбору рождественской тематики - что, пусть и довольно заезженно, всё равно понравилось всем нам.

Здесь возникла вторая проблема: человек, делавший 3D модели (я) не знал, как сделать развертку наложить на них текстуру. Да, так вышло, и времени на доскональное изучение вопроса не осталось. К счастью, Саша (2D художница) смогла достаточно быстро и качественно покрасить кольца и крюки в Substance Painter. В формате статьи могу открыть нашу великую тайну: сама коробочка так, как мы её видим в игре, не покрашена - мы не успели сделать развертку, потому просто поставили спрайт с окрасом поверх коробки. К счастью, пока никто не жаловался.

Музыка же, как и звуки пузырьков, были честно взять из сети по запросу "christmas songs royalty free for commercial use" - в этом вопросе наших общих умений оказалось недостаточно.

Спрайт, скрывающий наши недоработки)

Production

- А мы точно её выпустим? - Какая разница, главное что сами сможем поиграть!

Фрагмент skype-конференции в день запуска

Утро среды второй недели разработки началось спонтанно и в меру хаотично. Артем заканчивал оптимизировать физику, Саша делала иконки и баннер для страницы в магазине приложений, я тестировал игру и делал снимки экрана для магазина. Ничто не предвещало беды, как вдруг к нам зашел Project Manager, посмотрел на игру и сказал: "а хорошо бы вместо фона показывать вид с основной камеры". Вопреки нашим ожиданиям, мы успели реализовать даже такую функцию за оставшиеся полтора дня - пусть и в тестовом режиме.

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

Выводы и заключение

За время работы над Christmas rings накопилось некоторое количество практических советов, которыми я как Game Designer хотел бы поделиться с теми, кто только готовится приступить к выпуску своей первой игры:

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

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

Итоговый интерфейс - к сожалению, мы не успели добавить анимацию снега.

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

Надеюсь, наш опыт будет полезен читателю) И, конечно, буду рад ответить на любые вопросы по поводу нашей игры!

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Богдан Бортаков", "author_type": "self", "tags": [], "comments": 3, "likes": 13, "favorites": 4, "is_advertisement": false, "subsite_label": "flood", "id": 13773, "is_wide": false }
{ "id": 13773, "author_id": 39163, "diff_limit": 1000, "urls": {"diff":"\/comments\/13773\/get","add":"\/comments\/13773\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/13773"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64955 }

3 комментария 3 комм.

Популярные

По порядку

2

Скачал поиграл ни че так)

Ответить
0

Спасибо за отзыв)

Ответить

Комментарий удален

Комментарий удален

Комментарий удален

Комментарий удален

Комментарий удален

Комментарий удален

0

игрушке, которая была довольно популярна в конце девяностых - начале нулевых

Она и в начале девяностых тоже была популярна в России, я в детсадике играл.

Можете видео процесса показать?

Ответить

Комментарий удален

Комментарий удален

Комментарий удален

0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]
Хидео Кодзима оказался алгоритмом
машинного обучения
Подписаться на push-уведомления