Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Часто задаваемые вопросы
На что способен Godot? Сколько он стоит? Каковы условия лицензирования?
Godot — это свободное программное обеспечение с открытым исходным кодом, доступное по одобренной OSI лицензии MIT.
Вкратце:
Вы можете бесплатно загрузить и использовать Godot для любых целей: личных, некоммерческих, коммерческих или иных.
Вы можете свободно изменять, распространять и пересобирать Godot по любой причине, как не коммерчески, так и коммерчески.
Все содержимое этой сопроводительной документации опубликовано под лицензией Creative Commons Attribution 3.0 (CC-BY 3.0) с указанием авторства "Хуана Линецкий, Ариэла Манзура и сообщества Godot Engine."
Логотипы и иконки также находятся под лицензией Creative Commons. Заметьте, что сторонние библиотеки, включённые в исходный код Godot, могут иметь другие лицензии.
Для полной информации, смотрите COPYRIGHT.txt ,а также LICENSE.txt и LOGO_LICENSE.txt в репозитории Godot.
Также смотрите страницу лицензии официального сайта Godot.
Какие платформы поддерживаются Godot?
Для редактора:
Windows
macOS
Linux, *BSD
Android (в экспериментальном режиме)
Web (в экспериментальном режиме)
Для экспорта ваших игр:
Windows
macOS
Linux, *BSD
Android
iOS
Web
Поддерживается создание 32-х и 64-х битных исполняемых файлов (для платформ, где это возможно); по умолчанию создаются 64-х битные файлы. Официальные сборки macOS поддерживают Apple Silicon так же, как и x86_64.
Некоторые пользователи также сообщают о сборке и использовании Godot для систем на базе ARM с Linux, таких, как Raspberry Pi.
Команда Godot не может обеспечить реализацию экспорта с открытым исходным кодом на консоли из-за условий лицензирования, установленных производителями консолей. Независимо от используемого движка, выпуск игр на консоли — это всегда большой объём работы. Вы можете узнать больше здесь: Поддержка консолей в Godot.
Более подробная информация есть в разделах экспорт и как собрать Godot.
Примечание
Godot 3 также имел поддержку Uniwersal Windows Platform (UWP). Эта платформа была удалена в Godot 4 из-за слабой поддержки, а также того факта, что Microsoft перевёл UWP в категорию устаревшего ПО. Тем не менее в Godot 3 версии current stable, она всё ещё доступна для интересующихся пользователей.
Какие языки программирования поддерживаются в Godot?
Официально поддерживаемые языки для Godot это GDScript, C# и C++. Смотрите подкатегории для каждого языка в секции написание скриптов.
Если вы только начинаете разбираться с Godot или с разработкой игр в целом, то рекомендуем изучить язык GDScript, поскольку он является родным языком для Godot. Как правило, в долгосрочной перспективе скриптовые языки программирования менее эффективны, чем языки низкого уровня, но для прототипирования, создания минимально жизнеспособных продуктов (minimum viable product, MVP) и уменьшения времени выхода на рынок (Time-To-Market, TTM) GDScript предоставляет достаточно быстрый, дружественный и действенный путь разработки.
Обратите внимание, что поддержка C# это довольно новая функция и по пути вы можете столкнуться с некоторыми проблемами. Поддержка C# также в настоящее время отсутствует на веб-платформе. Наше дружелюбное и трудолюбивое сообщество всегда готово решать новые проблемы по мере их возникновения, но поскольку это проект с открытым исходным кодом, то мы рекомендуем сначала поискать решение проблемы самостоятельно. Поиск в обсуждениях на open issues (Открытые вопросы) - это отличный способ приступить к решению возникших проблем.
Что касается новых языков, поддержка возможна с использованием возможностей сторонних решений через GDExtension. (См. вопрос о плагинах ниже.) В настоящее время работа ведётся полным ходом, например, есть неофициальные привязки Godot к Python и Nim.
Что такое GDScript и зачем мне его использовать?
GDScript — это встроенный скриптовый язык программирования Godot. Он был создан с нуля для того, чтобы максимизировать потенциал Godot, сократив количество кода, тем самым предоставляя как начинающим, так и опытным разработчикам возможность максимально быстро извлечь выгоду из всех преимуществ Godot. Если вы когда-нибудь писали что-то на языке, подобном Python, то в GDScript вы почувствуете себя как дома. Для того чтобы посмотреть примеры и ознакомиться с полным набором возможностей, которые предлагает GDScript, советуем ознакомиться с Руководством по созданию скриптов GDScript.
There are several reasons to use GDScript, but the most salient reason is the overall reduction of complexity.
Изначальное намерение создать тесно интегрированный, собственный скриптовый язык для Godot преследовало две цели: во-первых, он сокращает время, необходимое для начала работы с Godot, предоставляя разработчикам быстрый способ ознакомления с движком с упором на производительность; во-вторых - снижает общую сложность обслуживания, уменьшает объем проблем и позволяет разработчикам движка сосредоточиться на устранении ошибок и улучшении функций, связанных с ядром движка, вместо того, чтобы тратить много времени на попытки заставить небольшой набор дополнительных функций работать на большом количестве языков.
Since Godot is an open source project, it was imperative from the start to prioritize a more integrated and seamless experience over attracting additional users by supporting more familiar programming languages, especially when supporting those more familiar languages would result in a worse experience. We understand if you would rather use another language in Godot (see the list of supported options above). That being said, if you haven't given GDScript a try, try it for three days. Just like Godot, once you see how powerful it is and how rapid your development becomes, we think GDScript will grow on you.
Более подробная информация, о том, как комфортабельно использовать GDScript или динамически типизированные языки может быть найдена в руководстве GDScript: Введение в динамически типизированные языки.
Каковы были мотивы создания GDScript?
В ранние годы движок использовал скриптовый язык Lua. Lua может быть быстрым благодаря LuaJIT, но создание привязки к объектно-ориентированной системе (с помощью fallbacks) было сложным и медленным и требовало огромного количества кода. После некоторых экспериментов с Python, мы поняли, что он также является сложным для встраивания.
Основными причинами создания своего собственного скриптового языка для Godot были:
Слабая поддержка потоков, которые использует Godot, в виртуальных машинах скриптовых языков (Lua, Python, Squirrel, JS, AS, и пр.).
В большинстве виртуальных машин нет хорошей поддержки расширения классов, и процесс адаптации в Godot крайне неэффективен (Lua, Python, JS).
Многие существующие языки имеют ужасные интерфейсы для привязки к C++, что приводит к большому количеству кода, ошибкам, "бутылочным горлышкам" и общей неэффективности (Lua, Python, Squirrel, JS и т.д.). Мы хотели сосредоточиться на качественном движке, а не на большом количестве интеграций.
Отсутствие родных векторных типов (Vector3, Transform3D и др.) приводило к серьёзному уменьшению производительности, когда использовались собственные типы (Lua, Python, Squirrel, JavaScript, ActionScript и т.д.).
Сборщик мусора приводит к остановке или излишне большому использованию памяти (Lua, Python, JS, AS и т.д.).
Сложная интеграция с редактором кода для обеспечения автодополнения, редактирования в реальном времени и т.д. (это относиться ко всем языкам).
GDScript был разработан, чтобы решить проблемы, описанные выше, и не только.
Which programming language is fastest?
In most games, the scripting language itself is not the cause of performance problems. Instead, performance is slowed by inefficient algorithms (which are slow in all languages), by GPU performance, or by the common C++ engine code like physics or navigation. All languages supported by Godot are fast enough for general-purpose scripting. You should choose a language based on other factors, like ease-of-use, familiarity, platform support, or language features.
In general, the performance of C# and GDScript is within the same order of magnitude, and C++ is faster than both.
Comparing GDScript performance to C# is tricky, since C# can be faster in some specific cases. The C# language itself tends to be faster than GDScript, which means that C# can be faster in situations with few calls to Godot engine code. However, C# can be slower than GDScript when making many Godot API calls, due to the cost of marshalling. C#'s performance can also be brought down by garbage collection which occurs at random and unpredictable moments. This can result in stuttering issues in complex projects, and is not exclusive to Godot.
C++, using GDExtension, will almost always be faster than either C# or GDScript. However, C++ is less easy to use than C# or GDScript, and is slower to develop with.
You can also use multiple languages within a single project, with cross-language scripting, or by using GDExtension and scripting languages together. Be aware that doing so comes with its own complications.
Какие форматы 3D моделей поддерживает Godot?
Более детальную информацию о поддерживаемых форматах, как их экспортировать из вашего 3D-редактора, а также импортировать в Godot можете найти здесь: Импорт 3D сцен.
Будут ли [закрытые SDK такие, как FMOD, GameWorks, и т.д.] поддерживаться в Godot?
Цель Godot - создать свободный и открытый, модульный и расширяемый движок с лицензией MIT. Сообщество разработчиков движка не планирует поддерживать сторонние, закрытые/проприетарные SDK, так как интеграция с ними противоречит этике Godot.
Тем не менее поскольку Godot является открытым и модульным, ничто не мешает вам или кому-либо еще заинтересоваться добавлением этих библиотек в качестве модуля и распространять вашу игру с ним в качестве открытого или закрытого источника.
Чтобы узнать, как еще можно обеспечить поддержку вашего SDK, прочтите в вопросах о плагинах выше.
Если вы знаете о стороннем SDK, который не поддерживается Godot, но предлагает бесплатную интеграцию с открытым исходным кодом, подумайте о том, чтобы начать работу по интеграции самостоятельно. Godot не принадлежит одному человеку; он принадлежит сообществу, и он растёт вместе с такими амбициозными участниками сообщества, как вы.
Как я могу расширить Godot?
Для расширения Godot, например, для создания плагинов редактора Godot или добавления поддержки дополнительных языков, взгляните на Редактор плагинов и инструментальные скрипты (tool скрипты).
Кроме того, см. официальный пост в блоге про GDExtension, о том как разрабатывать нативные расширения для Godot:
Вы также можете взглянуть на реализацию GDScript, модулей Godot, а также на интеграцию физического движка Jolt. Это было бы хорошей отправной точкой для того, чтобы увидеть, как другая сторонняя библиотека интегрируется с Godot.
Как мне установить редактор Godot на свою систему (для установки на рабочий стол)?
Поскольку для запуска Godot не нужно устанавливать его в систему, это означает, что интеграция с рабочим столом не происходит автоматически. Есть два способа решить эту проблему. Вы можете установить Godot из Steam (все платформы), Scoop (Windows), Homebrew (macOS) или Flathub (Linux). Это автоматически выполнит необходимые шаги для интеграции с рабочим столом.
Либо же вы можете вручную выполнить шаги, которые программа установки сделала бы за вас:
Windows
Переместите исполняемый файл Godot в стабильное место (т.е. за пределы папки "Загрузки"), чтобы в будущем Вы случайно не переместили его или не повредили ярлык.
Щелкните правой кнопкой мыши на исполняемый файл Godot и выберите Создать ярлык.
Переместите созданный ярлык в
%APPDATA%\Microsoft\Windows\Start Menu\Programs
. Это общепользовательское расположение для ярлыков, которые будут отображаться в меню "Пуск". Вы также можете прикрепить Godot на панель задач, нажав на правую кнопку мыши по исполняемому файлу и выбрав Прикрепить на Панель Задач.
macOS
Переместите извлечённое приложение Godot в /Applications/Godot.app
, затем, если Вы хотите, можете переместить его на панель задач. Spotlight сможет найти Godot, пока он будет находиться в /Applications
or ~/Applications
.
Linux
Переместите бинарный файл Godot в стабильное место (т.е. за пределы папки "Загрузки"), чтобы в будущем Вы случайно не переместили его и не повредили ярлык.
Переименуйте и переместите бинарный файл Godot в место вашей переменной среды
PATH
. Обычно это/usr/local/bin/godot
или/usr/bin/godot
. Для этого требуются права администратора, но это также позволит вам запустить редактор Godot из терминала, введя``godot``.Если вы не можете переместить редактор Godot в защищённое место, вы можете оставить бинарный файл где-нибудь в домашнем каталоге, и отредактировать строку
Path=
в файле.desktop
, приведённой ниже, чтобы включить его в полную абсолютную переменную path в бинарном файле Godot.
Сохраните этот .desktop файл в
$HOME/.local/share/applications/
. Если у вас есть права администратора, то вы также можете сохранить.desktop
файл в/usr/local/share/applications
, чтобы предоставить доступ к ярлыку всем пользователям.
Является ли Godot портативным?
При своих настройках по умолчанию Godot является полу-портативным. Его исполняемый файл может быть запущен из любого места (включая места, недоступные для записи) и никогда не требует права администратора.
Однако, конфигурационные файлы будут написаны для общепользовательских настроек или каталога данных. Обычно это хороший метод, но он означает, что конфигурационные файлы не перенесут оборудование, если вы скопируете папку, содержащую исполняемый файл Godot. См. :ref:`doc_data_paths`для дополнительной информации.
Если требуется настоящая переносимость (например, для использования на USB-накопителе), выполните действия, описанные в Автономный режим.
Почему Godot использует Vulkan или OpenGL вместо Direct3D?
Прежде всего, Godot стремится к кроссплатформенности и открытым стандартам. OpenGL и Vulkan - технологии, открытые и доступные на (почти) всех платформах. Благодаря этому, проект, созданный с Godot на Windows, будет готов к работе на Linux, macOS и др.
While Vulkan and OpenGL remain our primary focus for their open standard and cross-platform benefits, Godot 4.3 introduced experimental support for Direct3D 12. This addition aims to enhance performance and compatibility on platforms where Direct3D 12 is prevalent, such as Windows and Xbox. However, Vulkan and OpenGL will continue as the default rendering drivers on all platforms, including Windows.
Почему Godot стремится сохранить свой набор основных функций маленьким?
Godot намеренно не включает функции, которые могут быть реализованы дополнениями, если только они не используются очень часто. Одним из примеров этого может быть расширенная функциональность искусственного интеллекта.
На это есть несколько причин:
Сопровождение кода и поиск ошибок. Каждый раз, когда мы принимаем новый код в репозиторий Godot, существующие соавторы часто берут на себя ответственность за его поддержку. Некоторые соавторы не всегда остаются с нами после слияния их кода, что может затруднить нам поддержку данного кода. Это может привести к появлению плохо поддерживаемых функций с ошибками, которые никогда не будут исправлены. Кроме того API которые необходимо тестировать и проверять на наличие регрессий, со временем увеличиваются.
Легкость вклада. Сохраняя небольшую и аккуратную кодовую базу, ее можно быстро и легко компилировать из исходного кода. Это облегчает новым участникам начало работы с Godot, не требуя от них покупки высокопроизводительного оборудования.
Сохранение небольшого размера двоичного файла для редактора. Не у всех есть быстрое подключение к Интернету. Обеспечение того, чтобы каждый мог загрузить редактор Godot, извлечь его и запустить менее чем за 5 минут, делает Godot более доступным для разработчиков во всех странах.
Обеспечение небольшого размера двоичных файлов для шаблонов экспорта. Это напрямую влияет на размер проектов, экспортируемых с помощью Godot. На мобильных и веб-платформах сохранение небольшого размера файлов важно для обеспечения быстрой установки и загрузки на маломощных устройствах. Опять же, во многих странах высокоскоростной Интернет не всегда доступен. Кроме того, в таких странах часто действуют строгие ограничения на использование данных.
Согласно всему вышеперечисленному, мы должны подходить избирательно к тому, что принимать в качестве основных функций в Godot. Вот почему мы стремимся перенести некоторые основные функции в официально поддерживаемые аддоны в будущих версиях Godot. В контексте объема занимаемой памяти это также имеет преимущество, ведь вы платите только за то, что вы действительно используете в своем проекте. (А пока вы можете компилировать пользовательские шаблоны экспорта с отключенными неиспользуемыми функциями, чтобы оптимизировать размер исходника вашего проекта.)
Как создавать ассеты под множество разрешений и соотношений сторон дисплея?
Этот вопрос возникает часто, и это, вероятно, благодаря недопониманию, созданному Apple, когда они изначально удвоили разрешение своих устройств. Это заставляло людей думать, что иметь одинаковые ассеты в разных разрешениях было хорошей идеей, поэтому многие продолжали идти по этому пути. Это работало до определенного момента и только для устройств Apple, но затем было создано несколько устройств Android и Apple с различными разрешениями и соотношениями сторон с очень широким диапазоном размеров и DPI.
Самый распространенный и правильный способ достичь этого - использовать одно базовое разрешение для игры и управлять только различными пропорциями экрана. В основном, это нужно для 2D, так как в 3D это просто вопрос горизонтального или вертикального угла обзора камеры.
Выберите одно базовое разрешение для своей игры. Даже если есть устройства, которые имеют разрешение выше 1440p и устройства, которые имеют разрешение ниже 400p, обычное аппаратное масштабирование на вашем устройстве позаботится об этом практически без затрат. Наиболее распространенные варианты - либо около 1080p (1920x1080), либо 720p (1280x720). Имейте в виду, что чем выше разрешение, тем больше ваши ассеты, будут занимать памяти и тем больше времени им потребуется для загрузки.
Используйте параметры растяжения в Godot; растяжение холста при сохранении пропорций работает лучше всего. Посмотрите учебник: Multiple resolutions о том, как этого добиться.
Определите минимальное разрешение, а затем примите решение, хотите ли вы, чтобы ваша игра растягивалась вертикально или горизонтально для разных соотношений сторон или была в одном минимальном разрешении и отображала черные прямоугольники по краям. Это также объясняется в Multiple resolutions.
Для пользовательских интерфейсов используйте закрепление, чтобы определить, где элементы управления должны оставаться и перемещаться. Если пользовательские интерфейсы являются очень сложными, подумайте о том, чтобы изучить контейнеры.
И всё! Ваша игра будет работать в нескольких разрешениях.
Когда выйдет следующий релиз Godot?
Когда он будет готов! Смотрите Когда выйдет следующий релиз? для дополнительного ознакомления.
Какую версию Godot я должен использовать для нового проекта?
Мы рекомендуем использовать Godot 4.x для новых проектов, но в зависимости от набора функций, который вам нужен, возможно вам лучше использовать Godot 3.x. Смотрите Какую версию мне следует использовать для нового проекта? для дополнительного ознакомления.
Следует ли мне обновить свой проект до новых версий Godot?
Некоторые новые версии более безопасны для обновления, чем другие. В целом, решение о том, стоит ли вам обновляться, зависит от обстоятельств вашего проекта. См. раздел Должен ли я обновить свой проект, чтобы использовать новые версии движка? для дополнительного ознакомления.
Should I use the Forward+, Mobile, or Compatibility renderer?
You can find a detailed comparison of the renderers in Renderers.
Я хочу внести свой вклад! С чего мне начать?
Потрясающе! Как проект с открытым исходным кодом, Godot процветает благодаря инновациям и амбициям таких разработчиков, как вы.
Лучший способ начать вносить свой вклад в развитие Godot - это использовать его и сообщать о любых проблемах, с которыми вы можете столкнуться. Хороший отчёт об ошибке с чёткими шагами по её воспроизведению поможет вашим соавторам быстро и эффективно исправить ошибки. Вы также можете сообщать о проблемах, которые вы обнаружили в онлайн документации.
Если вы готовы представить свой первый запрос на включение (PR), выберите любую проблему, которая вас заинтересовала, из одной из приведенных выше ссылок и попробуйте решить ее. Вам потребуется научиться компилировать движок из исходных кодов или создавать документацию. Также вам нужно ознакомиться с Git, системой управления версиями, которую используют разработчики Godot.
Мы объясняем, как работать с исходным кодом движка, как редактировать документацию и какие ещё есть способы внести свой вклад, в нашей документации для участников.
Можно ли использовать Godot для создания не игровых приложений?
Да! Godot обладает обширной встроенной системой пользовательского интерфейса, а небольшой размер дистрибутива может сделать его подходящей альтернативой таким фреймворкам, как Electron или Qt.
При создании неигрового приложения не забудьте включить low-processor mode в настройках проекта, чтобы уменьшить использование процессора и видеокарты.
Загляните в Material Maker и Pixelorama для примеров приложений с открытым исходным кодом, созданных с помощью Godot.
Можно ли использовать Godot как библиотеку?
Godot предназначен для использования с его редактором. Мы рекомендуем вам попробовать редактор, так как это, скорее всего, сэкономит вам время в долгосрочной перспективе. Нет никаких планов использовать Godot в качестве библиотеки, поскольку это сделало бы остальную часть движка более запутанной и трудной для использования обычными пользователями.
Если вы хотите использовать библиотеку отрисовки, рассмотрите возможность использования установленного движка рендеринга. Имейте в виду, что движки рендеринга обычно имеют меньшие сообщества по сравнению с Godot. Это затруднит поиск ответов на ваши вопросы.
Какой инструментарий пользовательского интерфейса использует Godot?
Godot не использует стандартный набор инструментов ГИП, наподобие GTK, Qt или wxWidgets. Вместо этого Godot использует собственный набор инструментов пользовательского интерфейса, отрисовывающий с помощью OpenGL ES или Vulkan. Этот инструментарий представлен в виде узлов Control, которые используются для визуализации редактора (написанного на C++). Эти узлы управления также можно использовать в проектах на любом языке сценариев, поддерживаемом Godot.
Этот собственный набор инструментов позволяет использовать преимущества аппаратного ускорения и иметь единообразный внешний вид на всех платформах. Вдобавок ко всему, ему не нужно иметь дело с оговорками лицензирования LGPL, которые идут с GTK или Qt.
Этот собственный набор инструментов пользовательского интерфейса нельзя использовать в качестве библиотеки, но вы все равно можете использовать Godot для создания неигровых приложений с помощью редактора.
Почему Godot использует систему сборки SCons?
Godot использует систему сборки SCons. Переход на другую систему сборки в ближайшее время не планируется. Есть много причин, по которым мы выбрали SCons вместо других альтернатив. Например:
Godot может быть скомпилирован для множества различных платформ: все ПК платформы, все мобильные платформы, множество консолей, и WebAssembly.
Разработчикам часто нужно компилировать для множества платформ в одно и то же время, или даже разных целей на одной платформе. Они не хотят перенастраивать и перестраивать проект каждый раз. SCons позволяет сделать это без лишней головной боли, без ломания сборок.
SCons совершенно никогда не сломает сборку независимо от количества изменений, конфигураций, дополнений, удалений и тд.
Процесс сборки Godot не прост. Множество файлов созданы в коде(связующие(binders)), другие прошли через парсинг (шейдеры), а другие нуждаются в тонкой настройке (плагины). Всё это требует сложной логики которая может бы легко написана на подходящем языке программирования (например Python) и это лучше, чем использовать язык с макросами нужным только для сборки.
В процессе сборки Godot активно используются инструменты кросс-компиляции. Каждая платформа имеет свой специфический процесс обнаружения, и все они должны обрабатываться как особые случаи со специальным кодом, написанным для каждого из них.
Пожалуйста, постарайтесь отнестись к этому непредвзято и хотя бы немного ознакомиться с SCons, если вы планируете собрать Godot самостоятельно.
Почему Godot не использует STL (стандартную библиотеку шаблонов)?
Как и многие другие библиотеки (например, Qt), Godot не использует STL (за некоторыми исключениями, такими как потоковые примитивы). Мы считаем, что STL - это отличная библиотека общего назначения, но у нас есть особые требования к Godot.
Шаблоны STL создают очень большие символы, что приводит к огромным отладочным двоичным файлам. Вместо этого мы используем несколько шаблонов с очень короткими именами.
Большинство наших контейнеров удовлетворяют особые потребности, например Vector, который использует копирование при записи, которое мы используем для передачи данных, или система RID, которая требует O(1) времени доступа. Аналогично, наши реализации хеш-карт предназначены для бесшовной интеграции с внутренними типами движков.
В наши контейнеры встроена функция отслеживания использования памяти, которая помогает лучше отслеживать использование памяти.
Для больших массивов мы используем память в виде пулов, отображаемых либо на предварительно выделенный буфер, либо на виртуальную память.
Мы используем наш собственный тип String, так как предоставляемый STL является слишком простым и не имеет надлежащей поддержки интернационализации.
Почему Godot не использует исключения?
Мы считаем, что игры не должны крашиться, несмотря ни на что. Если случится неожиданная ситуация, Godot выдаст ошибку (которую можно отследить вплоть до скрипта), но затем попытается исправить ее как можно более изящно и продолжить работу.
Кроме того, исключения значительно увеличивают размер двоичного исполняемого файла и приводят к увеличению времени компиляции.
Использует ли Godot ECS (Entity Component System)?
Godot не использует ECS и полагается на наследование. Хотя универсального лучшего подхода не существует, мы обнаружили, что использование наследования обеспечивает лучшее удобство использования и при этом достаточно быстрое для большинства случаев применения.
That said, nothing prevents you from making use of composition in your project by creating child Nodes with individual scripts. These nodes can then be added and removed at runtime to dynamically add and remove behaviors.
Более подробную информацию о выборах в архитектуре Godot можно найти в этой статье.
Почему Godot не принуждает пользователей к внедрению DOD (дизайн, ориентированный на данные(Data-Oriented Design))?
В то время как Godot пытается как можно лучше использовать согласованность кэша, мы считаем, что пользователей не нужно заставлять использовать практики DOD.
DOD - это в основном оптимизация когерентности кэша, которая может дать значительный прирост производительности только при работе с десятками тысяч объектов, которые обрабатываются каждый кадр с небольшими изменениями. То есть, если вы перемещаете несколько сотен спрайтов или врагов за кадр, DOD не даст значимого прироста производительности. В этом случае вам следует рассмотреть другой подход к оптимизации.
В подавляющем большинстве игр это не нужно, и Godot предоставляет удобных помощников для выполнения работы в большинстве случаев, когда вы делаете это в ручную.
Если игра должна обрабатывать большое количество объектов, то мы рекомендуем использовать C++ и GDExtension для высокозатратных задач и GDScript (или C#) для остальной части игры.
Как я могу поддержать разработку Godot или внести свой вклад?
Смотрите How to contribute.
Кто работает над Godot? Как я могу связаться с вами?
Смотрите соответствующую страницу на официальном сайте Godot.