Существует несколько приложений, таких как Blitz3D или другие виды инструментов для создания игр, которые компилируют скрипты или другие игровые данные в один исполняемый файл. Как они это делают?
источник
Существует несколько приложений, таких как Blitz3D или другие виды инструментов для создания игр, которые компилируют скрипты или другие игровые данные в один исполняемый файл. Как они это делают?
Разные инструменты подходят к этому по-разному, но способ, которым Blitz3D делает это, заключается в объединении кода и интерпретатора в пакет. Затем, когда вы запускаете exe, он запускает интерпретатор и передает в комплекте код. Это почти так же, как, скажем, Python работает при использовании py2exe.
Во многих инструментах разработки игр код, который поставляется вместе с исполняемым файлом, является просто необработанным текстом, который интерпретатор анализирует. Однако некоторые используют подход байт-кода, такой как Java, где исходный код превращается в промежуточную форму, которую использует виртуальная машина. Я думаю, что Unity использует этот последний подход, но я не уверен.
Вдобавок ко всему, все инструменты разработки игр, которые я могу себе представить, основаны на том, что исполняемые файлы пакета либо основаны на подходе интерпретатора ядра / виртуальной машины, а затем упаковывают его с кодом, либо представляют собой библиотеки, которые вы компилируете в Visual Studio или как угодно.
Поток программы, обработка переменных и т.п. скомпилированы в чистый машинный код, в то время как высокоуровневые команды реализованы как функции библиотеки C ++, которые вызываются из библиотеки времени выполнения, скомпилированной в каждый сгенерированный Blitz исполняемый файл. Не из семейства Blitz Basic интерпретируется как Python.
источник