Часто задаваемые вопросы (Godot) ч.6

FAQ Godot ч.5

Почему Godot не использует STL (стандартную библиотеку шаблонов)?

Как и многие другие библиотеки (например, Qt), Godot не использует STL. Мы считаем, что STL — отличная библиотека общего назначения, но у нас были особые требования к Godot.

  • Шаблоны STL создают очень большие символы, что приводит к огромным отладочным двоичным файлам. Вместо этого мы используем несколько шаблонов с очень короткими именами.
  • Большинство наших контейнеров удовлетворяют особые потребности, например Vector, который использует копирование при записи, которое мы используем для передачи данных, или система RID, которая требует O(1) времени доступа для производительности. Аналогично, наши реализации хеш-карт предназначены для бесшовной интеграции с внутренними типами движков.
  • В наши контейнеры встроена функция отслеживания использования памяти, которая помогает лучше отслеживать использование памяти.
  • Для больших массивов мы используем память в виде пулов, отображаемых либо на предварительно выделенный буфер, либо на виртуальную память.
  • Мы используем наш собственный тип String, так как предоставляемый STL является слишком простым и не имеет надлежащей поддержки интернационализации.

Почему Godot не использует исключения?

Мы считаем, что игры не должны крашиться, несмотря ни на что. Если случится неожиданная ситуация, Godot выдаст ошибку (которую можно отследить вплоть до скрипта), но затем попытается исправить ее как можно более изящно и продолжить работу.

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

Почему Godot не навязывает применение RTTI?

Godot предоставляет собственную систему приведения типов, внутренняя реализация которой предусматривает возможность использования RTTI. Отключение RTTI в Godot означает достижение значительно меньшего объёма двоичных исполняемых файлов ценой небольшой потери производительности.

Использует ли Godot ECS (систему сущность-компонент)?

Godot не использует ECS и полагается на наследование вместо этого. Хотя нет универсально лучшего подхода, мы обнаружили, что использование подхода на основе наследования обеспечивает лучшее удобство использования, при этом по-прежнему достаточно быстр для большинства случаев.

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

Почему Godot не заставляет пользователей реализовывать DOD (ориентированный на данные дизайн)?

Хотя Godot внутренне старается использовать когерентность кэша насколько это возможно, мы считаем, что пользователей не нужно заставлять использовать практики DOD.

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

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

Если игре необходимо обрабатывать такое большое количество объектов, нашей рекомендацией является использование C++ и GDExtensions для задач, требующих высокой производительности, и GDScript (или C#) для остальной части игры.

Как я могу поддержать разработку Godot или внести свой вклад?

Смотрите Пути содействия.

Кто работает над Godot? Как я могу связаться с вами?

Смотрите соответствующую страницу на официальном сайте Godot.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

18 − пять =

Прокрутить вверх