Что на самом деле важно для игрового движка в разработке инди? Размышления от создателя RimWorld (2017)

Инди разработка в процессе. Видео с канала https://www.youtube.com/@thomasbrush
Инди разработка в процессе. Видео с канала https://www.youtube.com/@thomasbrush

Небольшой перевод поста на Reddit от создателя RimWorld (проект на данный момент принесший под $100M) который возможно будет полезен людям в принятии решений о выборе движка.

Комментарий переводчика: В связи с недавней ситуацией с Unity, многие инди-разработчики начали обращать внимание на альтернативные решения которые можно использовать в качестве базы для создания своей игры. На фоне интереса к этой теме, естественно начали появляться материалы сравнивающие Unity с другими технологиями. Как правило, большинство таких сравнений представляют из себя полный нонсенс сделанными людьми либо не имеющими отношения к разработке, либо не выпустивших ни одной игры и чья основная сфера деятельности это либо развлекательный контент для YouTube либо "инфо-циганство" через продажу своих мутных курсов и рекламу школ.

В этом посте хочу поделиться мнением настоящего разработчика™ и создателя RimWorld – Тайнана Сильвестра, который довел проект до успешного релиза практически в одиночку. Напомню что RimWorld был сделан на основе Unity. Ниже приведен перевод его поста написанного в 2017 по итогам его теста Godot и других движков в качестве основы для следующего проекта. Прошу учитывать что пост написан соло_разработчиком__симулятора в контексте 2017 года, еще до полноценного выхода его игры на Steam (только в early access), но многие вещи актуальны и сейчас.

Тайнан Сильвестр:

Позвольте мне немного поразмыслить.

Для начала скажу, что где-то 18 месяцев назад я действительно занимался исследованием движков для своей следующей игры. Я очень внимательно изучал SDL2 и OpenTK, и сделал несколько небольших незаконченных проектов с каждым из них. Сразу скажу что они мне не подошли. В OpenTK не хватало многого, особенно графического интерфейса. В обоих есть поддержка C#, но она не ощущается как первоклассная функция.

Unity в целом мне подходит как игровой движок, но у него есть ряд серьезных проблем. Он довольно тесный; движок очень упрямый и его мнение не всегда очень хорошо продумано. Он изо всех сил старается не дать вам уйти от того, как он устроен внутри. Кроме того, то, Unity просто лишили меня бессрочной лицензии от обновлений после версии 2017, что оставило у меня неприятное послевкусие. Я не хочу покупать новую лицензию каждый год для каждого разработчика; я не хочу, чтобы моддеры были внезапно ограничены отсутствием проприетарного редактора.

И хотя команда Unity постоянно добавляет новые безумные возможности, которые отлично смотрятся в демо-версиях – их код крайне неактуален для использования в инди проектах и уж абсолютно точно не должен быть ориентиром для разработки для 99% настоящих инди-команд. Я не хочу постоянно иметь дело со странноватыми проблемами Unity, которые они годами отказываются исправлять, или которые появляются и исчезают снова и снова в результате новых обновлений.

Поэтому я все еще ищу что-то другое для своего следующего проекта.

Если посмотреть на Godot, то на данный момент меня больше всего беспокоит что его команда похоже, пытается быть всем для всех. Godot пытается привлечь внимание студенческого рынка "моей первой игры", используя простой скриптинг, GDScript и т.д. Но в то же время он стремится к AAA-функциям, таким как продвинутый пайплайн для рендеринга и система расчета частиц на GPU.

Отсутствие определенного фокуса Godot приводит к тому, что, по моему мнению, у его разработчиков неправильно тратятся усилия на вещи, которые почти никто из серьезных инди не должен использовать (продвинутый рендеринг, который красиво выглядит в демо-роликах и GDScript), и в то же время уходят на второй план вещи, которые должны использовать абсолютно все инди – поддержка C#.

Судя по тому, что я читал, поддержка C# все еще остается довольно шероховатой. Хорошая первоклассная поддержка C# просто необходима. Нам нужен очень продуктивный, достаточно быстрый, устойчивый к ошибкам (например, статически типизированный, без глобального состояния и GIL), зрелый, переносимый, имеющий библиотеки и работающий с очень большими кодовыми базами язык. Под все эти определения подходит только C#.

GDScript выглядит неплохо для очень маленьких игр, но он явно никогда не будет масштабироваться до уровня RimWorld: его производительность слишком мала, а код недостаточно безопасен без нормальной типизации. Большинство инди-игр уровня "моя первая игра" не должны его использовать.

C++ хорош, если вы создаете супер-оптимизированный код ядра движка. Но производительность труда разработчика на C++ очень низка, так как им невероятно сложно овладеть и пользоваться на хорошем уровне. Очень немногие инди-компании должны иметь дело C++ по-моему мнению.

C# покрывает потребности 90% задач инди для серьезных проектов:

  • Для разработчиков уровня "моя первая игра" изучение C# – идеальный вариант; язык имеет отличные сообщения об ошибках, тонны документации и очень эргономичен.
  • Для инди-разработчиков среднего уровня, таких как я, C# идеален благодаря отличному балансу продуктивности, скорости, наличия библиотек и масштабируемости.
  • Для AAA-разработчиков нужен C++, но эти люди не имеют отношения к Godot, потому что они все равно будут писать свой собственный движок или использовать что-то уровня Unreal.

Я не думаю, что на уровне инди-компаний стоит пытаться конкурировать с крупными компаниями в плане графики. Поэтому, с моей точки зрения, все эти продвинутые PBR шейдеры, крутые системы освещения и частицы - это в лучшем случае NOP (фичи которые ничего в итоге тебе как разработчику не дают). Для использования таких возможностей требуется действительно большая арт-команда из разных художников, а пересечение между студиями, которые будут использовать Godot, и студиями с большим количеством художниками очень близко к нулю.

Я очень надеюсь, что команда Godot не зациклится ни на продвинутых возможностях рендеринга ААА, ни на простоте использования уровня "моя первая игра".

Этот движок станет популярен, когда небольшие, но профессиональные инди-команды начнут его использовать для создания действительно популярных игр - игр уровня Factorio, Don't Starve, RimWorld, Hotline Miami, Stardew, Terraria.

Нам не нужны ни анимация, ни частицы, ни PBR, ни визуальные скрипты, ни сетевые технологии. Нам нужны только основы. Нам нужна действительно надежная поддержка C#, с отладкой и всем остальным, и нам нужно, чтобы движок был в целом без ошибок. Я надеюсь, что когда-нибудь буду его использовать!

Я надеюсь более подробно поделиться своим мнением о Godot, как только я изучу его побольше. Но это было самое заметное и важное, что сразу же привлекло мое внимание при его использовании.

9.7K9.7K показов
6K6K открытий
11 репост
72 комментария

Претензии к Godot какие-то выдуманные, так как там предлагают буквально то, что ему нужно - самую базу инструментов, плюс не ограничиваются только ими, а вдобавок дают оптимальный набор расширенных возможностей (анимации, частицы, сетевая часть в том числе - это уже давно не жир, а часть необходимого минимума от движка). При этом "лишних" вещей на порядки меньше чем в Unity, но те те же порядки более компактно и понятно.
И сколько ему Microsoft занесли за пиар C#? Который злой брат-близнец-клон Java. И поддержка которого в Godot тоже добавлена давно, как второй основной язык, который они тянут (а корпорация им приплачивает, чтобы тянули дальше). Тянут по остаточному принципу, но они не обязаны всё бросить и присесть навсегда на .net/mono. И на прочих языках есть возможность писать.
Но нет, у нас C# идеальный, "должны использовать все инди". Java, TypeScript, Rust, что-то ещё открытое, и ещё более открытое - зачем, лучше сидеть на раздувшейся раскрученной поделке от Microsoft, потому что популярна и поддерживается огромной корпорацией, которая давно и целенаправленно давит развитие всех прочих.

Ответить
Автор

Претензии к Godot какие-то выдуманныеКонечно, ведь кто такой автор RimWold и откуда у него настоящий опыт.

При этом "лишних" вещей на порядки меньше чем в Unity, Так он про юнити тоже самое пишет. Ты весь пост читал?

И сколько ему Microsoft занесли за пиар C#?bruh

И поддержка которого в Godot тоже добавлена давно, как второй основной язык, который они тянут

Та самая поддержка C# которая на каждый вызов raycast делает выделение памяти в куче и кладет результат в хешмапу?

Java, TypeScript, RustСпециально ведь выделил что пост написан в 2017. Для Java вроде де бы ничего кроме libgdx так и не появилось, про который ничего плохого сказать не могу – игры на нем есть и весьма успешные. TypeScript – даже сейчас смешно про это читать, это технология для веба. Rust в 2017 было бы странно выбирать, как человек который на нем уже год пилит свою игру не могу порекомендовать этот язык для большинства разработчиков игр.

Ответить

Такое впечатоление, коменту лет двадцать, из cередины нулевых.
C# уже и сто лет как перерос Java. И opensource с ног до головы. Да, и на линуксах тоже запускается, это к вопросу как злодеи из MS "целенаправленно давит развитие всех прочих".

Кстати, вы в курсе, что TypeScript - это не просто MS, но еще и тот же самый дядя, который им C#/.net запилил?

зачем, лучше сидеть на раздувшейся раскрученной поделке от Microsoft, потому что популярна и поддерживается огромной корпорацией

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

Ответить

При чем тут MS и C#? В большинстве движков на базе Моно, хоть мс и спонсирует разработку, но проект не их. В Юнити вообще своя реализация IL2CPP, в свое время удачно купленная. Ну и да, поэтому в Unity поддержка C# наиболее удобная. А в Godot далека от идеала.

Ответить

Знаете мне кажеться ситуация с 2017 года немного изменилась
У юнити развитие пошло в странную сторону
а у годот просто произошло развитие

Ответить

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

Ответить

Фотореалистичный рендер требует не только технологии движка, но и соответствующие фотореалистичные ресурсы.

Ответить