Главная Юзердоски Каталог Трекер NSFW Настройки

Gamedev

Ответить в тред Ответить в тред
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 48 10 11
Народное творчество | кухня инди разработки gameartel !mALvAK48e6 # OP 31/07/26 Птн 18:51:15 1098414 1
BGfdghdfgh.jpg 308Кб, 1920x1080
1920x1080
🟣 Press "Start"
Привет, меня зовут Александр.
В небольшой геймдев команде я отвечаю примерно за всё, что связано с визуалом и звуком, и ещё частично игровым дизайном. 3D модели, анимация, VFX, SFX, музыка и много чего ещё. Хочется всё уметь, делать быстро и красиво, а в наличии две руки и одна голова. Как со всем этим справиться? Пытаюсь разобраться. Здесь собираю заметки о том, как куб из Blender постепенно превращается в игровой мир и оживает на движке Bevy.
Аноним 31/07/26 Птн 19:07:37 1098416 2
Пару слов про движок Bevy gameartel !mALvAK48e6 31/07/26 Птн 19:33:44 1098421 3
gameplay011.mp4 25455Кб, 1280x720, 00:00:50
1280x720
>>1098414 (OP)
Это если не "ад", то "пыточная камера" для 3D художника.
Зато кодерам нравится.
В текущем состоянии мы имеем локацию в виде планеты и базовые механьки.
Аноним 31/07/26 Птн 19:39:25 1098423 4
17051546752200.png 161Кб, 2211x593
2211x593
>>1098421
>Зато кодерам нравится.
Это ложь. Все что больше утилиты для линукса - раст превращается в неудобную и неповоротливую шляпу.
Поиграться - норм, самоутвердиться норм, если не хватило мозгов на хаскель. Но работать точно нет.
Аноним 31/07/26 Птн 21:03:47 1098444 5
>>1098414 (OP)
Прямо как в Обивион без блендинга анимаций. Там тоже враг прежде чем нанести урон должен был остановится, чтобы началась анимация удара.
Аноним 31/07/26 Птн 21:05:23 1098445 6
Аноним 31/07/26 Птн 21:32:19 1098455 7
>>1098444
Вообще блендинг есть, этот просто тут кривовато сделано
gameartel !mALvAK48e6 31/07/26 Птн 22:41:24 1098481 8
>>1098455
Да, блендинг есть, тут не кривовато, а вообще пока этого вопроса не касались.
Аноним 01/08/26 Суб 09:48:45 1098626 9
>>1098414 (OP)
Сколько времени уже ушло? Какие планы?
gameartel !mALvAK48e6 01/08/26 Суб 11:34:48 1098652 10
>>1098626
Именно эту планету уже около года делаем, хотелось бы быстрее, но пока это как хобби проект, исключительно в свободное время.
В этом году планируем довести до минимально рабочего состояния и протестировать на itch.io
Аноним 01/08/26 Суб 12:10:41 1098669 11
>>1098423
Что? На картинке просто дженерик.
Но главная проблема инфраструктуры Rust, что там долго компилируется и бинарники получаются по 50 МБ Или по 2 ГБ если для разработки
Аноним 01/08/26 Суб 12:25:14 1098674 12
>>1098414 (OP)
Вы бы хоть подробнее описали что тут на картинке, непонятно это сингл или мульти, на какой платформе игра и тд.
gameartel !mALvAK48e6 01/08/26 Суб 15:10:53 1098760 13
>>1098674
3D-экшон суть такова... условно - мультиплеерный сессионный PvPvE-экшен с элементами сурвайвала. Бывают такие ситуации, когда до конца не знаешь, что делаешь. У нас примерно так, потому что это первый опыт. По платформам - рассматриваем пока стим и мобилки, но это не точно. В общем, я этот тред завёл, чтобы немножко рассказывать о творческих муках и интересных находках, постепенно и непринуждённо всё прояснится.
Насмотренность | Референсы и мудборд gameartel !mALvAK48e6 01/08/26 Суб 15:13:19 1098763 14
refs1.jpg 877Кб, 1920x1080
1920x1080
В любом творчестве это базовый инструмент. Дефолтный куб принимает форму того, что рисует воображение. Нейросети подобны воображению. Всё, что мы видим\слышим\ощущаем, становится базой для обучения "генеративной модели". Чтобы генерить годноту, нужно к основному "промту" добавить мудборд и рефы.
Как ЭТО примерно должно выглядеть? gameartel !mALvAK48e6 01/08/26 Суб 15:14:36 1098764 15
perss.jpg 456Кб, 1920x1080
1920x1080
На такой вопрос отвечает реф. Для создания игровой модельки:
1. Нашëл симпатичных персов.
2. Взял чистый лист и сделал наброски.
3. По своим наброскам замоделил. (Потом ещё заригал и анимировал в миксамо)
gameartel !mALvAK48e6 01/08/26 Суб 15:34:58 1098778 16
Аноним 01/08/26 Суб 16:12:36 1098795 17
>>1098669
>На картинке просто дженерик.
Какой дженерик, кек. А че дженерики не люди??
Это все сигнатура функции.
Аноним 01/08/26 Суб 16:53:12 1098812 18
>>1098795
Это дженерик-функция, дженерик-метод.
Ну да, есть некоторые проблемы, что для объединения треитов в один надо создавать свой пустой треит и добавять ему зависимости там всякие Copy, Clone, Sync, Send. Но это не так уж и сложно.

У меня у самого плагин для Bevy дженерик от трёх типов.

А с лайфтаймами что, тоже какие-то проблемы?
Аноним 01/08/26 Суб 20:59:17 1098935 19
>>1098652
Так мб взять юнити и 1 промптом нейронкой сделать то же самое?
Аноним 01/08/26 Суб 22:01:42 1098958 20
>>1098935
не, слишком просто)

вообще когда начинали ещё не было таких инструментов типа opencode и собирались именно руками поделать

и потом, в планах было сделать что-то мультиплеерное и кроссплатформенное, и я не знаю насколько юнити такое может потянуть
Аноним 01/08/26 Суб 22:49:07 1098966 21
>>1098935
Пацаны играются в модный раст. Игра тут скучная побочка.
Аноним 02/08/26 Вск 01:12:02 1098996 22
>>1098958
Понадобится не 1, а 3-4 промпта в нейронку.
Почему Bevy Engine? gameartel !mALvAK48e6 03/08/26 Пнд 11:04:48 1099195 23
Расспросил об этом у кодеров из команды, вот что мне ответили:
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/
Аноним 03/08/26 Пнд 12:11:50 1099205 24
Аноним 03/08/26 Пнд 13:50:58 1099216 25
>>1099195
>>1099205
Ецс это подход пригодный для больших проектов, но не всегда.
А на маленьких только если сама концепция игры такая, что перыорманс может стать проьлемой и дод подход с параллелизмом сможет улучшить ситуацию.

Еще может быть норм для детерминированного мультиплеера.

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

Всё остальное есть и в других языках.
Аноним 03/08/26 Пнд 14:42:39 1099226 26
>>1099195
>язык для крутых бородатых мужиков которые пищут блейзинговый 0.1 наносек код
>система типов и владения, которая обещает защитить тебя от выстрела в ногу
этот же суровый мужик прячется от своей криворукости у компилятора под юбкой
Аноним 03/08/26 Пнд 15:17:01 1099231 27
h7t6eab1pau71 ([...].webp 38Кб, 1080x780
1080x780
>>1099195
>- сам язык: система типов и владения, которая обещает защитить тебя от выстрела в ногу;
Побеждает проблему ручного управления памятью, то есть ту проблему которой не было у C#/lua/js/GDscript... программистов. Действительно.

>- обещает топовую производительность;
Обещать не значит жениться, можно просто подключить библиотеку и слететь на порядок по производительности.
Уметь писать оптимизированный код, это отдельный скилл (10%) и тонна исследование с замерами (90%). Зато раст компилируется ппц как долго и бинарь размером с дом.

>- хобби приносит удовольствие,
Мастурбация тоже, но мы об этом не говорим на каждом углу.

>2. Легковесный, не нужно устанавливать громоздкие инструменты, можно пользоваться чем привык
Чтобы собрать на винде тебе надо поставить 7-8 гигов С++ компоновшика, плюс еще вижлу подтянуть (это отдельный размер).

>3. Топовая производительность движка с Entity Component System (ECS) и векторизацией доступа к последовательно расположенным сущностям в памяти
Было с чем сравнить, или просто берем за веру? ECS это не какая-то технология будущего, это подход к организации данных, который несет свои издержки и не всем ECS с такими издержками нужен (простыми словами неудобно, для такого неудобства должна быть реально необходимость).

>Интересно понять, как работает движок, при этом не уйти в написание собственного
Читать сорцы раста с зоопарком трейтов - та еще радость. Для годот даже натянули упрощенный С++, потому что люди ходят развивать проект, упрощая сопровождение кода, а не мастурбировать свое ЧСВ (опять же ЧСВ для слабеньких, кто не осилил реально академический язык - хаскель)


>Абсолютно бесплатный
В эпоху изобилия языков и инструментов - еще бы он был платный.

Поговорил с пастой нейронки. Тут должна быть вирусная шутка из ютуба, что движков на расте больше чем игр на расте (но мне лень искать).
Аноним 03/08/26 Пнд 16:11:38 1099235 28
Аноним 03/08/26 Пнд 17:11:06 1099249 29
>>1099195
>Entity Component System (ECS)
Не очень понял что конкретно в вашейигре надо ECS-ить. Сейчас там буквально две динамические ентити. Персонаж и бегущий за ним говнодемон. Даже если мобов будет одновременно 10+ все равно из пушки по воробьям. Насколько я понял ECS начинает приносить профит если сущностей начинает становится несколько сотен+.
Аноним 03/08/26 Пнд 23:53:56 1099348 30
>BEVYBEVYBEVYBEVYBEVYBEVY
>RUSTRUSTRUSTRUSTRUSTRUST
>ECSECSECSECSECSECSECSECS
Это что, филиал движкосрача?

Я вот не понял, о чём игра...
Аноним 04/08/26 Втр 08:27:05 1099371 31
idontunderstand.jpg 63Кб, 622x482
622x482
>>1098760
Не сказать что я стал больше понимать, ну допустим, walking simulator на Rust.
Дарю вам нарратив - главгерой это местная разумная форма жизни, кроме него есть несколько рас которые отличаются цветом и формой ушей. Он думает что самые страшные его враги это местные аналоги змей и медведей, но потом прилетают люди с Земли с огнеметами и начинается тотальная прожарка всей планеты.
Аноним 04/08/26 Втр 10:00:03 1099378 32
>>1099249
Не так. Суть ECS и Bevy, в частности, что берёшь придумываешь компонент, делаешь системы, которые обрабатывают сущности и получаешь новый функционал. Хочешь отключить — убираешь систему, хочешь ещё чего добавить — накидываешь новый компонент и систему.
Аноним 04/08/26 Втр 12:07:21 1099432 33
>>1099378
Компонент это обычная ООП вещь, а не ECS специфичная. Это простая композиция с временем жзни равной времени жизни владельца. Поклонники ECS говорят, что главное тут - это чтобы все пролазило в кеш проца, тогда это будет быстро работать. И действительно будет. Но сама архитектура мне напоминает скорее процедурное программирование годное для простых однотипных задач.
Примерно как писали код под микроконтроллеры. Программа в бесконечном цикле пробегается по всем кнопкам пдряд, опрашивает, подавляет дребезг и если какая-то нажата по программа делает переход к обработчику. Это окей, когда у тебя примитивная хуйня типа кодового замка или пульта от телефизора и кроме кнопок и дисплея в твоей программе нихуя нет. В ООП кнопка была бы отдельным объектом класса, которая сама бы внутри себя как-то обновлялась, подавляла дребезг и генерила бы Евенты OnButtonPressed и OnButtonReleased. Кнопка бы ничего не знала о том, чем она управляет, а в процедурке конкретная кнопка должна была пойти с делать какую-то конкретную вещь. И вот ЕЦС мне очень напоминает микроконтроллер.
Аноним 04/08/26 Втр 14:36:17 1099462 34
>>1099378 >>1099432
Изначально ECS придумали ехидные противники НАСЛЕДОВАНИЯ из ООП, аргументируя пользу ECS приблизительно так: "в ООП вам приходится делать огнемётчика потомком солдата, а солдата потомком человека, а человека потомком животного; но если потребуется что-то поменять, дерево наследования чрезвычайно трудно перестроить; ECS решает эту фундаментальную проблему, позволяя собирать все необходимые объекты в рантайме из компонентов".

Когда-то я тоже думал "о, прикольно звучит", а теперь понимаю, что создатели ECS не разобрались в ООП и сделали квадратно-колёсый велосипед, решающий проблему, которой в ООП нет - никто не заставляет разработчиков юзать наследование... тем более если программируешь на скриптовом ЯП, допускающем множество трюков с памятью и указателями...

Т.е. ECS - это что-то для кодинга на Ассемблере.
Аноним 04/08/26 Втр 17:27:46 1099494 35
>>1099462
> ECS - это что-то для кодинга на Ассемблере.
ну я говорю код стаил микроконтроллера
gameartel !mALvAK48e6 05/08/26 Срд 10:25:07 1099615 36
>>1099371
Спасибо за нарратив!) возьмём на карандаш. Как делать пламя огнемёта, пока не знаю, в vfx вообще ещё сильно не углублялся
5 текстур, 95 vertex color gameartel !mALvAK48e6 05/08/26 Срд 10:34:47 1099617 37
props.mp4 21968Кб, 1920x1080, 00:00:16
1920x1080
Для нашей стилистики пока хватает парочки текстурных атласов с граф. элементами, большая часть всех поверхностей это крашенные вертексы. Такой подход позволяет использовать 2-3 материала на всё-всё-всё, а количество дроуколлов сильно снизить. Ну и конечно же, избавляет от массы задач связанных с отрисовкой и обработкой текстур, UV развёрткой и прочим.
gameartel !mALvAK48e6 05/08/26 Срд 10:37:43 1099620 38
>>1099617
Тааак... знак "%" в теме не отображается, понел.
Должно было выглядеть так - 5% текстур, 95% vertex color
Аноним 05/08/26 Срд 11:44:12 1099631 39
>>1099617
Если по камням/скалам нельзя полазить, то они в мире не нужны, нарисуйте вместо них ямы без коллизий. А мне сдается, что нельзя.
gameartel !mALvAK48e6 05/08/26 Срд 11:54:28 1099633 40
>>1099631
Почему же нельзя? можно по камням и скалам прыгать. На планете есть и водоёмы, можно даже плавать
Целая сцена с сотнями инстансов в GLB gameartel !mALvAK48e6 05/08/26 Срд 11:57:08 1099635 41
2026-07-2613-53[...].png 2010Кб, 1452x880
1452x880
Меня очень приятно удивило, что при экспорте из блендера в формат glb/gltf, объекты остаются объектами, а инстансы инстансами. Для беви я выгружаю несколько слоёв: планета, статика, коллайдеры и т.д.
Аноним 05/08/26 Срд 12:50:54 1099645 42
>>1099432
что? Как можно было придумать такую дичь?

В 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 для рендеринга, туда пересылаются все рисуемые вещи.
gameartel !mALvAK48e6 05/08/26 Срд 13:19:54 1099652 43
>>1099645
У нас не процедурный мир, я всё вот этими вот руками собираю. Для художников у беви пока есть только обещания сделать редактор, поэтому большая часть моей работы происходит в блендере, и упаковка сотен объектов в один glb файл вполне себе рабочий пайп. Например, в одном glb все объекты и инстансы камней, деревьев, кустов всяких, в другом glb все статичные коллайдеры этих объектов и т.д. А уже дальше, как там в движке оно спавнится, я мало имею представления, это кодеры прочитают, может другой подход предложат. С World'ами мы пробовали что-то покрутить, skein и другие приблуды, ничего особо не понравилось, зависимости непонятные, то работает - то не работает, проще руками через экспорт. Ну и для некоторых объектов custom properties добавляем.
gameartel !mALvAK48e6 05/08/26 Срд 13:38:40 1099657 44
2026-08-0513-30[...].png 165Кб, 709x678
709x678
>>1099645
Кстати, в чём самая то важная штука - glb хранит в себе position, rotaion и scale всех отдельных объектов, поэтому в движок файл glb достаточно просто как scene заспавнить и всё выглядит как задумано. На скриншоте вот все пропсы планеты для примера, так файл видит любой gltf viewer и bevy
Аноним 05/08/26 Срд 14:34:43 1099668 45
>>1099645
Мы о разном говорим. Понятно, что сделать можно что угодно хоть на ЕЦС хоть на ООП хоть на простой процедурке как диды. Мой доеб был сугубо к архитектуре, а не к тому что там якобы что-то нельзя.
Аноним 05/08/26 Срд 19:27:03 1099738 46
Какой-то кодо/блендер дрочь. Игра то про что?
Аноним 06/08/26 Чтв 01:35:21 1099795 47
>>1098414 (OP)
Еще тут?
1) Расскажите откуда черпаете информацию? Особенное по работе Blender c Bevy.
2) Насколько это удобнее/не удобнее чем движок со встроенным редактором?
3) Какие еще инструменты/плагины используете?
4) Какие подводные есть, то есть с какими неудобствами раста/блендера/bevy сталкиваетесь?
5) И наоборот что больше всего нравится и вдохновляет?
Аноним 06/08/26 Чтв 11:09:33 1099827 48
>>1099738
>Игра то про что?
про то как писать игру на расте
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов