Вы видите копию треда, сохраненную 19 августа в 22:26.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Привет, меня зовут Александр.
В небольшой геймдев команде я отвечаю примерно за всё, что связано с визуалом и звуком, и ещё частично игровым дизайном. 3D модели, анимация, VFX, SFX, музыка и много чего ещё. Хочется всё уметь, делать быстро и красиво, а в наличии две руки и одна голова. Как со всем этим справиться? Пытаюсь разобраться. Здесь собираю заметки о том, как куб из Blender постепенно превращается в игровой мир и оживает на движке Bevy.
Привет Александр!
1280x720, 0:50
Это если не "ад", то "пыточная камера" для 3D художника.
Зато кодерам нравится.
В текущем состоянии мы имеем локацию в виде планеты и базовые механьки.
>Зато кодерам нравится.
Это ложь. Все что больше утилиты для линукса - раст превращается в неудобную и неповоротливую шляпу.
Поиграться - норм, самоутвердиться норм, если не хватило мозгов на хаскель. Но работать точно нет.
Прямо как в Обивион без блендинга анимаций. Там тоже враг прежде чем нанести урон должен был остановится, чтобы началась анимация удара.
Да, блендинг есть, тут не кривовато, а вообще пока этого вопроса не касались.
Сколько времени уже ушло? Какие планы?
Именно эту планету уже около года делаем, хотелось бы быстрее, но пока это как хобби проект, исключительно в свободное время.
В этом году планируем довести до минимально рабочего состояния и протестировать на itch.io
Что? На картинке просто дженерик.
Но главная проблема инфраструктуры Rust, что там долго компилируется и бинарники получаются по 50 МБ Или по 2 ГБ если для разработки
Вы бы хоть подробнее описали что тут на картинке, непонятно это сингл или мульти, на какой платформе игра и тд.
3D-экшон суть такова... условно - мультиплеерный сессионный PvPvE-экшен с элементами сурвайвала. Бывают такие ситуации, когда до конца не знаешь, что делаешь. У нас примерно так, потому что это первый опыт. По платформам - рассматриваем пока стим и мобилки, но это не точно. В общем, я этот тред завёл, чтобы немножко рассказывать о творческих муках и интересных находках, постепенно и непринуждённо всё прояснится.
1. Нашëл симпатичных персов.
2. Взял чистый лист и сделал наброски.
3. По своим наброскам замоделил. (Потом ещё заригал и анимировал в миксамо)
>>098760
>>098674
Есть видосик небольшой https://2ch.org/gd/src/1098414/17855156246020056787.mp4
>На картинке просто дженерик.
Какой дженерик, кек. А че дженерики не люди??
Это все сигнатура функции.
Это дженерик-функция, дженерик-метод.
Ну да, есть некоторые проблемы, что для объединения треитов в один надо создавать свой пустой треит и добавять ему зависимости там всякие Copy, Clone, Sync, Send. Но это не так уж и сложно.
У меня у самого плагин для Bevy дженерик от трёх типов.
А с лайфтаймами что, тоже какие-то проблемы?
не, слишком просто)
вообще когда начинали ещё не было таких инструментов типа opencode и собирались именно руками поделать
и потом, в планах было сделать что-то мультиплеерное и кроссплатформенное, и я не знаю насколько юнити такое может потянуть
Пацаны играются в модный раст. Игра тут скучная побочка.
Понадобится не 1, а 3-4 промпта в нейронку.
1. Потому что Rust 🦀
- сам язык: система типов и владения, которая обещает защитить тебя от выстрела в ногу;
- удобные тулы: сборка, управление зависимостями;
- обещает топовую производительность;
- хобби приносит удовольствие, с корпоративными инструментами и на работе поработаешь.
2. Легковесный, не нужно устанавливать громоздкие инструменты, можно пользоваться чем привык
3. Топовая производительность движка с Entity Component System (ECS) и векторизацией доступа к последовательно расположенным сущностям в памяти
4. Интересно понять, как работает движок, при этом не уйти в написание собственного
5. Работает со стандартными форматами, не изобретает очередной кастомный
6. Абсолютно бесплатный и поддерживается сообществом
Конечно, движок при многих своих плюсах имеет и недостатки, т.к. до мажорной версии ещё далеко. Но мы want to believe.
Ниже подборочка самых известных, успешных или многообещающих игр, созданных на Bevy (или использующих его ключевую архитектуру ECS)
https://store.steampowered.com/app/2198150/Tiny_Glade/
https://store.steampowered.com/app/4410710/Fields_of_Aaru/
https://store.steampowered.com/app/2286390/Tunnet/
https://store.steampowered.com/app/2628450/Times_of_Progress/
https://store.steampowered.com/app/2427820/LongStory_2/
https://store.steampowered.com/app/2909010/DEATHTRIP/
https://store.steampowered.com/app/3060580/El_Mono/
https://jarl-game.com/
https://store.steampowered.com/app/2248000/Roids/
https://store.steampowered.com/app/3615720/Exofactory/
>>099205
Ецс это подход пригодный для больших проектов, но не всегда.
А на маленьких только если сама концепция игры такая, что перыорманс может стать проьлемой и дод подход с параллелизмом сможет улучшить ситуацию.
Еще может быть норм для детерминированного мультиплеера.
Из всего что ты перечислил реальная причина юзать раст одна
> хобби приносит удовольствие, с корпоративными инструментами и на работе поработаешь.
Всё остальное есть и в других языках.
>язык для крутых бородатых мужиков которые пищут блейзинговый 0.1 наносек код
>система типов и владения, которая обещает защитить тебя от выстрела в ногу
этот же суровый мужик прячется от своей криворукости у компилятора под юбкой
>- сам язык: система типов и владения, которая обещает защитить тебя от выстрела в ногу;
Побеждает проблему ручного управления памятью, то есть ту проблему которой не было у C#/lua/js/GDscript... программистов. Действительно.
>- обещает топовую производительность;
Обещать не значит жениться, можно просто подключить библиотеку и слететь на порядок по производительности.
Уметь писать оптимизированный код, это отдельный скилл (10%) и тонна исследование с замерами (90%). Зато раст компилируется ппц как долго и бинарь размером с дом.
>- хобби приносит удовольствие,
Мастурбация тоже, но мы об этом не говорим на каждом углу.
>2. Легковесный, не нужно устанавливать громоздкие инструменты, можно пользоваться чем привык
Чтобы собрать на винде тебе надо поставить 7-8 гигов С++ компоновшика, плюс еще вижлу подтянуть (это отдельный размер).
>3. Топовая производительность движка с Entity Component System (ECS) и векторизацией доступа к последовательно расположенным сущностям в памяти
Было с чем сравнить, или просто берем за веру? ECS это не какая-то технология будущего, это подход к организации данных, который несет свои издержки и не всем ECS с такими издержками нужен (простыми словами неудобно, для такого неудобства должна быть реально необходимость).
>Интересно понять, как работает движок, при этом не уйти в написание собственного
Читать сорцы раста с зоопарком трейтов - та еще радость. Для годот даже натянули упрощенный С++, потому что люди ходят развивать проект, упрощая сопровождение кода, а не мастурбировать свое ЧСВ (опять же ЧСВ для слабеньких, кто не осилил реально академический язык - хаскель)
>Абсолютно бесплатный
В эпоху изобилия языков и инструментов - еще бы он был платный.
Поговорил с пастой нейронки. Тут должна быть вирусная шутка из ютуба, что движков на расте больше чем игр на расте (но мне лень искать).
>Entity Component System (ECS)
Не очень понял что конкретно в вашейигре надо ECS-ить. Сейчас там буквально две динамические ентити. Персонаж и бегущий за ним говнодемон. Даже если мобов будет одновременно 10+ все равно из пушки по воробьям. Насколько я понял ECS начинает приносить профит если сущностей начинает становится несколько сотен+.
>BEVYBEVYBEVYBEVYBEVYBEVY
>RUSTRUSTRUSTRUSTRUSTRUST
>ECSECSECSECSECSECSECSECS
Это что, филиал движкосрача?
Я вот не понял, о чём игра...
Не сказать что я стал больше понимать, ну допустим, walking simulator на Rust.
Дарю вам нарратив - главгерой это местная разумная форма жизни, кроме него есть несколько рас которые отличаются цветом и формой ушей. Он думает что самые страшные его враги это местные аналоги змей и медведей, но потом прилетают люди с Земли с огнеметами и начинается тотальная прожарка всей планеты.
Не так. Суть ECS и Bevy, в частности, что берёшь придумываешь компонент, делаешь системы, которые обрабатывают сущности и получаешь новый функционал. Хочешь отключить — убираешь систему, хочешь ещё чего добавить — накидываешь новый компонент и систему.
Компонент это обычная ООП вещь, а не ECS специфичная. Это простая композиция с временем жзни равной времени жизни владельца. Поклонники ECS говорят, что главное тут - это чтобы все пролазило в кеш проца, тогда это будет быстро работать. И действительно будет. Но сама архитектура мне напоминает скорее процедурное программирование годное для простых однотипных задач.
Примерно как писали код под микроконтроллеры. Программа в бесконечном цикле пробегается по всем кнопкам пдряд, опрашивает, подавляет дребезг и если какая-то нажата по программа делает переход к обработчику. Это окей, когда у тебя примитивная хуйня типа кодового замка или пульта от телефизора и кроме кнопок и дисплея в твоей программе нихуя нет. В ООП кнопка была бы отдельным объектом класса, которая сама бы внутри себя как-то обновлялась, подавляла дребезг и генерила бы Евенты OnButtonPressed и OnButtonReleased. Кнопка бы ничего не знала о том, чем она управляет, а в процедурке конкретная кнопка должна была пойти с делать какую-то конкретную вещь. И вот ЕЦС мне очень напоминает микроконтроллер.
Изначально ECS придумали ехидные противники НАСЛЕДОВАНИЯ из ООП, аргументируя пользу ECS приблизительно так: "в ООП вам приходится делать огнемётчика потомком солдата, а солдата потомком человека, а человека потомком животного; но если потребуется что-то поменять, дерево наследования чрезвычайно трудно перестроить; ECS решает эту фундаментальную проблему, позволяя собирать все необходимые объекты в рантайме из компонентов".
Когда-то я тоже думал "о, прикольно звучит", а теперь понимаю, что создатели ECS не разобрались в ООП и сделали квадратно-колёсый велосипед, решающий проблему, которой в ООП нет - никто не заставляет разработчиков юзать наследование... тем более если программируешь на скриптовом ЯП, допускающем множество трюков с памятью и указателями...
Т.е. ECS - это что-то для кодинга на Ассемблере.
Спасибо за нарратив!) возьмём на карандаш. Как делать пламя огнемёта, пока не знаю, в vfx вообще ещё сильно не углублялся
1920x1080, 0:16
Тааак... знак "%" в теме не отображается, понел.
Должно было выглядеть так - 5% текстур, 95% vertex color
Если по камням/скалам нельзя полазить, то они в мире не нужны, нарисуйте вместо них ямы без коллизий. А мне сдается, что нельзя.
Почему же нельзя? можно по камням и скалам прыгать. На планете есть и водоёмы, можно даже плавать
что? Как можно было придумать такую дичь?
В Bevy спавниш сущность и делаешь observe каких-то EntityEvent. Так Pickable работает, добавляешь обсервер с On<Pointer<X>>, где под X может быть Click, Press, Release, ещё что-то. И функция вызывается. Потом можно определить на какую именно сущность был произведён EntityEvent с помощью метода event_target(). Хочешь, можешь хук на компонент подвязать, чтобы обсервер сам добавлялся.
Если говорить про процедурное программирование, то тут подходит macroquad (Rust) или raylib (C++). Когда у игры одно глобальное состояние и надо просто спрайтики выводить, иногда простые анимации, тогда они подходят очень хорошо. Для кликеров каких-нибудь, платформеров.
А если у тебя сложное ПО типа Blender, надо разные World иметь, каждый World обрабатывается своим SubApp, хочется добавить большое разнообразие компонентов, то ECS и Bevy тут очень хорошо идёт. Кстати, в Bevy изначально идёт отдельный SubApp и World для рендеринга, туда пересылаются все рисуемые вещи.
У нас не процедурный мир, я всё вот этими вот руками собираю. Для художников у беви пока есть только обещания сделать редактор, поэтому большая часть моей работы происходит в блендере, и упаковка сотен объектов в один glb файл вполне себе рабочий пайп. Например, в одном glb все объекты и инстансы камней, деревьев, кустов всяких, в другом glb все статичные коллайдеры этих объектов и т.д. А уже дальше, как там в движке оно спавнится, я мало имею представления, это кодеры прочитают, может другой подход предложат. С World'ами мы пробовали что-то покрутить, skein и другие приблуды, ничего особо не понравилось, зависимости непонятные, то работает - то не работает, проще руками через экспорт. Ну и для некоторых объектов custom properties добавляем.
Кстати, в чём самая то важная штука - glb хранит в себе position, rotaion и scale всех отдельных объектов, поэтому в движок файл glb достаточно просто как scene заспавнить и всё выглядит как задумано. На скриншоте вот все пропсы планеты для примера, так файл видит любой gltf viewer и bevy
Мы о разном говорим. Понятно, что сделать можно что угодно хоть на ЕЦС хоть на ООП хоть на простой процедурке как диды. Мой доеб был сугубо к архитектуре, а не к тому что там якобы что-то нельзя.
Еще тут?
1) Расскажите откуда черпаете информацию? Особенное по работе Blender c Bevy.
2) Насколько это удобнее/не удобнее чем движок со встроенным редактором?
3) Какие еще инструменты/плагины используете?
4) Какие подводные есть, то есть с какими неудобствами раста/блендера/bevy сталкиваетесь?
5) И наоборот что больше всего нравится и вдохновляет?
https://yandex.ru/games/app/magiia-io-362081
Что-то похожее на это, но с настоящим мультиплеером и чуть больше механик
1) Информация по работе Blender c Bevy черпается большей частью методом проб, и в нейронках, конечно же, вообще в этой связке особо хитрого ничего нет. Ещё периодически следили за еженедельником https://thisweekinbevy.com/ , но в этом году он что-то сдулся, перестал новости по Bevy постить.
2) Конкретно мне, как 3д художнику не удобно без редактора, особенно работать с материалами и шейдерами. У меня был небольшой опыт работы с UE и Godot, после их юзер френдли Bevy чувствуется как технологии инопланетян.
3) Если вопрос про инструменты/плагины для Bevy, физика - Avian, мультиплеер - Lightyear, а в основном всё, что поддерживается разработчиками движка, максимально избегая сторонние зависимости. Про это кодеры больше расскажут.
4) Что касается движка и языка - я не программист. Про подводные камни - моё мнение - Bevy это один сплошной подводный камень. Blender имба.
5) Больше всего нравится и вдохновляет процесс творчества.
1920x1080, 0:31
https://marselarts.gumroad.com/l/instance2object
1920x1080, 0:12
https://www.mixamo.com/
https://mesh2motion.org/
Rustишки вы или ассетотаскатели позорные?!
Берёте и пишете свою процедурную анимацию.
С нуля. Чисто кодом. Без редактора. Силой ECS...
Почему? На голом C/C++ писали, на Unity писали, на UE писали, на Godot писали, да что там - на GameMaker и то писали наверняка, а на Rust/Bevy - это "перебор"? А как же великая сила лунной ECS призмы? Вот ECS быстро пройдётся по всем косточкам и сделает супер-оптимальненько, так, что можно будет хоть волка, хоть кентавра, хоть многоножку заанимировать с высокой производительностью, и запустить десять тысяч таких в одну сцену.
1280x720, 0:27
>Великая сила лунной ECS призмы
Звучит круто, надо запомнить))
Думаю, в проектах как в этом видео, может и целесообразно писать сложные процедурные анимации. Для нашей поделки совсем не обязательно.
>как в этом видео
На твоём видео техника под названием "active ragdoll" - когда к персонажу применяется симуляция физики из набора соединённых rigid body костей, и результат, обычно, смешивается с записанной заранее анимацией. Поэтому персонажи реагируют на окружение и трясутся таким вот странным образом. Это симуляция.
Процедурная анимация в более общем смысле - это любой код для создания неких движений. Пример:
>position = vector2(cos(time), sin(time))
Этот код должен создать круговое вращение вокруг центра координат (0, 0), если "time" растёт со временем.
В случае четвероногих (или если ног ещё больше) можно использовать инверсную кинематику с рейкастами, которые позволяют лапам визуально касаться земли, а остальные суставы могут вращаться простым кодом. Это не физическая симуляция - код ИК только стремится найти положение костей в цепочке, используя только смещение конечной кости (ступни) относительно начала цепочки (позвоночника). Есть много готовых алгоритмов.
Если что-то из этого не использовать, анимации не будут сочетаться с изгибами ландшафта, что на многоногих существах бросается в глаза намного сильнее, чем с двуногими гуманоидами. По сути, выбора-то и нет.
Спасибо за наводку! Про то, что можно к четвероногим ИК применить я и не думал.
Никогда что ли не видел видосы "я сделал паука с IK/процедурной анимацией"?
Я ведь не говорил, что впервые слышу об IK. И в сообществе bevy видел несколько экспериментов с реализацией такой системы. В основном это членистоногие или двуногие, а у нас волк, поэтому даже не думал про такой подход.
>знал что работает с 2 ногами и с 6 ногами, а с 4 даже не думал про такой подход
А ты точно уверен, что тебе надо быть разработчиком в геймдеве?
>А ты точно уверен, что тебе надо быть разработчиком в геймдеве?
А ты точно уверен, что изучал биологию в школе?)
Разница то не в количестве лап.
Leonardo AI - концептер (https://app.leonardo.ai/)
Hunyuan3D - скульптор (https://3d.hunyuan.tencent.com/)
я - художник 🤫
Милый анонимный человек, ты столько всего интересного рассказываешь, лучшего собеседника я и представить не мог, игродел, программист, юрист, филантроп, ходячая энциклопедия. Дай бог тебе здоровья!
Ладно, если серьёзно: "волк" должен пугать игрока, правильно? Тогда "неправильно" вывернутые IK ноги помогут создать ощущение страха перед волком... А персонаж у вас вообще какой-то инопланетянин, т.е. волкообразное существо, скорее всего, не с Земли... Впрочем, ты это всё сам должен видеть, разве нет?
А на счёт ИИ: даже большие компании подмачивают репутацию, когда официально признаются, поэтому желательно не выставлять это всё напоказ, особенно "пайплайн", который заключается в создании чисто производной работы (не важно, каким способом).
http://ru.wikipedia.org/wiki/Производное_произведение
Я не юрист. Просто предупреждаю, что в геймдеве достаточно подобных конфликтов, и не в пользу разработчиков. Не ходите по этим граблям, а если и собираетесь ходить - ступайте аккуратно, не бегите. Площадки типа стима регулярно банят игры, и это необходимо учитывать, если у вас всего одна игра, потребовавшая месяцы/годы труда на создание (а перезаливать тот же продукт заново запрещено).
Сколько же тебе лет, если курс логики из образовательной программы убрали в 50-х годах прошлого века?
1280x720, 0:04
Мне до 10 лет периодически снился сон с одним сюжетом. Родители сидят в общей комнате, а я иду в свою. Там темно, и пройдя немного, понимаю, что что-то не так. Моё внимание захватывают светящиеся красным два глаза во тьме под кроватью. Охватывает ужас, вылезает сплошь волосатое оно и хватает меня, унося куда-то. А самое страшное, что его лапы причиняют невыносимое ощущение щекотки.
Моим самым страшным детским кошмаром была... мигрень. Всё остальное недостойно внимания...
Самым страшным на момент детства и одновременно запомнившимся сном был тот, в котором я иду по лесу ночью, встречаю свою двоюродную тётю, она светит на меня фонариком, от чего мне становится страшно и неприятно, причем всему телу, а не только глазам, а через некоторое время я просыпаюсь. Алан Вейк тогда еще не вышел, если и что. И вообще это были 90-е.
>Логику на информатике изучают
ОП наверняка прогуливал её, он ведь ХУДОжник (не способный даже всратого волка слепить в Блендере, не воруя чужой дизайн с помощью чужой нейронки).
В нашей школе с техническим уклоном где-то 90% школьников забивало на информатику и делало что пожелает, лишь бы не работать головой. И им это позволяли... А теперь имеем поколение вайбкодь, у которых программный код - это какая-то магия.
>ХУДОжник (не способный даже всратого волка слепить в Блендере, не воруя чужой дизайн с помощью чужой нейронки).
Обожаю запах токсичности по утрам!
Да это не мужик, его чуть выше в треде назвали "говняным монстром".
А как тебе логика переиначивания слов?
А представь, это был кошмар наоборот - твоя тётя это положительный персонаж, которая встречает в тёмном лесу тебя - демона, которого дамажит свет))
>токсичности
Это не токсичность, а стимул к саморазвитию. Вместо использования простых, но тупых (не развивающих) методов, лучше бы разобрался в том, как управлять основными инструментами, чтоб было нетрудно и самостоятельно запилить что-то, из своей фантазии.
Потому что копирующих много, а вот реально что-то создающих - мало. Хочешь быть в безликой массе копирующих, или хочешь отличиться чем-то?
Творец ты или ремесленник? Выбирай.
>Хочешь быть в безликой массе копирующих, или хочешь отличиться чем-то?
>Творец ты или ремесленник? Выбирай.
Пафоса нагнал пиздец. Какая разница, ремесленник ты или творец, если твоя игра даже слот не окупает?
1920x1080, 0:24
Когда писал текст поста, ни в коем случае не имел за душой и намёка на подтекст, относительно кого-то из участников форума. Всем очень благодарен за высказывание любых мыслей и мнений 💌 рад, что двач такой бодренький в этом плане.
П.С. на всякий, решил этот моментик прояснить, а то перечитал свой же текст, и подумал, что кто-то может подумать иначе.
В принципе твой волчара почти хуман по скелету. 2 руки, 2 ноги, голова. На хвост можно физику повесить, чтобы он сам болтался. Поэтому бери просто скелет от человека, прискинивай волка к нему и с человека ретаржети. Можно конечно скачать АнимПаки собак, но твой волчара больше похож на чела стоящего на четвереньках, чем на собаку. Я думаю в этом даже больше мистики и вайба будет, если вообще забыть про собак и плясать от людей разной степени шизанутости. Есть вроде сервисы делающие анимации по видео. В Анриле вроде можно такое. А еще есть /б где точно есть челы имеющие гигабайты видосов с квадробершамиами. вот, врожде пазл и сложился.
ИК в любом случае нужен любой хуйне у которой конечность касается поверхности. И двуногим и дохуя ногим и одноногим. Только ИК - это только один из кирпичиков процедурной анимации, сам по себе ИК правильный цикл ходьбы/бега тебе не сделает. Тоесть тебе в любом случае нужна базовая анимция для перемещения по простой плоскости(не важно процедурная или записанная), поверх которой уже вешается ИК. И тогда персонаж сможет отарбатывать склоны и мелкие препятствия. Но вообще анимация - это один из самых сложных видов ассетов в плане их производства.
>если твоя игра даже слот не окупает
Художник должен быть голодным.
Назвался груздем - полезай в кузов.
Вы видите копию треда, сохраненную 19 августа в 22:26.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.