Невангеры

Всем привет.
В этот раз мне хотелось бы затронуть тему разработки компьютерных игр, показать некоторые идеи и прототипы. Конкретно в этой статье речь пойдёт о проектах и набросках, вдохновлённых игрой Вангеры, она же Vangers: One For The Road.
Пристёгивайтесь поудобнее, трюм полон интересностей, спираль заряжена, поехали.

jtcujhmmmeyzzakvdtn1910myqq.jpeg

celgzjx7dyv9s8oacdtlan8hcaw.jpeg

С оригинальной игрой я познакомился 20 лет назад, прочитав ту бесподобную статью в пятом номере Game.exe за 98-й год, и купив диск с Вангерами ещё до покупки своего первого компьютера. Тогда ещё дома водился Спектрум и восьмибитки, а в школе только начали подпускать к мрачному досу и 95-м окошкам, а также Диабле, Дюку, сетевому Варкрафту. Правда приходилось иногда всем этим осознанно жертвовать. Потому что QBasic был интереснее.

Но вернёмся к Вангерам. Игра есть, а играть особо негде. Не беда — соорудил настолку «по мотивам». Вот и ездили по клеточкам машинки, перевозя грузы между тремя городами — по изогнутым дорогам спокойнее и быстрее, а если срезать, то передвигаться труднее, зато на тайники можно наткнуться. Сам же PC-диск лежал на полочке, как своего рода талисман и заочно любимая игра. Бонусом было то, что его можно было проигрывать в купленной уже немного позже PlayStation One, как диск музыкальный.
Консольные эксклюзивы, стоит заметить, совершенно отбили у меня желание играть в большинство знаковых западных игр, в основном ролевых, когда первый компьютер всё-таки у меня появился (ну, а с Сонькой пришлось расстаться ради этого). А вот Вангеры вполне оправдали мои ожидания, будучи запущенными впервые. Потому как даже сам конечный продукт не так важен, как образы им, так или иначе, порождённые.

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

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

Не так давно оригинал переиздали в Стиме.
А у сообщества есть отдельный телеграм-канал https://t.me/vangers

o9gfj1-tn37jqrdtnnbfne_ndja.jpeg

2hzuu1ib1gv2-dhiax4cwybvymi.jpeg

io2jizcur98bcbtpzgcexrkz9z0.jpeg

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

Blender и Unity

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

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

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

3rfg8qh4gii5e_mtdwuqr0kw_60.jpeg

Невангеры

И вот сижу я как-то, моделирую всякие лоуполи элементы в Блендере, да и вспомнились вангеровские машинки-мехосы. Набросал одну такую, ну, а раз Unity тоже под руками, то почему бы не поездить. Далее случайно обнаружился ассет с физикой колёс, и мелькнула мысль «а не собрать ли маленький кусочек локации из Вангеров на Unity». Кстати, когда-то давно, на Flash собирал игрушку, где надо было взрывать грибы и давить бегающих жучков — тоже некая отсылка к моментам из Вангеров.
Unity-ассет, кстати, назывался MS Vehicle System (free version), если кому интересно.
Так и появился первый прототип, по которому записал небольшое видео:

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

Параллельно я плотнее распробовал Блендер, особенно скульпт, и погрузился в эксперименты с рендером всяких концептов, персонажей, архитектуры. Во время опытов с очередным способом создания моделей в голове что-то щелкнуло и захотелось сделать такую как-бы «органическую» машинку. Тут-то всё и завертелось.

sqt23ptckiol3a29wqxn9cuiik4.png

Тантрамантра, или Вангеры 2

Действительно, что если представить себе некое продолжение оригинальной игры. С новыми мехосами, новой проблематикой, новым движком.

dzjdhgupw3lzedw7nqrevwaojcw.png
Органический еретик

kpkiat1lyyeyhgsj0nh_x4ptu0k.jpeg
Матрона

Как бы мог выглядеть сюжет подобного продолжения? Вроде бы вырисовывается нечто в духе оригинала. Я вижу это примерно так:

Продолжение истории освещает события произошедшие с Цепью миров после Бури Врат, во время которой новые Коридоры хаотически появлялись и закрывались в самых разных местах. Во время катаклизма привычные связи между мирами разрушились, а из новых порталов туда стали активно проникать иные формы жизни. В погоне за новыми вооружениями и артефактами четырёхколёсные герои устремились в новые Коридоры, чтобы изучать другие миры.

8zdgswu9j_uk8rsqbyznp_gbaga.jpeg
Кукловод

Шло время. Буря поутихла, но случайные Коридоры всё ещё возникают, а существующие не всегда стабильны. Обозначились и новые проблемы — пока мехосы колесили по переходам, восстанавливая связи со старыми измерениями, некоторых занесло в очень опасные отдалённые миры. Там их корпуса очень быстро разлагались, но некоторым удалось уцелеть в чужеродной среде, слиться с ней и переродится в нечто иное. Со временем эти чужаки стали выходить за пределы измерения, всё чаще выходя на дороги Цепи и сталкиваясь с прочими её обитателями. Они несут с собой странные новые способности и порядки, а также большая часть привычного оружения оказалась неэффективной против этих необычных новичков. А ещё, помимо расплодившейся фауны и флоры, героям угрожает таинственная Рой-Технология — скопища мелких искусственных созданий с единым разумом.

h0ulit3xp9h4gpofw8u_o-wjrcq.jpeg
Порочная сестра

Ходят слухи, что Сёстры утаскивают части павших куда-то далеко, для своих тайных экспериментов. Еретики ведут себя понятнее всех остальных, издали сойдут за привычный мехос, берутся за привычную торговлю, да и советники их привечают. Кукловоды со своими охранными дронами обычно заняты какими-то своими исследованиями, а вот Матроны ведут себя достаточно агрессивно.

afrqd_gizzeoqvv8r-x8_oxozqi.jpeg
Глубокозависимый

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

cezhpqwcuvd0fou1328vma3niqu.jpeg
Дочь спирали

Примерно такая вырисовывается история.

Мехосов придумалось много, ниже можно взглянуть на оставшихся:

Концепты мехосов

Помимо самих рендеров для каждой машинки записал демонстрационный мини-ролик, где они вращаются вокруг своей оси. Рендерил в Blender 2.79. Дело это, конечно, не быстрое, но решил писать в 640 на 480 — вроде хватает. Пару первых анимаций делал на 60 кадров, затем удваивая каждый в видеоредакторе. А дальше стал делать более плавные, уже в 120 кадров.

Остальные мехосы вращаются тут:

Анимация мехосов

А ещё модельки можно вставить в тот самый воксельный движок, для всевозможного моддинга и расширения базового контента. Вот посмотрите на Еретика, которого tractor tractor залил через конвертор в игру:

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

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

0bbm7y04ndq5mdjammkyypc2c2o.jpeg

Итак, в начале у нас имеется зародыш, который развивается в летающее «насекомое», потом превращается в оружие на ножках. Оружие — это симбионт, который крепится к машинкам и позволяет им стрелять. Через некоторое время или после определённого количества владельцев, набухает и окукливается. Затем куколка развивается и в конце из неё появляется машинка.

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

Сам Unity-прототип можно скачать здесь: https://www.dropbox.com/s/zxd8mn3gv767kzx/novang_v1.7z? dl=0
Кнопка С переключает камеры (следующая после основной, свободная — можно приближать и отдалять колёсиком), кнопка R перезапускает локацию (пригодится, так как машинки легко могут застрять, а прыгать пока не умеют), стрелки вверху экрана переключают между доступными мехосами (с интерактивными объектами полноценно взаимодействует только основной).
Весит демка 65,9 Мб, под 64-битную ОС.

p5ys8a7moluwac2ft80azpnefmm.png

Проект XPL

Теперь что касается другого прототипа. Он тоже в некотором роде вдохновлён Вангерами. Хотелось чего-то странного, с похожей стержневой идеей, но не копию. то есть хотелось делать именно что «не вангеров», а нечто своё. Со странными мирами, таинственными местами, поиском необычных штуковин, открытиями и вобще какой-то геймплей, не завязанный на текст. Мне обычно нравятся всевозможные представители «гоночного» жанра, если процесс не перегружен лишними деталями и реалистичным окружением. То есть привлекают аркады, а не симуляторы. В то же время, наматывать ровно нарезанные круги — занятие не самое приятное. Хочется всё-таки открыто исследовать некий мир. От этого и решил отталкиваться.

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

Начал с кубиков:
m7b3kmp0kctkr87bocdsbsm94lw.jpeg
Не совсем кубики, но вы поняли

После первых покатушек пришло некое понимание куда это всё можно развивать. Моделька усложнилась, появились какие-то наброски локации:

yt1wazlbtrma1tobogxzy5affne.jpeg
Болид 2.0

0uc6dl3-reblborjcrbnldzvzo4.jpeg
Стартовая локация

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

Тем временем, первая итерация идеи выглядела как-то так:

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

qk9vxmitnytov3jrm0k4n0hsky4.png

scx46lyqa76pkghnisgn3zk3lhq.png

g7qrvdaq5nbvkijqtwnhijgvxb4.png

Но вы же понимаете, что модель хочется сразу добавить в движок, чтобы даже хотя бы банально увидеть её в движении, так как рендерить простую анимацию в Cycles — это уже довольно долго. Проблема только в слишком большом количестве полигонов, хотя современным движкам можно скармливать и не такое. Однако, хочется чтобы аккуратно, красиво и производительно, что называется «по классике». Благо моделька была не скульптом, к тому же моделилась через симметрию, поэтому полноценной ретопологии не потребовалось и оптимизация сетки прошла быстро:

ub_pn29jrvozbviq-yhjscvzpkm.jpeg

vfbbhpk2nfqhyixgc5l5xxm5iie.jpeg

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

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

Немного скриншотов

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

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

2vkxmkvahrmzkwnwrea9f39h9bw.jpeg

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

antewiu1jphtkvhjpzuatukx9hc.jpeg

2qtvhimd0pajmeybmyrsxglkioi.jpeg

Прототип выложен тут: https://www.dropbox.com/s/ixl0fjppn9cw3ix/XPL_64.7z? dl=0
Прыжок на пробел.
Весит около 45 Мб, версия для 64-битной ОС.

Итог

Ну что же, на этом у меня пока всё. Надеюсь поездка была приятной и не утомительной.
Удачи вам в разработке ваших проектов!

Habrahabr.ru прочитано 3198 раз