Comments 11
Несмотря на то, что миру и софту нужны энтузиасты, к сожалению у существования массовых движков есть веские причины.
Современные игры - это очень сложный софт. Какие то бибиотеки были еще на ранних консолях, но даже в ранних 00-х можно было написать игру на своем движке. Хм, ну собственно и сейчас можно.
Но разрыв от "нарисуй спрайт" до "современные методы отрисовки реалистичного окружения, анимаций и материалов с физикой" с каждым годом все больше. Да, каждую фичу можно сделать отдельно, но этих фич очень много.
Как бы мне не нравился rust и ECS, это просто слишком дорого - повторять все эти элементы. По сути речь идет о каких то исключительных играх со специальными требованиями, либо любительскими играми.
Это уж точно не дает никаких преимуществ - ни разработчикам, ни дизайнерам.
Последним нужны инструменты для уровней и конфигурации, именно поэтому редактор с деревом объектов для уровней стал стандартом де-факто в крупных движках.
А разработчиками, что характерно, не нужны преимущества мощных ECS - они на самом деле не в состоянии из даже утилизировать.
Смотрите сами - преимущества ECS и rust - скорость кода, точность, сильная типизация - это все про производительный и безопасный код. Но производительность - не проблема инди, она нужна когда у тебя есть Oblivion ассетов и 100500 сущностей. А безопасность - не очень большая проблема игр, клиент все так же всегда в руках врага, а визуальные баги и баги поведения не вылечить сильной типизацией - это не баги в традиционном смысле, а особенности поведения.
В то же время за это нужно платить - боилерплейт в ECS, более сложный код в Rust (да, zero cost abstraction, но это для машины zero cost, для разработчиков там хватает ограничений, а borrow checker требует продумывания архитектуры и не заинтересован в быстрых экспериментах)
Но разрыв от "нарисуй спрайт" до "современные методы отрисовки реалистичного окружения, анимаций и материалов с физикой" с каждым годом все больше.
Я со своей колокольни скажу, что не надо делать современную реалистичную графику и анимации, если вы разработчик инди-игр. Есть разные рынки игр, аудитории, стили и подходы. Undertale выстрелил с графикой, которую любой движок потянет и которую любой средней руки pixel artist потянет (пример наверное не лучший, но какой есть). Ну или baba is you - совсем графика уровня геймджема, но мы всё равно её любим.
Найти свой стиль может быть важнее, чем просто реализм выкрутить. Вот такое имхо.
Если попробовать продолжить список, есть ещё всякие RPG Maker игры, где часто очень простая графика, но игры на нём могут быть увлекательными и аудитория на них найдётся (некоторые на них ещё новелки делают, типа To The Moon). Говоря о визуальных новеллах, тоже жанр, где не так много фичей из меинстримовых движков могут быть жизненно необходимы.
Безусловно.
Условно чтобы реалистичную графику вытянуть и ассеты нужны соответственные - сложные маски и нормали для всего, хорошо сочетаемые и т.д.
С другой стороны даже просто 3д с плоским освещением из коробки, анимации которые можно купить в магазине, неплохие инструменты для UI - все это большое подспорье именно для инди.
Как и другие вещи - банальные аниматоры, системы звуков, редактор уровней.
Инструмент без редактора априори не имеет такой мощи - просто собрать визуал уровня в редакторе, с анимированными соснами и материалом блестящей воды, которые можно сделать без единой строчки кода. Даже если ваша игра про палочку, прыгающую по островам - это большое подспорье.
Собственно сейчас мы имеем ренессанс инди игр - каждый год рекорды по количеству. Большая часть шлак конечно, но видно, как движки снизили порог вхождения и дали простор для творчества.
Свой движок или любительский фреймворк для разработчиков - это ощутимый порожек.
По сути Bevy используется в основном с подачи программистов - одиночек, геймдизайнеры начинают с конструкторов, модов или того же юнити, а команды уже больше заинтересованы в тулсете.
В целом, Ebitengine очень близок в этом плане к Bevy (минусы и слабые места). Хотя субъективно мне конечно хочется выделять более простой язык и меньшую одержимость движка на одной конкретной парадигме (ECS), но для большинства всё равно любой меинстримовый движок будет в среднем лучше.
(Сам я Bevy не юзал, поэтому и приходится лишь косвенно тему затрагивать)
что в основном ушёл "ECS boilerplate".
Т.е они отказались и от ECS?
С Rust могу понять, брать сейчас Bevy для боевого проекта - авантюра. Но радикальный отказ и от Ecs возможно перебор.
Вот я тоже не до конца понял, как будто бы тема не раскрыта. Сначала с радостью взяли Bevy из-за лучшего ECS на диком западе (и это правда), но потом выбросили ECS и зажили без тревоги. :D
В теории, у них есть выбор ECS и на Unity, даже больше одного, но ничего об этом не нашёл. Надо читать комменты на реддите, может, они прояснят.
Upd: я нашёл, залетаем - https://www.reddit.com/r/rust/comments/1ka4g28/migrating_away_from_rust/
Я пособираю некоторые комменты и может добавлю в отдельном комменте тут цитаты.
У меня ноль коммерческого опыта с ECS, поэтому я отслеживаю чужие истории и читаю статейки для общего развития. Пока что комфортно на обычном подходе + идеи из data-oriented design (плоские объекты в массивах, без лишних указателей, всякое такое).
Не нашёл ничего про ECS, поэтому свой коммент там оставил. Но нашёл что-то другое.
Собрал несколько цитат с реддита
Апдейты Bevy:
We also migrated from Bevy for similar reasons. The Bevy upgrade cycle is absolutely caustic. They don't have any guardrails against what they break.
Rust was fine. The problem was 100% Bevy.
Yes, it hasn't hit 1.0 yet. It's going to be unstable and things are goign to break. That's the point for now.
Всё ещё считаю, что люди слишком часто хотят обновлять версию движка. Это выглядит как портирование игры с Godot 3 на Godot 4 в процессе разработки игры. Иногда такое нужно, но не в каждой же игре.
Про моддинг:
The article definitely mentions one thing that Rust does not support well (at least for now): native modding, or the ability to code for the mod in the same language as the main game implementation. This has to do with Rust’s unstable ABI, and it will not improve in the near future.
Мне кажется, ABI важен, когда моддим с реверсом и патчингом бинаря, а если там подгрузка скриптов и/или ещё каких-то файлов с диска, то не особо и важно, что там с самим бинарём. Но, видимо, людям прямо хардкор до кишочков важен. Я бы не списывал моддинг со счетов только по этому, а то либо всё, либо ничего.
Про Rust:
Rust definitely has its strengths — but not in 95% of game development projects.
I've pondered a lot over whether Rust-the-language is a good fit for (indie) games at all. Rust excels in areas where correctness and reliability are required, but for games... I'm not sure it's important enough. Many of the most financially successful games in the last decade were quite buggy, but they shipped in time for lots of people to buy them.
Я думаю если Rust прямо любимый язык и по нему 5 лет экспертизы, то есть как минимум этот плюс, если сравнивать с "никогда не писал на C#".
Языку Go обычно предъявляют за GC, но как бы и ладно, с ним зато удобно и движкам типа Unity наличие GC в C# не мешает настолько сильно. А производительности пока хватает.
Языку Go обычно предъявляют за GC, но как бы и ладно, с ним зато удобно и движкам типа Unity наличие GC в C# не мешает настолько сильно. А производительности пока хватает.
Предъявы от неумения в программирование. Не нравится GC, кто мешает создать пулы ресурсов и управляйте ими вручную. Этого мало? Добро пожаловать в Unsafe.
Если руки из правильного места то и на Go можно написать очень быстро и хорошо и на C#. Понятно что Rust будет еще быстрее и безопаснее но все же.
Мне вот в Go другое не нравится, то что он за меня неявно решает где выделить память. Это прям очень неприятно. Тот же C# если я объявил struct то уверен что он неявно не уползет в кучу, Go таким похвастаться не может.
Мне вот в Go другое не нравится, то что он за меня неявно решает где выделить память
Есть такое. Я иногда юзаю отладочный вывод escape analysis, чтобы понять, в куче там будет аллокация слайса или на стеке. Но чаще всего безопасно хоть и на куче выделить, но реюзать память - тут никто жизнь не испортит. :D
А ещё всякие zero alloc алгоритмы можно много где придумать (тестировать через benchmark с репортом аллокаций). Я даже поиск пути сделал без аллокаций. :D
особенно из-за драмы последних лет
А что за драма последних лет. Я помню только последний скандал, когда они захотели денег за каждый рантайм. А до этого вроде ничего подобного не было, кроме метаний с номером мажорных версий, и кучи сырого функционала в пакетах.
Эту драму и имел в виду, просто не хотел расписывать подробнее.
В оригинале так:
Some of this stemmed from unforced errors on the part of Unity. They had just gone through a crisis of pricing that culminated in the resignation of their CEO and they seemed out of touch with indie developers
То есть, всё та же политика оплаты, но добавляет ещё смену CEO и отрыв от инди разработчиков. Оценить отрыв от инди-разрабов мне сложно, так как я не особо в теме Unity.
Расписывать не хотел, потому что может кому-то это всё - весомый момент, но для меня он таковым не выглядит, так как самую странную часть изменений они откатили. Я бы Unity со счетов не сбрасывал по этому критерию, и рад, что они тоже дали движку шанс. Уход CEO - вроде бы даже относительно нормальный исход, хотя я не знаю, кто его заменил. Но прошлый CEO как будто бы не особо хорошую репутацию имел.
Миграция с Bevy на Unity