Unigine - что изменилось
Два года спустя установил новый клиент данного игрового движка.
Интересно было увидеть - улучшены ли инструменты анимации, стало ли понятнее создание террайна и как все ощущается в целом.
Из заметного - теперь, наконец, напротив узлов, содержащих скрипт отображается иконка и сразу видно, на каком объекте есть логика (если он не спрятан внутри иерархии, конечно).
Слева сверху появилась кнопка Edit Mode, где быстрее можно переключаться между режимами - допустим, отсюда можно включить рисование-редактирование террайна. Правда в настройки террайна всё-равно нужно лезть в его отдельный узел, так что это скорее как панелька урезанного быстрого доступа к некоторым функциям, чем какие-то полноценные отельные режимы.
Что касается анимаций, то да, сам инструмент Tracker для записи анимаций был и раньше. В нём довольно много всего можно крутить и настраивать, работая с уже заведённой анимационной дорожкой, но значительный его минус в том, что любой объект, который хочется анимировать, нужно заносить туда руками, выбирая из списка, а затем из отдельного списка устанавливать те параметры, которые, собственно, мы будем динамически изменять. Ну и сами ключи вбиваются с трудом, скажем так.
Теперь файлы анимации сохранённые Tracker'ом можно проигрывать специальным узлом-аниматором (который пока работает в экспериментальном режиме), однако, он читает файлы не в том формате, в котором сохраняет их сам Tracker. Благо тут же есть встроенная опция конвертации, но работает она в полу-ручном режиме - через неё нужно пересохранить файл в другой формат и вот уже его закинуть в аниматор.
Раньше нельзя было сделать даже так (исключая специфические методы через возню с кодом и откат к устаревшему скриптовому языку), так что это уже некоторый прогресс. Как минимум, всевозможные пролёты камеры заанимировать таким образом вполне можно, уже не прибегая к другим способом анимирования, вроде закидывания костной анимации из блендера и закрепления камеры на одной из её костей. Или прописывания данного движения чисто командами в скрипте. Собственно, данный инструмент был нужен для каких-то несложных вспомогательных анимаций внутри редактора, даже не только игроделам, а вобще любым визуализаторам. Сложные анимации так и так делались через импорт моделей с анимированными костями.
Прибавилось конечно разных графических настроек, обновлений в отдельных областях, вроде переработанной системы облаков, но ничего такого тотального и кардинального особо не было замечено. Для только что вошедшего соло-девелопера, которому не нужны узконаправленные инструменты и какие-то особые новые настройки рендера - юзабилити и возможности остались примерно теми же. Что ранее отлично работало - продолжает отлично работать (правда раньше террейн вроде не пропадал вобще, а сейчас это иногда происходит - то ли при пересечении с плоскостью по которой можно "ходить", то ли по иным причинам). DX12 я включил, но использовать не стал, Vulkan у меня не завелся вовсе, но тут, вероятно, потому что для него нужно что-то доустановить (вроде бы тот же новый Godot стартовал на Vulkan'е сразу, ничего не требуя, но я на винду его ставил давно, ещё в альфе и не помню точно).
В пресетах графики наконец-то видно название текущего пресета, чтобы не надо было ломать голову - какой файл настроек установлен в данный момент.
Вроде бы добавилось новых демо и примеров, но - 14 Гб марсоход и сколько там гб демо с дроном - серьёзно? Кто это качать будет и главное, детально разбираться с этим. Вобщем, все эти новые примеры не смотрел, а если вспомнить старые - то ранее не все демо вобще были оформлены, как готовые к модификациям, то есть запускались как бы во внутренней песочнице, где можно было посмотреть и понять принцип, а пересобирать в полноценный билд это нужно было уже самому, отдельно, руками.
Собственно, я захотел собрать с нуля прототип с машинкой, внутри дефолтного "чистого" проекта. В этом пригодился один из давно написанных мной гайдов, когда я занимался этим всем впервые, в версии движка 2.11:
В принципе удалось сколотить похожий транспорт, примерно следуя тем рекомендациям, хотя там довольно много параметров, которые ещё есть куда подкручивать.
Из странного - раньше не обращал внимания, как-то руки не доходили (кастомные коллизии в основном для статики детально настраивал), но сейчас посмотрел внимательнее на примеры объектов и там есть нечто довольно неочевидное:
Собственно, у тех же кубов кроме основной формы коллизии - куба, есть ещё пачка сферических мини-коллайдеров, которым включен другой режим. Это всё помогает точнее отслеживать коллизии - понятно (у нас тут движок для поддержки всяких симуляций, как никак) но несколько неожиданно реализуется.
А вобще, дело даже не в этом, а в том, что сам куб и прочие примитивы с физикой в дефолтном шаблоне собраны как-то неправильно в логике самого движка. Ведь если я хочу изменить размеры данного куба, то я не смогу это сделать иначе, как создав другой куб, который будет отвечать за визуальное представление, добавлю его внутрь текущего примитива и буду менять размеры уже именно этому кубу, отвечающему за визуал. Вот так:
Почему это происходит - потому что любые скейлы основного куба будут сброшены физикой в дефолтные 1,1,1, а менять размер физического коллайдера нужно отдельно - они не равны габаритам основного куба.
При этом в движке ведь есть узел "физическая пустышка" - ObjectDummy, у которой нет собственного визуала и которую можно сделать rigidbody с назначением формы коллизии. И уже внутрь неё положить желаемый визуальный объект, выставив ему требуемые скейлы и подогнав размер коллизии к его габаритам. Вот в виде таких пустышек с содержимым и следовало бы делать подобные объекты - это было бы более корректно.