Альтернативные прототипы с биомашинами (и не только биомашинами), которые я собрал во время знакомства с игровыми движками Unigine 2 и Godot 3.
Двигатель Unigine
Начнем с версии Unigine. Мы используем версию 2.11, выпущенную этой весной, начиная с которой в движке появилась свободная лицензия.На данный момент выпущена версия 2.12, скоро ожидается выход версии 2.13. Что вообще стоит знать о Unigine, так это томский игровой движок, часто используемый для тестов и симуляций.
За прошедшие годы она выпустила такие игры, как Oil Rush, Cradle и, например, относительно недавнюю ммо Dual Universe. Внутри использовано довольно много интересных и перспективных решений, он выдает довольно красивую картинку и может быть весьма привлекательным для художников, особенно если моделировать в отдельном 3D-пакете, а не использовать сам движок.
Ландшафт здесь есть из коробки, как и вода, облака, волюметрики, проекторы и прочие полезные вещи.
Поверх местности наносятся различные маски для детализации и прочего — очень крутой инструмент для создания ландшафтов, хотя с точки зрения удобства использования есть куда совершенствоваться.
В качестве инструмента для разработчика игр здесь в принципе применим опыт использования C# в Unity, хотя Unigine не имеет такого разнообразия готовых компонентных решений.
Однако некоторые основные вещи реализованы, а написать остальное поможет документация.
C++ также никуда не денется.
Движок пока не пригоден ни для мобильной платформы, ни для разработки без программирования (хотя его планируется развивать в этих направлениях).
Аппаратные требования на уровне запросов Unreal, минимальный вес файла приложения довольно большой.
Но он красивый и хорошо оптимизированный.
Но вернемся к прототипу игры.
В версии для Unigine основные трудности были связаны с визуальным оформлением физики для машины, поскольку документация предлагает все это делать вслепую, через код, к тому же всякие физические настройки разбросаны по разным местам редактора и Сам конвейер визуальной сборки не описан.
То есть не было банального готового примера, который можно было бы модифицировать, не вникая во все нюансы.
В 2.12 вроде была демка с трактором, копающим землю, но возможно ее собрали заново с помощью кода, эту часть не смотрел.
Как бы то ни было, машинку я более-менее собрал, ориентируясь на документацию.
О чем я ранее писал в соответствующей статье: Как я собирал физику колес в Unigine .
Что касается геймплея, то в Unigine, в отличие, например, от Unity и Godot, оказалось довольно легко на лету переключать физику автомобиля, причем не только визуальную составляющую, но и расположение/размер колес.
Не придумывая дополнительных ухищрений, чтобы не провалиться сквозь пол, и не воссоздавая модель.
Хотя, некоторый шанс попасть в текстуры есть, но совсем в других ситуациях, а не в момент смены машины.
Со всем этим хорошо сочетается концепция единого транспортного средства, которое просто меняет свою форму, трансформируется, адаптируется, видит происходящее в других измерениях и так далее.
По крайней мере, основной игровой процесс может быть построен на этих переключателях, хотя и не обязательно.
Что печально в движке, так это сборка UI из редактора — всё как-то громоздко, на каждый интерактивный элемент висят отдельные скрипты.
Хотя здесь я редактировал только ту реализацию, которая была в примерах, я мало что понимал, да и не сразу понял, как отобразить gui-слой, чтобы увидеть визуальное представление в редакторе.
С другой стороны, если вы имеете в виду более консольно-ориентированную игру, про геймплей, завязанный на небольшом количестве кнопок, с минимальным использованием интерфейса и с минимумом элементов интерфейса, то это перестает быть заметной проблемой.
Еще одна удручающая вещь — простые анимации, записанные на внутренний трекер.
Да, он по-своему мощный, но слишком громоздкий для использования.
Мало того, записанную таким образом анимацию можно воспроизвести только с использованием устаревшего языка UnigineScript. Это в то время как в Unity или Godot можно анимировать буквально всё по периметру.
Да, можно импортировать анимацию костей, но это немного другое (к тому же я этот метод еще не пробовал и не знаю, как он работает).
Если опять же посмотреть на это с другой стороны, то движок всё же больше ориентирован на физические симуляции и взаимодействия, так почему бы не использовать это вместо запекания каких-то предустановленных анимаций — то есть делать какие-то эмиттеры, переключатели , взаимодействующие структуры, приложение сил, использование гравитации и так далее.
Так что можно обойтись и без внутреннего аниматора, но если его правильно реализовать, то это тоже большое дело, по крайней мере, даже в плане режиссуры - в несколько кликов можно зафиксировать полет камеры по сцене со всякими интерактивами.
элементы, и вот вам готовый фильм.
Тем более, с такими возможностями кинематографических образов.
Что касается моего проекта, то на данный момент после нескольких итераций я наконец собрал и выложил более-менее полную демо, которую можно протестировать.
Архив для Win64 можно скачать здесь (вес 687МБ): ДРОПБОКС или на странице itch.io: НЬЮАНГЕРС в распакованном виде занимает 3Гб Что здесь:
- В сборке имеется три основных режима отображения — «день» и «ночь» (с предустановками высоких настроек графики), а также режим «а-ля комикс» (с более низкими настройками графики).
- Для переключения между режимами нажмите Esc, чтобы отобразить курсор мыши, и выберите нужную опцию в меню слева вверху.
- На уровнях присутствуют интерактивные объекты - синие порталы в форме звезды, проезжая через которые машина переносится в другие миры и можно вернуться обратно, заехав в портал с другой стороны.
- Многие объекты уровней являются проницаемыми, но у некоторых есть коллайдеры, а сами уровни более или менее окружены блокирующими стенами.
- Машина в основном управляется кнопками WASD. Вы также можете стрейфить, используя Q и E. Прыгайте на пробел или, наоборот, мчитесь сильнее к земле, нажав R. С помощью Tab вы можете вращать машину, чтобы, например, перевернуться и встать на колеса.
- Никаких ограничений на стрейфы и прыжки не установлено, то есть во время прыжка можно прыгать дальше и так далее.
- Кнопки 1,2,3,4,5,6,7 - переключают разные автоматы.
Вы можете использовать колесо мыши, чтобы слегка приблизить камеру.
- Левой кнопкой мыши можно заполнить все вокруг небольшими блоками, а правой кнопкой мыши создаются светящиеся «волшебные» сферы.
- PgUp включает альтернативный режим колес, поворачивая оси в другое положение.
PgDown — возвращает их в нормальное состояние.
- P - выход из игры, L - перезагрузка с откатом на начальный уровень.
Чтобы вернуться в нормальное состояние, нажмите M. Знакомый выложил на своей странице более ранние исходники этого прототипа вместе с некоторыми изменениями в физике колес оригинальной версии: ГИТЛАБ .
двигатель Годо
Перейдем к следующему двигателю в нашем списке.Компактное решение с открытым исходным кодом и огромными возможностями (Blender из мира игровых движков), но, опять же, всё же уступающее Unity по разнообразию готовых компонентов.
Хотя различных неофициальных решений, а также примеров с исходными кодами для Godot уже написано достаточно много, и благодаря относительной простоте/быстроте реализации нового функционала, на данный момент это нельзя назвать проблемой.
момент. Godot имеет больше репутацию 2D-движка благодаря множеству хорошо разработанных инструментов специально для 2D, но они являются дополнительным преимуществом для 3D — гораздо проще создать игровой пользовательский интерфейс.
На мой взгляд даже проще, чем в Unity. На данный момент Godot в своей разработке дошёл до стабильной версии 3.2.3 (но все ждут 4 из-за вулкана, оптимизаций и т.п.
Кстати, уже можно попробовать хлипкие сборки 4 - на хотя бы оценивайте картинку).
Движок не требует мощного оборудования для 3D-графики и выдает вполне приличное изображение.
Готовых трехмерных инструментов не так уж и много, но реализовано несколько самых нужных, полезных и универсальных.
То же самое касается и оптимизаций.
Например, движок реализует обычное отсечение усеченного изображения, которое отсекает геометрию за пределами зоны видимости камеры.
Отсечение окклюзии (чтобы не считать объекты, закрытые стенами) реализацию придется придумывать самостоятельно (что не так уж и сложно, особенно в некоторых точечных местах, да и не в каждой игре это необходимо).
Также из коробки в движке нет батчинга геометрии (хотя для gles2 он частично доступен) и ландшафта, но это не такая уж проблема, просто надо что-то оптимизировать вручную - сшить какие-то меши, разбить геометрию на мелкие части или использовать куски и так далее.
Вы можете найти какую-то реализацию в местном небольшом магазине, например, добавить в свой проект готовое решение по ландшафту.
Интерфейс движка, кстати, достаточно продуманный и настраиваемый (хотя и есть некоторые негибкие элементы).
В целом удобно пользоваться.
Поддерживаемых языков достаточно для разных уровней погружения.
Есть C++ и C# и довольно удобный внутренний GDScript, который запускается прямо внутри редактора, не требуя запуска отдельной среды.
Визуальное скриптование тоже присутствует, так что в Godot тоже можно жить без знаний программирования — сконструировать какую-нибудь минимальную логику, что-то анимировать (у Godot есть простой и крутой инструмент для записи анимации).
Легкость приложения, мультиплатформенность, скорость разработки, простота внедрения различных сторонних решений также являются важными преимуществами движка.
Есть два варианта рендеринга — gles2 и gles3, оба поддерживают 3D, но в первом он проще и в целом больше подходит для 2D и мобильных телефонов.
Gles3 обеспечивает более продвинутый уровень графики; некоторые мобильные устройства также поддерживают его.
Перейдем к прототипу игры на этом движке.
В Godot простая физическая модель транспортного средства поставляется практически из коробки, поэтому перенести сюда свои машины было довольно легко.
Вот здесь и возникли некоторые проблемы — не так-то просто вмешаться в бегущий физический объект, чтобы, например, телепортировать его из одной точки в другую или на лету изменить расположение колеса автомобиля.
Поэтому здесь такой трюк как в Unigine не работает и, насколько я понимаю, в Godot проще воссоздать объект, чем менять на лету его физическую конфигурацию или что-то подобное.
Но на самом деле все это не особо-то и нужно, и в этом прототипе я просто вернулся к стандартной идее геймплея, когда вы ездите на разных машинах, переключаясь с одной на другую где-то в специальных отдельных местах.
В Godot есть интересные инструменты, такие как объекты CGS и мультисетки.
Подробнее об особенностях их использования я писал в статье: Годо, 1000 мелочей Прототип «Невангера» на этом двигателе получил отдельное название — Дикие двигатели .
В общем, у меня получается семейство подобных проектов, объединенных концепцией странных автомобилей, путешествующих по странным мирам.
И как рабочее собирательное имя я привык называть их Невангерами, пока не появится более конкретное имя.
Прототип Godot теперь имеет свое имя, версия, приостановленная на версии 0.9 Unity (с которой все началось) тоже имеет другое имя, но до него придет позже, если будет время к нему вернуться.
Поначалу у меня как-то не было конкретного видения того, что я хотел бы реализовать в демо Wild Engines, я просто зарисовывал уровни, пытаясь понять, как лучше реализовать ландшафт и какие возможности я хотел бы видеть.
Тогда я решил заставить камеру двигаться за мышкой и стало возможным реализовать более контролируемое прицеливание оружия, чем в других версиях.
Таким образом, этот прототип, скорее всего, станет более ориентированным на использование стрельбы.
Попутно я начал собирать уровень из платформ, состоящих из небольших блоков, пробуя разные подходы к оптимизации и измерению производительности.
Оптимизации оптимизациями, но в какой-то момент я уже настолько заполнил видимую на камере область геометрией, что редактор перестал отрисовывать всю бегущую сцену, выпадая с ошибками.
Это было исправлено путем включения большего объема памяти в настройках.
Затем я больше вынес генерацию платформ в код, оставив на сцене только упрощенные размерные блоки с идентификаторами, которые сами загружали в себя нужную платформу при запуске игры.
После чего я откатил объём используемой памяти на меньшее значение и без проблем увеличил уровень ещё в несколько раз.
Кроме того, при такой реализации всегда есть возможность повторно использовать уже загруженные платформы, перемещая их в другие места уровня, когда машина направлена в ту сторону, чтобы иметь возможность рисовать ими пространство уровня практически до infinitum с теми же ресурсами и без переходов.
Примерно аналогичным образом я потом собирал скетчи аналогичного уровня в Unigine, только там редактор сразу рисует всю сцену без необходимости загрузки платформ в блоки через код (но для Unigine используется гораздо более мощный компьютер).
В результате в демо-версии Wild Engines есть 4 машины, одну из которых вам нужно выбрать для старта, и два небольших уровня (Level A и Level B).
Еще осталась пара ранних карт (Уровни 0 и 1), но они еще более тестовые и ландшафт там не оптимизирован.
В меню вы можете включить/выключить полноэкранный режим и тени.
Кнопки 1, 2 и 3 изменяют положение камеры.
Мышь прицеливается и вращает камеру, тем сильнее, чем дальше находится курсор от центра.
WASD – двигаться.
PgDown – прыжок.
Q – случайный импульс.
Левая кнопка мыши – стрелять.
При нажатии Enter появляется подсказка по управлению и кнопка возврата в главное меню, где можно изменить машину/уровень.
Версия Win64 (42 Мб): DROPBOX wildengines_x64
Версия для Linux (44 Мб): DROPBOX wildengines_linux
Бонус
А вот один из недавно появившихся новых мехов, Некромант: Вы можете покататься на нем в версии Unigine. Еще один новый мех, розовый с синим оттенком, Дебаг, присутствует и здесь, и там.Еще здесь валяется один старый картридж.
по вашему, клоны которого восьмибитные игры могли бы спрятаться под таким названием на китайском картридже, если бы Вангеры были всемирно известной франшизой в те далекие времена ?
Теги: #Разработка игр #Дизайн игр #Прототипирование #gamedev #демо #игровой движок #unigine #создание игр #godot #godotengine #godotengine #vangers #vangers
-
Служба Городской Статистики «Градотека»
19 Oct, 24 -
Космонавтика 2015 На Geektimes
19 Oct, 24 -
Новый Android Маркет
19 Oct, 24 -
Sony Провозглашает «Третье Поколение Игр»
19 Oct, 24 -
Вебмани Кипер Классик 3.5.0.2
19 Oct, 24