Да, название статьи на английском, чтобы любой в интернете мог быстро ее найти.  Проблема: чтобы собрать UE из сурсов, достаточно 2х команд; чтобы собрать UE докер-образ, достаточно 1 команды. А чтобы собрать godot из сурсов с поддержкой c# на линукс и с возможностью экспортировать проект в web, надо прочитать 5+ статей и потратить кучу времени на понимание оных. Чтобы вы могли не тратить своё время, я собрал всю необходимую информацию в одной статье. Здесь приведены краткие инструкции по сборке godot движка из сурсов на debain 11 (64bit). Надо поставить кучу всего. Во-первых, скачайте sdk Emscripten и положите исходники в какую-нибудь папку, скажем, $HOME/GODOT/emsdk/. Вам надо будет выполнить несколько команд, чтобы sdk manager загрузил нужный sdk и добавил его в path. Ставьте версию 1.39.9:  В принципе, можно ставить любую версию 1.39.9+, но дальше нам встретятся сверх-тонкие вещи, которые тестировались именно на этой версии. Помимо этого, надо сохранить путь к созданному файлу конфигурации в переменной окружения: Теперь надо поставить MSBuild версии 16.9. Как сказано тут, самый простой способ - установить .NET 6.0, в котором и есть всё необходимое. Инструкции для конкретного дистрибутива можно найти в обширной документации от microsoft. В моём случае - это инструкции для debian - добавить ключ и установить сам пакет. По идее, после этого вы можете убедиться в том, что sdk установлен, командой: Но и это не всё. Ещё нам понадобится NuGet. Если верить этому посту на stackoverflow, после установки net-core, вы можете поставить его командой: Ну супер, осталось немного: А именно скачать и дать ему ключ: Mono is an open source implementation of Microsoft's .NET Framework based on the ECMA standards for C# and the Common Language Runtime. Нам нужная конкретная версия : 1.62.0.182.  Как перейти на указанный tag в git я нашел здесь: https://devconnected.com/how-to-checkout-git-tags/. Целевые платформы в нашем случае: это linux, для которого надо собрать сам движок, и web (т.е. html5), для которого надо собрать только шаблоны экспорта. Все команды кратко описаны здесь. Смысл указанного репозитория - собрать ресурсы mono под каждую из указанных платформ. Важный момент: у меня была 64 bit версия компа, поэтому я собирал только 64bit версию движка, и чтобы она успешно собралась, надо править файл $HOME/GODOT/mono/mono/utils/mono-mmap-wasm.c. На 193-194 строках в этом файле используется флаг MAP_32BIT, который в современных машинах не нужен, поэтому эти строки можно удалить. Потом начинаем билдить исходники mono: Чтобы все эти скрипты клали результат не в $HOME/mono-installs, а в, например, $HOME/GODOT/mono-installs, к каждой команде, которая это поддерживает, надо приписать --install-dir=$HOME/GODOT/mono-installs. Узнать, поддерживает ли команда указанный флаг --install-dir, можно, как всегда, флагом --help, например: ./linux.py --help. Нам нужная версия 3.5.1 stable. Клонируем репозиторий в $HOME/GODOT/godot. Godot для сборки использует "хрен пойми" какой-то glue, если кратко: сначала надо сбилдить его с кое-какими флагами, запустить godot и вот тогда-то этот glue сгенерируется как раз, а уже только потом билдить сам godot. В директории, где лежат исходники: Первая команда сгенерирует вам недобилд godot, обратите внимание, что если у вас в другом месте лежат сбилденные файлы mono (не в "$HOME/GODOT/mono-installs/desktop-linux-x86_64-release"), то и путь к ним надо указать соответствующий. В папке, куда указывает mono_prefix= должны лежать папки include lib.  Вторая команда из тех, что выше - это просто костыль, который решает проблему, которая, видимо, только у меня произошла. Дело в том, что bin/godot.x11.tools.64.mono искал эту библиотеку и не мог найти, из-за чего падал. Тогда при помощи strace я посмотрел, где он её ищет и скопировал туда.  Третья команда - запуск недобилденного godot, который и сгенерирует файлы glue. Результат: в папке modules/mono/glue/ будут файлы: Наконец-то. Не забываем про mono_prefix. А, да и кстати (возможно об этом надо было сказать чуть раньше): scons - это система сборки. А флаг -j15 указывает ей, сколько потоков использовать. Например, если у вас на компьютере 16 ядер, то команда выше будет билдить движок в 15 потоков, а у вас останется 1 ядро, чтобы смотреть ютубчик, пока дело шьётся. Результат - бинарники в bin папке. Для запуска движка выполнять opt файл (godot.x11.opt.tools.64.mono). Отлично, но мы хотим уметь билдить наши проекты в html. Для этого собираем шаблоны: Ключ javascript_eval=no говорит, чтобы godot по возможности в результирующих билдах игры не использовал eval. Результат - zip-архивы в bin папке. Перемещаем шаблоны экспорта в папку, где godot ожидает их увидеть: BCL - это Base Class Library. Он билдился на шаге 4 (собрать mono сурсы). Без понятия, что это, но я переместил это дело в папку поближе к экспорт-шаблонам, как это сказано в доках по godot. Просто сделайте так, чтобы по пути ~/.local/share/godot/templates/3.5.1.stable.mono/bcl/wasm/ оказались dll файлы из $HOME/GODOT/mono-installs/wasm-bcl/wasm/. Например: Простите, пожалуйста, если что-то в этой инструкции не так. Поймите, это ручная работа и, если тут были опечатки, не судите строго. Я просто хотел сделать маленькую шпору, руководствуясь которой можно было бы поставить godot из сурсов на новый debian 11. Мотив написания этой статьи очевиден: я читал много доков и инструкций и пока читал, фиксировал, что и в каком порядке выполнять. Я проверил, и вроде бы всё работает. Кроме того, я хотел, чтобы $HOME не засорялась всякими файлами, поэтому постарался написать этот туториал, который пытается всё хранить в $HOME/GODOT. Может быть такое, что после всего этого у вас появится каталог $HOME/mono-config, как это было у меня, но его можно безболезненно удалить (что я и сделал, и вроде бы всё работает). Всем спасибо за внимание. Покупайте пшеничное поле. (с) Великий Прикалёль Самый крутой прогер на деревне.