Mirrel
> Зато человек делал, делал игру и вдруг выясняет, что он не сможет её запустить на том устройстве, на котором он хотел.
Он, наверное, будет из тех, которые на вопрос "А на каком языке ты там пишешь?", в ответ выдают: "Да я хз, я вайбингом кодю." "А почему юнити то?" "Нуууу, потому что он популярный" 😁
Monika
> Узнав что UE использует не OpenGL, что сделаете, пойдете в другой движок?
Ну да. Мне вот интересен веб, и в некоторой степени мобилы, так что увидев, что годохла 4 вышла с одним вулканом, похерив все остальные рендеры, я на нее просто забил. Не смотря на то, что потом начали костылить все это туда обратно, возвращаться к нему даже не планирую. А в остальном же инструмент подбирается под планируемые задачи. Если в планах веб, было бы извратом идти и осваивать анриал. Хотя да, таких в наше время тоже хвататет, что и новеллы, и крестики нолики на анриал лепят. Так им и нужно 😏
IPcorp
> "А почему юнити то?" "Нуууу, потому что он популярный"
И еще потому что он может легко заблокировать российские аккаунты!
Это же так приятно!!!
P.S. Не удержался. Сорри!
IPcorp
> Мне вот интересен веб
Я как-то давно для геймджема делал игру, метался между годотом и анриал. У годота в тот момент вообще все печально было, даже не запускалась игра в браузере, а у UE приходилось откатываться на старую 4ую версию, где ещё не сломали веб.
Больно было
У меня щас вся надежда на новый WebGPU
У него апишка схожа с DX и Vulkan (тоже есть буферы команд и очедери), но сделано так безопасно, что вероятность прострелить колено кратно уменьшается
Пока смог заставить движок только треугольник рисовать, но в целом, если пару недель посидеть, то можно порт сделать более менее полноценный
/A\
> Попробуй написать большой проект на OGL, сразу захочешь его (OGL) выкинуть и взять что-то нормальное.
Самому и большой проект. Тут без разницы что использовать, результат будет один. А если не самому тоже без разницы что использовать, но вероятность другого результата уже повышается.
Спор какая графического библиотека круче, это спор ниочём. Они все гадость. Но современные движки их все поддерживают. Так что лучше не спорить, а реализовывать лучшие мировые практики, да так что бы в коде переключения между разными рендерами с разными библиотеками занимало одну строку кода, то есть делать всё модульно.
RikiTikiTak
> а реализовывать лучшие мировые практики, да так что бы в коде переключения между разными рендерами с разными библиотеками занимало одну строку кода
Ну как бы по лучшим мировым практикам, и переключения между разными рендерами одной строкой не должно быть (разве что только для дебага), а в рантайме у юзверя должен определяться поддерживаемый лучший рендер и он юзаться. Нет поддержки вулкана, откат на OpenGL. Двигло, вроде как, целиком скачивается, api для разработчика же унисекс для платформ. Разве что не в коде, а в самой среде изначально есть выбор желаемого рендера для билда, но это не такая уж и "лучшая" практика. Хотя в этом случае билдится лишь с нужным рендером и под целевую платформу, что сказывается на размере билда, правда сегодня там экономия не особо.
А так то, тут кто как это обыгрывает. Вот в Cocos Creator, еще на стадии разработки можно прям в среде разработки выбрать модули, которые в билд попадут (это я уже не про рендеры а вообще). Если делаешь 2д, можно 3д с физикой вообще не включать. Если 2д еще и без физики, то и здесь физику можно убрать. В плане веба так вообще сейчас мейнстрим это tree shaking, когда в сборку подпадает лишь то, вызов чего действительно используется лишь у тебя в коде. Тут даже движок можно юзать с тоной всяких плюшек и приблуд в сумме в какой 1Гб, а на выходе получить лишь билд в несколько метров (ну или десятков метров). Но это для веба, где размер все еще критичен. В стандалоне пк это сегодня особой роли не играет, можно и все рендеры тянуть, часть среда при сборке при выборе целевой платформы должа отсеивать, а нужный среди оставшихся в рантайме выбирается.
Как итог, разработчика в идеале вообще не должен парить этот вопрос. Он просто кодит игру, выбирает платформу для билда, и на этом все. Как-то так.
Monika
> У меня щас вся надежда на новый WebGPU
Ну вроде как это лишь универсальный слой со своим api, а не рендер. Под капотом он все равно, в зависимости от платформы, юзает либо вулкан, либо directx, либо метал. Я вот бы не парился изначально с поддержкой всего и вся, юзал бы один вулкан. Главное же апи для разработчиков грамотно нарисовать, а остальные рендеры всего потом можно подтянуть.
IPcorp
> Ну как бы по лучшим мировым практикам, и переключения между разными рендерами одной строкой не должно быть (разве что только для дебага), а в рантайме у юзверя должен определяться поддерживаемый лучший рендер и он юзаться.
Фигню какую то пишешь. Причём тут рантайм, я так понял это про реальное время. Зачем это вообще пользователю нужно, я так понял это ты про игрока пишешь. Я твой сленг не понимаю.
RikiTikiTak
> Но современные движки их все поддерживают.
Я делал поддержку 5 апи, это большой гемор даже если не нужно обходить баги в драйверах. В одиночку более-менее реально тянуть 1 апи типа вулкана, учитывая сколько там обновлений сейчас.
/A\
Это всё понятно. Но вот реальный пример, какая то игра делается уже 30 лет и вот вдруг прилетают инопланетяни и привозят с собой новую имба айпи. Так вот смысл в том что бы эту имбу можно было подключить меняя лишь одну строчку кода в движке.
Дальше вот ты пишешь за вулкан, кто то тут пишет что лучший рендер это на процессоре, а есть некто для кого ассемблер это его жизнь. В одиночку нет смысла тянуть это всё, но для разных нетакусиков может и стоило бы предусмотреть такую возможность.
Я вот например в вулкан не верю, у меня какие то проблемы были в балдур гейтсе 3, там можно было переключаться через разные ярлыки между ним и диретыксом. Но я не помню в каком случаю игра лучше работала.
Metallist64
> Вы же делаете продукт для программистов. Они не только под капот полезут.
> И выпилив OpenGL, вы выпиливаете огромный пласт потенциальных пользователей.
Смелое заявление, давайте проверим сколько игр на UE/Unity в Steam имеют нативную Linux версию?
Из моей библиотеки 3, остальные программисты видимо поленились нажать чекбокс и заменить \ на / в своём чудокоде (не говоря даже о переписать на std::filesystem::path)...
П.С. причем иногда доходи до абсурда, для MacOS у них есть версия для Linux нет...
RikiTikiTak
> Но вот реальный пример, какая то игра делается уже 30 лет и вот вдруг прилетают инопланетяни и привозят с собой новую имба айпи
Не знаю насколько вы знакомы с актуально повесткой, но сейчас флёр на то чтобы писать как хочешь/можешь, а потом прийдёт нейронка он инопланетян и перепишет всё на имбо-язык с квантопространственной оптимизацией.
Не отвлекайтесь, продолжайте, впереди 31, 32, 33...
П.С. За реальный пример спасибо!
П.П.С. Отдельно спасибо что верите, что какой-то api может спасти/сделать игру!
RikiTikiTak
Ну ты бы как минимум, прежде чем отвечать, запромптил бы чего не понял в какую нс, она бы те и объяснила. Мне все разжевывать это во много текста пришлось бы. Твое
> так что бы в коде переключения между разными рендерами с разными библиотеками занимало одну строку кода
это явно про разработчика игры. Что вообще значит твое "переключения между разными рендерами с разными библиотеками"? Если ты захотел какой dlss и одной строкой выставил вулкан или директ, у юзера без его поддержи ниче не запустится, даже если опенжл у него в наличии. Если же поставишь опенжл, тогда у юзера вулкан мимо и dlss нет смысла вообще включать. То бишь сам движок должен определять, какой рендер доступен, и все современные движки типа юньки и анриала настроены автоматом на юзанье вулкана, директа или опенжл, и что доступно чекается на этапе запуска игры у игрока. Если у игрока доступен вулкан или директ, тогда будет инициализация dlss, если только опенжл, плагин dlss даже загружаться не будет. Еще раз, это все на автомате без всякого для разработчика "переключения между разными рендерами с разными библиотеками в строку кода". Можешь в настройках игры позволить игроку явно указывать рендер, то же самое, если он включит опенжл, dlss работать не будет. Что ты там в одну строку кода переключать собрался, не совсем понятно, если это только не переключение рендера самим игроком. И да, как уже должен был заметить, все это именно что в рантайме, то бишь после запуска игроком игры. Устал писать, че не понятно, гугли или спрашивай нс.
Для разработчика же игры наружу должен торчать лишь универсальный интерфейс, не важно, какой рендер игра потом выберет при запуске. И в идеале даже не должно быть при разработке чеканья флагов api самих рендеров, если ты, как разработчик игры, где-то кодишь функционал какой-нить фичи, которая есть, к примеру, только в вулкане, для остальных рендеров самим движком юзается альтернативная для них реализация. Вот здесь один из самых больших геморов для двиглописателей. Твое же переключение, как у разработчика игры, может быть обосновано либо дебагом, либо, чекая флаги доступности того или другого движка, какой оптимизацией, когда ты прям в теме самих рендеров, и хочешь для каждого свою кастомную реализацию для производительности, или еще чего, какой-нить фичи. Терь все сказал 😩
IPcorp
> Что вообще значит твое "переключения между разными рендерами с разными библиотеками"?
Вот в 3д редакторах и юнити есть меню там можно выбрать на каком рендере будет работать. Про разные библиотеки я написал, то что нет наверное смыслы делать два рендера на одной библиотеке. Я эту тему затронул потому что тут годами спорят какая библиотека круче или без библиотеки, но сам рендер по объёму кода это пара процентов от всей игры, да и в движке еще полно другого кода, мне вообще пофиг по какому алгоритму будет всё отображаться.
Про то что игра что то там сама выберет при запуске первый раз слышу. Обычно если есть возможность на разных алгоритмах запускать, то это делается путём добавление другого ярлыка, видел ещё в комментариях писали что в самом ярлыке какую то команду надо добавлять. В самих опциях я не встречал, но допускаю что может где то есть такое.
Я писал за архитектуру кода.
Nikitron
> Отдельно спасибо что верите, что какой-то api может спасти/сделать игру!
Я не верю, я знаю что прилетят инопланетяне и нам всё сделают. А нейросетевый сектантов терпеть не могу.
RikiTikiTak
> А нейросетевый сектантов терпеть не могу.
Прямо бальзам на душу!
RikiTikiTak
> знаю что прилетят
ясно-понятно, а докапываюсь что у вас все аргументы вида верю/неверю, а тут вон оно что...
Версия прыгнула с v0.0.7 на 1.0.0-dev - Monika вы не слишком безумны там?