Как стать автором
Обновить

Комментарии 19

в отрыве от анриала использовать это чудо, как минимум странно:

-нет ни выравнивания по ширине, ни "обтекания" текста, ни возможности встроить ссылки в текст

-нет визуальных эффектов скажем bloom

-нет возможности организовать уи по слоям(как скажем в юнити) или трейсить элементы уи под мышкой

если бы таковое решение выпустила нонейм компания оно бы даже внимания не удостоилось не то, чтоб статьи

в отрыве от анриала использовать это чудо, как минимум странно

Возможно, но только потому, что так раньше мало кто делал. Это сейчас довольно трудозатратный процесс.

нет ни выравнивания по ширине, ни "обтекания" текста, ни возможности встроить ссылки в текст

Не соглашусь. Как раз в рассмотренном приложении SlateViewer есть отличный пример с демонстрацией и возможностями форматировать текст. Всё из перечисленного там есть.

Rich Text tab in SlateViewer
Rich Text tab in SlateViewer

В крайнем случае есть возможность рендерить UI в Slate приложении на базе html+css+javascript по аналогии с приложениями Electron

нет визуальных эффектов скажем bloom

Тоже не соглашусь. Опять же в демо приложении SlateViewer есть куча разных демонстраций для эффектов любых UI элементов управления, начиная от анимаций и подсветок "из коробки" и заканчивая возможностью накладывать самописные шейдеры на элементы.

нет возможности организовать уи по слоям(как скажем в юнити) или трейсить элементы уи под мышкой

Странно. Может быть мы с вами друг-друга недопоняли и говорим о разном? Там всё это есть. Возможно вы говорите о UMG. Но UMG - не совсем одно и тоже, что и Slate. У UMG, конечно, возможностей поменьше чем у Slate, но всё равно, даже в нём есть возможность организации UI по слоям и возможность трейсить UI элементы под мышкой...

если бы таковое решение выпустила нонейм компания оно бы даже внимания не удостоилось не то, чтоб статьи

Это субъективно. Хоть Slate и является частью UE, и используются сейчас в основном только EpicGames, но програмные продукты написанные на Slate выглядят хорошо, что побуждает меня сделать вывод, что Slate - достоин обзора.

EpicGamesStore, кстати, тоже написан на Slate.

>EpicGamesStore, кстати, тоже написан на Slate.

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

Это субъективное мнение. Мне кажется тормознутость, глючность и тяжёлость там вовсе не из-за Slate, а из-за реализации.

Unreal Editor тоже написан на Slate и обладает теми же недостатками, но в 99% случаев глюки и тормоза не из-за Slate модуля. По редактору проще судить, потому что его код открыт.

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

Unreal Editor аналогично является очень жирным и тяжелым с точки зрения отрисовки. Как-нибудь сделайте профайлинг и посмотрите какой бюджет уходит только на то, чтобы рисовался сам редактор.

Далее, у слейта просто отвратительная работа с текстом при анимации (движении) оного. Отсутствие банального набора эффектов для текста, адекватного rich text и встраивания картинок, невозможность настраивать банально расстояние между строками кроме как в шрифте, и все это наложенное на извращенную систему локализации и поддержки "шрифтов для разных локалей".

Мне честно будет очень жаль того разработчика, кто будет сидеть и делать "софт на слейте" :)

Только вот ImGUI весит десятки мб, Qt порядка 1-1.5гб, а все что нужно для сборки Slate (так и не понял что конкретно нужно собирать) будет весить до 100гб (если собирать весь движок), архив с исходниками весит до 500мб, распакованный 3-4гб, потом качат порядка 12гб и папка с исходниками разрастается до 40-60гб (точно уже не помню).

Приложили бы бинарники примеров. И пару слов о весе приложения. От imgui вес не сильно подрастает, порядка мегабайтов, типичный размер qt это 10-25мб, а тут если как пустая игра то 200мб. Имхо для пустого окна даже размера qt очень много, не говоря про slate.

Хорошее замечание! Думаю стоит добавить эту информацию в статью и немного описать что-где-куда собирается. Увы, действительно это боль, что исходники Slate пока существуют только с огромной кодовой базой движка. Но бинари пустого приложения действительно весят 227 MB в Development сборке весят 32.6 MB не считая .pdb файла. Думаю в сборке Relese будет меньше, но в данный момент я точно не могу сказать.

Я соберу подобную информацию и добавлю её в статью.

Справедливости ради, размер итогового бинарника самого по себе ничтожен, основной размер будут составлять ассеты (текстурки, шрифты и прочее). "Пустая игра" на анриле занимает порядка 30 метров, в случае "slate only" и того меньше.

Дополнил статью.

А именно добавил список шагов, которые помогают понять, что нужно сделать и собрать, чтобы получить автономное Slate приложение. И добавил табличку с данными о том, что сколько весит.

Большой минус Slate - практически полное отсутствие документации и примеров.

Все что есть рассчитано на использовании только в качестве HUD, всяких внутриигровых менюшек ну и для плагинов к редактору.

Это верно. Поэтому и думаю периодически что-нибудь писать про Slate, чтобы хотя бы в русскоязычном сегменте появились какие-то статьи, примеры и пояснения.

Имхо, слейт совершенно не предназначен для stand-alone приложений. Вся его архитектура завязана на полноэкранное обновление и отрисовку в 3D сцене, под нужды игр в первую очередь, с подходом к использованию ресурсов системы "под себя" именно в приоритетной манере, т.к. трехмерные игры - не то, что крутится на фоне. Слейт для игр то не является идеальным вариантом (более того, стал юзабельным только при появлении UMG), и очень далек от быть таким, но из-за глубокой интегарции в движок - является по сути единственным настоящим вариантом для использования. Не-кеш-френдли, однопоточный, с декларативным языком верстки "в плюсах", с форсированной полноэкранной отрисовкой, с багажом необходимости кукинга и всего шейдерграфа анрила с нужным и не нужным. Да любой Qt или электрон (упаси Кармак) по своим возможностям "для обычного софта" делает как тузик грелку.

Я думаю Slate так или иначе достоин внимания. Да, он не идеален (идеального вообще ничего нет). Да, он является побочным продуктом от UE4, и, возможно, именно поэтому он не так хорош как мог бы быть. Я не топлю за то чтобы тотально писать программы на Slate, а лишь рассказываю что такая возможность есть.

В любом случае, Slate это полноценный UI-kit, хоть и неотделимый от Unreal Engine. Не так уж и много существует кросплатформенных фреймворков или SDK для UI на C++. Мне кроме QT и ImGUI в памяти ничего не всплывает. Может быть именно поэтому мне эта тема показалась очень интересной.

Если бы Epic Games отделили бы Slate от движка и отправили бы в свободное плавание openSource, я думаю его бы быстро оптимизировали, улучшили и повысили бы качество. Всё в наших руках, было бы желание...

При этом статье плюсик, указание на Blank<Smtm> набор проектов - хорошее, направление на slateviewer - тоже интересная штука.

Кстати, а с каким тик рейтом будет работать это приложение?

Посмотрел сгенерированный код...

Это *дец сколько лишних телодвижений(кода) для создания пустого окна...

Про систему сборки я вообще молчу - добавить файл в проект тот еще квест =\(Хотя это общая проблема для UE)

В Qt том же все намного проще...

Еще раз убедился в том, что Slate не подходит для создания GUI =\

Ну так для этого этот код и генерируемый) Чтобы лишний код не писать руками. Если взять это добро и оформить в нормальную библиотеку, то ничего из этого "торчать" на показ не будет. Если QT "под капот" заглянуть, то там тоже куча телодвижений для создания пустого окна. Просто оформлен он так, чтобы для конечного пользователя это было спрятано. А Slate никто не оформлял, он не предназначен был для шаринга широкой публике.

У Slate необычный способ вёрстки и биндинга данных, а то что я описал в статье - это скорее относится к "не нормальному" применению Slate. В статье я рассказал про такую возможность. По мне, так в этом есть потенциал.

добавить файл в проект тот ещё квест

Эта проблема полностью решена в IDE Rider for Unreal Engine. Там просто берёшь и добавляешь файл. Всё. Увы, Visual Studio так не умеет в unreal проектах.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории