Spring Wheels. Короткая история одного проекта
В последнее время только и разговоры, что о Зомботроне. Но сегодня у нас будет небольшое исключение. Меня частенько спрашивают: а много-ли у вас таких проектов которые были начаты и не были закончены? Некоторые такие проекты вы уже видели ранее, а сегодня будет нечто новое.
Некоторое время назад (пару лет назад), я показывал небольшой тизер-шутку про Mining Truck 3 — родился он не на пустом месте!
Мало кто знает, но жанр гонок является одним из моих любимых жанров — я, как и многие из вас, с удовольствием прошел многие игры из серии Need For Speed и это пожалуй одна из любимых моих серий гонок. Так же мне очень нравится Flatout и некоторые другие. Кроме этого мне очень нравится MudRunner и Snowrunner — в эти игры я тоже накатал не мало часов.
И вот однажды, в потоке нудных рабочих будней, в очердной раз просматривая Unity Asset Store на предмет ассетов для рабочего проекта, я увидел модель авто и сразу влюбился в него.
Эта стилизованная моделька машины запала мне в душу и у меня родилась идея игры. Купив модель, я тут же постарался зафиксировать эту идею в виде картинки используя другие ассеты в качестве окружения.
Так и родился проект с рабочим названием Spring Wheels — это должна была быть одно-пользовательская игра про гонки в жанре ралли где большой упор делался на удовольствие от процесса вождения. В голове выглядело все хорошо, но впереди предстояла большая работа.
В этот момент времени я активно работал над гипер-казуальными проектами в игровой студии где игры делались очень быстро и порой выглядели очень уныло. В этой круговерти разработки хотелось сделать что-то действительно ламповое и приятное глазу, чтобы игралось приятно и выглядело достойно.
Ресурсов на создание своей графики у меня не было, зато сейчас полно графических ассетов в Asset Store Unity — тут я и занялся подбором графики.
Графический стиль
Первый самый большой и сложный вызов для меня был — это собрать прототип игры. Но, к моему удивлению — это не заняло слишком много времени. Машинка поехала уже через 2-3 дня после начала разработки. Результатом я остался очень доволен и далее был вызов по сложнее: собрать из разрозненных ассетов что-то достойное по графике. Вот тут-то и началось самое нудное. Все ассеты настолько разные и порой имеют свой уникальный стиль, из-за чего при попытке сочетать их — визуал начинает «разваливаться».
На подбор и подгон ассетов я потратил больше всего времени. Если внимательно разглядывать разные скриншоты, то вы можете заметить как менялось окружение, как я пробовал делать больше лоуполи и сочетал это с реалистичной травой, а потом уходил в стилизацию.
Итоговый результат:
Признаюсь честно — это был большой эксперимент. Я решил попробовать для себя сделать игру используя стороннюю графику. И что-то даже получилось. Немного муки выбора и доработка разных ассетов под себя дало не плохой результат, но все же я считаю, что картинка своеобразная и некоторые графические элементы по прежнему выбиваются.
Оптимизация
На рабочем компьютере все выглядело хорошо и игралось замечательно. А что же будет на мобильном устройстве — на той платформе куда игра планировалась изначально? Потянет ли средне-статический телефон такую игру!?
Это был второй эксперимент — нужно было понять что нужно будет сделать для того чтобы игра хоть как-то заработала. И тут пришлось тоже попыхтеть.
Естественно первая тестовая карта сделанная на одном Terrain работала еле как — там я от души замахнулся и сделал ландшафт с запасом по размерам — это было дорого-богато!
Вторую карту я нарисовал вначале на бумаге, поделил на сектора (чанки) и сделал несколько маленьких ландшафтов которые слепил как полагается, все красиво заполнил пропсами, а после ландшафт с нарисованными на нем текстурами преобразовал в модели — это дало значительный прирост производительности. Но еще больший прирост дало объединение больших и небольших статических моделей в несколько больших. Все это снизило расчеты на CPU, но увеличило количество ресурсов игры. То есть размер игры сразу стал заметно больше.
Пришлось применить и некоторые другие хитрости по оптимизации производительности прежде чем все более менее сносно заработало. На тот момент мне удалось добиться стабильных 30fps на iPhone 8 — игра работала плавно и радовала игровым процессом.
А вот Андройд для тестов у меня был очень слабенький и он в пике выдавал 15fps — этого конечно же не достаточно для гоночной игры. Более того многие шейдеры, которые я использовал, на нем не работали совсем. Поработай я тогда глубже над оптимизацией — заменил бы имеющиеся шейдеры более дешевыми, мобильными аналогами, тогда может и на Андройд удалось бы добиться стабильных 30fps. Но тут на горизонте возникла другая проблема.
А что дальше то?
Ну вот сделал я трассу, сделал хорошую производительность, сделал вторую трассу — оптимизировал её тоже, но ведь этого всего не достаточно! Нужно больше трасс, нужны другие автомобили, а еще лучше улучшения для автомобилей!
И вот я столкнулся с проблемой, с которой вероятно сталкивается каждый разработчик использующий сторонние ассеты — полет фантазии и запас идей ограничивается ассортиментом предлагаемых ресурсов.
То есть, если мне приходит в голову добавить в игру грузовик, то я не могу его добавить потому что нет подходящего ассета в таком же стиле и тогда я не смогу его добавить. Да, в случае с моделью этой машины — у автора модели есть и другие замечательные машинки в таком же стиле и я их даже все купил... Но на этом все...
А если я хочу сделать другой биом, другое окружение? В общем, все это накладывает какие-то невероятные ограничения на полет фантазии и когда что-то приходит в голову, первым делом приходится бежать в Unity Asset Store и смотреть есть ли под эту идею подходящие ассеты!? А если нет? Генерировать другую идею или перерабатывать то что есть под свои нужды?
В общем, вопросов больше чем ответов, но самое главное — это рамки и зависимость в которой оказываешся ты, когда работаешь со сторонними ассетами. И этот подход мне в корне не понравился.
Работа с ассетами была терпима пока игра делается в лоу-поли стиле. Все ассеты в лоуполи неплохо сочетаются друг с другом. Хотя и тут я замечал проблемы, особенно если автор лоуполи ассета использует какую-то свою уникальную стилизацию, то это могло накладывать свой шарм и в сочетании с другими ассетами получалась каша. Или это мой перфекционизм?
Выход есть!
В итоге я решил отказаться от использования сторонних графических ассетов и сосредоточится на том чтобы сделать графику самостоятельно. Но на тот момент у меня не было свободного времени заниматься этим — учится моделировать и искать свой стиль и стилизацию для 3D.
Хотя, признаюсь очень хотелось поэкспериментировать с этим. Скачал курсы по Blender и саму программу установил. Впрочем с Blender мне пришлось познакомится еще на этапе адаптации сторонних ассетов под себя. Но все же редактировать модели — это не тоже самое что и создавать их с нуля.
В итоге я так и не позанимался этим. А в тот момент решил переключится на Зомботрон Ре-Бут потому что там не нужно было ничего моделировать и можно было просто заняться разработкой.
Так и получилось что эксперимент со Spring Wheels встал на долгую паузу, а у нас появился Зомботрон Ре-Бут!
Но я надеюсь, что когда-нибудь я смогу вернуться к этому проекту и сделать для него полностью новую авторскую графику.