Проект XPL

Кибернетический герой в поисках смысла существования.

Проект XPL

В процессе жизни разработчики мигрируют между различными средами разработки. Вот и я понемногу доплыл до связки Unity c Blender, пройдя Flash, Blitz3d в упряжке с 3ds Max, не говоря про Delphi, QBasic и спектрумовский Basic.

Пару слов о самом инструментарии. Blender впечатлял и раньше - полноценный мощный 3d-пакет, который весил какие-то жалкие десятки мегабайт. Правда он требовал к нему привыкнуть, но это того стоило. Правда глубоко в его возможности я поначалу не залезал, в основном мне тогда нравилась возможность красить вертексы, а так я привык пользоваться максом. Прошли годы и я снова вернулся к 3d, и уже не рассматривал макс совершенно, нацелившись на Blender. С тех пор тот успел обзавестись "честным" рейтрейсинг рендером Cycles, 3d карандашом, скульптом и прочими полезностями. На этот раз интерфейс не показался мне чем-то космическим, хотя требуется навостриться - может быть пригодился тот первый опыт, может быть действительно среда стала более интуитивной. Тем временем версия 2.8 обещает быть ещё интереснее - не только шустрый "игровой" рендер Eevee, но и изменённый интерфейс, буст анимационных возможностей. В принципе это уже всё есть, но пока в нестабильных сборках - допустим, у меня в 2.8 немного глючит сцена и в редакторе нодов связи совершенно прозрачные (а вот на Linux эта версия работает более стабильно). Вобщем, Blender - это очень правильный опенсурс.

Unity. Тоже отличный инструмент. Для понимания того как всё устроено мне пригодился опыт использования Blitz3d и Flash, на котором я как раз собирал законченные игры, а не только прототипы. Таким образом в Unity я нашёл всё что нужно, чтобы делать 3d-графику работающую на скриптах. Хотя сейчас в принципе движков появилось много - не проблема делать на чём угодно. Сейчас скорее проблема в оптимизации, потому что среды разработки стали более дружелюбны к пользователям и велик соблазн забить всё доступное пространство сверх-тяжёлыми супер-детализированными объектами, а код писать так, как будто моделируешь реальную ситуацию, в лоб. При том, что классический подход состоял в тотальном использовании таблиц, массивов, матриц, многообразия операций с ними, и формирования у пользователя всевозможных иллюзий - иллюзия объема, иллюзия перемещения, иллюзии эффектов и так далее. Что давало хорошую оптимизацию при скромных мощностях.

Возвращаясь к своему "гоночному" проекту. В первых набросках полуантигравитационный байк состоял из примитивов и ездил не шибко гладко. Как всё это выглядело можно посмотреть в этой статье.

Погрузившись недавно с головой в новый Blender, а особенно в область рендеринга, я занялся более детализированными моделями и дошла очередь и до того, чтобы сделать более технологичную модель байка для XPL. Планировал просто сделать модельку для рендера, чтобы было. Вот что в итоге получилось:

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

сетка рендер-модели<br />
сетка рендер-модели

Благо моделька была не скульптом, к тому же моделилась через симметрию, поэтому слегка упростить её вручную оказалось быстрее, чем проводить полноценную ретопологию. Поэтому оптимизировать её было не трудно:

упрощённая сетка - так уже гораздо лучше
упрощённая сетка - так уже гораздо лучше

Кроме новой модели я задумался над тем, что некоторые уровни могли бы иметь камеру закреплённую над героем. Так появилась отдельная сцена с видом сверху. Правда управление в ней уже не работало так как нужно, потому что в оригинале повороты контролировались отклонием мышки от центра и в другой перспективе полноценной езды не получалось. Ну что же, это было сигналом к тому, что управление нужно менять, хотя бы в рамках новой сцены. В итоге я переписал модель управления и теперь болид поворачивает в стороны на боковые стрелки, а по вверх/вниз едет вперёд либо назад. Попутно поменялись составные элементы персонажа, благодаря чему он стал лучше кататься и самое главное - получил способность "залипать" на поверхности, не соскальзывая. Я как раз хотел добиться этого эффекта, потому что он лучше подходит для отражения того, как должен вести себя задуманный полуантиграфитационный транспорт. Да, он теперь стал настоящим скалолазом.

Новая форма управления мне понравилась больше чем старая, не смотря на то, что у элемента character controller свои нюансы и он не участвует в физике полноценно, как предыдущий вариант с rigidbody. Поэтому в сцене с камерой позади болида я тоже заменил управление. После чего собрал прототип, демонстрирующий новые элементы. Вот видеонарезка:

новая модель и наброски уровня с видом сверху

В принципе, встроенная в Unity система шейдеров позволяет настроить материалы довольно гибко, однако мне не хватало каких-то более красочных бликующих эффектов и я поискал различные способы того, как их проще сделать. Решением оказалась концепция маткапов (matcap) - в том же Blender есть наборы этих простых текстур, хранящих световую карту окружения, которые подменяют собой материалы всей сцены, хорошо выглядят и на лету отрисовываются в реальном времени. С ними удалось добиться ещё более сочного вида модельки.

Попутно я занялся локацией для вида сверху, переделывая её с нуля, рисуя дорожки, горы и расставляя там разные новые элементы:

Так как сверху сложновато ориентироваться по окружающему ландшафту, то сама собой попросилась мини-карта. Но этот элемент в Unity добавляется относительно легко - буквально в несколько кликов. А вот другая вещь, которая пришла мне в голову, потребовала куда больше времени на реализацию, хотя тут тоже в итоге кода получилось не много. Я имею в виду автоматический зум, который отдаляет основную камеру, когда болид разгоняется - как в первых GTA. И вот, когда уже всё это заработало, то последовала очередная, пока последняя сборка, содержащая все эти новые изменения. Видеонарезка:

текущий вид проекта XPL

На этом пока всё. Удачи вам в разработке ваших проектов!

66 показов
597597 открытий
30 комментариев

Лично я за Unity по одной простой причине – C#. Только времени особо нет заниматься движком =/ А Blender 2.8 тема. Я перешёл на Blender не так давно (года полтора назад, это была 2.78 версия, если не ошибаюсь), поэтому привык уже к старому интерфейсу, но новый во многом лучше, хотя всё равно есть дикие косяки – например, у меня в редакторе кривых не работает Box Selection по-умолчанию, только через соответствующий шорткат, и в редакторе нод выделение тоже не соотносится с 3D View, нельзя снять выделение кликом на пустом месте. И до сих пор не добавили импорт *.3ds файлов, который мне регулярно нужен) Приходится держать Portable-версию 2.79 и скакать туда-сюда. Но если всё это отбросить, 2.8 это вещь. Сижу на ней уже давненько, время от времени качая актуальные билды с сайта разработчиков.
В остальном – ты молодец, удачи тебе) Завидую по-доброму)

Ответить

Спасибо! ;)
Blender уже вроде скоро стабильную 2.8 готовятся выпускать. Ну, кстати, многое в 2.79 есть, что я считал фишкой 2.8 - ну те же маткапы, метаболы. Притом 2.79 всё-равно останется неким стандартом - самая продвинутая версия со старым интерфейсом. Если не нужен eevee и новые возможности.
Я не то, чтобы вот прям за конкретный C#, скорее просто за движки с достаточно мощными встроенными языками. Кстати в Blender'e есть blender game engine, в связке с Python, но я во всём этом не разбирался, не знаю насколько сложно в той среде делать проект на практике.

Ответить

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

Ответить

Мне вобще из подобного нравились Вангеры, всегда хотелось сделать нечто близкое к ним. Кстати, собирал на Unity прототип по мотивам, но не стал развивать, потому что какой смысл повторять ремейкать/оригинальную игру если ты изначально не её разработчик.
UE тоже пробовал, как и Cryengine. Можно было бы в любом из них практиковаться дальше, но я всё-таки хочу менее прожорливую среду и чтобы приложение запускалось на слабом железе тоже.

Ответить

Для автоматической ретопологии есть замечательный Instant Meshes: https://github.com/wjakob/instant-meshes
Работает довольно качественно и на ютубе полно роликов, объясняющих как с ним работать.

Ответить

Я обычно без аддонов стараюсь обходиться. А так да, есть такое.

Ответить

Выбор конечно автора, но ГГ нечто механическое и по дизайну очень далеко от человекоподобного, что воспринимается подсознательно, как мутация и скорее может негативно влиять на желание поиграть за него.

Ответить