Часто задаваемые вопросы

На что способен Godot? Сколько он стоит? Каковы условия лицензирования?

Godot - это Свободное и открытое программное обеспечение, которое доступно под OSI-утвержденной MIT лицензией. Это означает, что он свободен как «свобода слова» равно как и «свобода действий.»

Вкратце:

  • Вы можете бесплатно скачивать и использовать Godot для любых целей, личных, некоммерческих, коммерческих или иных;
  • Вы можете свободно модифицировать, распространять и пересобирать Godot в любых целях, как коммерческих, так и некоммерческих.

Всё содержимое этой документации выпущено под разрешительной лицензией Creative Commons Attribution 3.0 (CC-BY 3.0), за авторством «Juan Linietsky, Ariel Manzur и сообществом Godot Engine»

Логотипы и иконки также находятся под лицензией Creative Commons. Заметьте, что сторонние библиотеки, включенные в исходный код Godot могут иметь другие лицензии.

Для полной информации, смотрите COPYRIGHT.txt а также LICENSE.txt и LOGO_LICENSE.txt в репозитории Godot.

Также смотрите страницу лицензии официального сайта Godot.

Какие платформы поддерживаются Godot?

Для редактора:

  • Windows
  • macOS
  • X11 (Linux, *BSD)

Для экспорта ваших игр:

  • Windows (и UWP)
  • macOS
  • X11 (Linux, *BSD)
  • Android
  • iOS
  • Web

Поддерживается создание как 32-х, так и 64-х битных исполняемых файлов (для платформ, где это возможно); по умолчанию создаются 64-х битные файлы.

Некоторые пользователи также сообщают о сборке и использовании Godot для систем на базе ARM с Linux, таких как Raspberry Pi.

Ведутся работы (вне основного проекта Godot) по запуску на игровых консолях, но в стандартные скрипты сборки и шаблоны экспорта такие расширения не входят.

Более подробная информация есть в разделах экспорт и как собрать Godot.

Какие языки программирования поддерживаются в Godot?

Официально поддерживаемые языки для Godot это GDScript, Visual Scripting, C# и C++. Смотрите подкатегории для каждого языка в секции Скриптинг.

Если вы только начинаете разбираться с Godot или с разработкой игр в целом, то рекомендуем обучиться языку GDScript, поскольку он является родным языком для Godot. Хотя языки сценариев, как правило, менее эффективны, чем языки более низкого уровня в долгосрочной перспективе, для прототипирования, разработки минимальных жизнеспособных продуктов (MVP) и фокусирования на Time-To-Market (TTM), GDScript предоставляет достаточно быстрый, дружественный и действенный путь для создания ваших игр.

Обратите внимание, что поддержка C# это довольно новая функция и по пути вы можете столкнуться с некоторыми проблемами. Наше дружелюбное и трудолюбивое сообщество всегда готово решать новые проблемы по мере их возникновения, но поскольку это проект с открытым исходным кодом, то мы рекомендуем сначала выполнить некоторую должную осмотрительность. Поиск в обсуждениях на open issues это отличный способ приступить к решению возникших проблем.

Что касается новых языков, поддержка возможна с использованием возможностей сторонних решений GDNative / NativeScript / PluginScript. (См. вопрос о плагинах ниже.) В настоящее время работа ведется полным ходом, например, есть неофициальные привязки Godot к Python и Nim.

Что такое GDScript и зачем мне его использовать?

GDScript это интегрированный в Godot язык сценариев. Он был создан с нуля, что бы максимально задействовать потенциал движка Godot с минимальным количеством кода. Что позволяет как начинающим, так и опытным разработчикам как можно быстрее использовать сильные стороны Godot. Если вы когда нибудь писали что нибудь на языке, вроде Python, то тут вы почувствуете себя как дома. Примеры, история и полный обзор возможностей, предлагаемых GDScript, ждут вас в GDScript scripting guide.

Есть несколько причин использовать GDScript – особенно когда вы прототипируете, в альфа/бета состояниях вашего проекта или создании игры не AAA класса – но наиболее существенной причиной является общее снижение сложности.

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

Поскольку Godot является проектом с открытым исходным кодом, с самого начала было необходимо установить приоритет на безболезненном привлечении новых пользователей, через поддержку уже знакомых им языков программирования, особенно когда поддержка этих более знакомых языков приводит к не самому лучшему опыту. Мы поймём, если вы предпочтёте использовать в Godot другой язык (см. список поддерживаемых языков выше). Но, как говорится, если вы дадите GDScript шанс и просто попробуете его в течении трёх дней. То так же, как Godot, однажды вы увидите насколько мощной и быстрой становится ваша разработка, мы думаем, что GDScript вырастет в ваших глазах.

Более подробная информация, о том, как комфортабельно использовать GDScript или динамически типизированные языки может быть найдена в руководстве GDScript: Введение в динамически типизированные языки.

Каковы были мотивы создания GDScript?

Основными причинами создания своего собственного скриптового языка для Godot были:

  1. Слабая поддержка потоков, которые использует Godot, в виртуальных машинах скриптовых языков (Lua, Python, Squirrel, JS, AS, и пр.).
  2. В большинстве виртуальных машин нет хорошей поддержки расширения класса и процесс адаптации в Godot крайне неэффективен (Lua, Python, JS).
  3. Многие существующие языки имеют ужасные интерфейсы для привязки к C ++, что приводит к большому количеству кода, ошибкам, узким местам и общей неэффективности (Lua, Python, Squirrel, JS и т. Д.). Мы хотели сосредоточиться на отличном движке, а не на большом количестве интеграций.
  4. Отсутствие родных векторных типов (vector3, matrix4, и т.д.), приводило к серьёзному уменьшению производительности когда использовались собственные типы (Lua, Python, Squirrel, JS, AS и т.д.).
  5. Сборщик мусора приводит к остановке или излишне большому использованию памяти (Lua, Python, JS, AS и т.д.).
  6. Сложная интеграция с редактором кода для обеспечения его завершенности, редактирование в реальном времени и т.д. (все они). Это очень хорошо поддерживает GDScript.

GDScript был разработан, что бы разрешить проблемы описанные выше и не только.

Какой формат 3D моделей поддерживает Godot?

Godot поддерживает Collada через экспортер OpenCollada (Maya, 3DSMax).

Если вы используете Blender, то взгляните на наш собственный Better Collada Exporter.

Начиная с версии Godot 3.0, поддерживается glTF.

SDK для FBX имеет очень ограниченную лицензию, которая несовместима с открытой лицензией движка Godot. Как уже было сказано, поддержка FBX все еще возможна, с помощью сторонних плагинов. (См. Вопрос о плагинах выше.)

Будет ли [Закрытый SDK такой как FMOD, GameWorks, и т.д.] поддерживаться в Godot?

Целью Godot является создание бесплатного и открытого движка с лицензией MIT, который является модульным и расширяемым. Сообщество разработчиков движка не планирует поддерживать сторонние SDK с закрытым исходным кодом/проприетарные SDK, поскольку интеграция с ними будет противоречить идеалу Godot.

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

Чтобы узнать как еще можно обеспечить поддержку вашего SDK, взгляните на вопрос о плагинах выше.

Если вы знаете стороннее SDK, которое не поддерживается Godot, но при этом бесплатное и с открытым исходным кодом, тогда вы можете начать работу по интеграции самостоятельно. Godot не принадлежит одному человеку; он принадлежит сообществу, растет вместе с амбициозными участниками сообщества, такими как вы.

Как ассеты должны быть созданы, чтобы поддерживать множество разрешений и соотношений сторон экрана?

Этот вопрос возникает часто, и это, вероятно, благодаря недопониманию, созданному Apple, когда они изначально удвоили разрешение своих устройств. Это заставляло людей думать, что иметь одинаковые ассеты в разных разрешениях было хорошей идеей, поэтому многие продолжали идти по этому пути. Это работало до определенного момента и только для устройств Apple, но затем было создано несколько устройств Android и Apple с различными разрешениями и соотношениями сторон с очень широким диапазоном размеров и DPI.

Самый распространенный и правильный способ достичь этого - использовать одно базовое разрешение для игры и управлять только различными пропорциями экрана. В основном, это нужно для 2D, так как в 3D это просто вопрос угла обзора камеры по осям X и Y (Camera XFov/YFov).

  1. Выберите одно базовое разрешение для своей игры. Даже если есть устройства, которые поднимаются до 2K и устройства, которые опускаются до 400p, обычное аппаратное масштабирование на вашем устройстве позаботится об этом практически без затрат. Наиболее распространенные варианты - либо около 1080p (1920x1080), либо 720p (1280x720). Имейте в виду, что чем выше разрешение, тем больше ваши ассеты, больше памяти они будут занимать и больше времени им потребуется для загрузки.
  2. Используйте варианты растягивания в Godot. 2D растяжение с сохранением пропорций работает лучше всего. Проверьте Multiple resolutions урок о том, как этого достичь.
  3. Определите минимальное разрешение, а затем решите, хотите ли вы, чтобы ваша игра растягивалась вертикально или горизонтально для разных соотношений сторон или была в одном минимальном разрешении, с отображением черных шкал прогресса по краям. Это также объясняется на предыдущем шаге.
  4. Для пользовательских интерфейсов используйте закрепление, чтобы определить, где элементы управления должны оставаться и перемещаться. Если пользовательские интерфейсы являются очень сложными, подумайте о том, как использовать контейнеры.

И всё! Ваша игра будет работать в нескольких разрешениях.

Если вы хотите сделать игру пригодной к работе на старых устройствах с маленькими экранами (меньше чем 300 пикселей в ширину), вы можете использовать опцию экспорта для сжатия картинок и настроить проект на использование необходимых разрешений экрана в App Store или Google Play.

Как я могу расширить Godot?

Для расширения Godot, например, для создания плагинов редактора Godot или добавления поддержки дополнительных языков, взгляните на EditorPlugins и инструмент-скрипты (tool скрипты).

Также смотрите сообщения в официальном блоге по этим темам:

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

Я хочу внести свой вклад! С чего мне начать?

Это потрясающе! Проект с открытым исходным кодом, Godot процветает за счет инноваций и амбиций таких разработчиков, как вы.

Для начала вам нужно ознакомиться с разделом проблемы. Найдите проблему, которая вас заинтересовала, затем перейдите к Как внести свой вклад, чтобы узнать как создать форк, модифицировать, и создать Pull Request (PR) с вашими изменениями.

У меня есть отличная идея для Godot. Как я могу поделиться ей?

Может возникнуть соблазн привнести некоторые идеи в Godot, например, те, которые приводят к массивным изменениям ядра, какому-то подражанию тому, что делает другой игровой движок, или реализовать альтернативные рабочие процессы, которые вы хотели бы встроить в редактор. Это здорово, и мы благодарны за то, что такие мотивированные люди хотят внести свой вклад, но фокус Godot есть и всегда будет в том, что указано в дорожной карте, тема „устранение ошибок и неполадок“ находится по этой ссылке, также вы можете обсудить их в этой теме с другими участниками сообщества.

Большинству разработчиков в сообществе Godot будет интереснее узнать о таких вещах, как:

  • Ваш опыт использования данного программного обеспечения и возникающие у вас проблемы (нас волнует это гораздо больше, чем идеи об улучшениях).
  • Возможности, которые вы бы хотели видеть реализованными, потому что они нужны вам в вашем проекте.
  • Концепции, которые было сложно понять в процессе изучения программы.
  • Части вашего рабочего процесса, которые вы хотели бы видеть оптимизированными.
  • Части, где вам не хватает понятных уроков или документация недостаточно понятная.

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

Хороший способ подхода к обмену идеями и проблемами с сообществом — это набор пользовательских историй. Объясните, что вы пытаетесь сделать, какое поведение вы ожидаете, а затем, какое поведение на самом деле произошло. Обрамление проблем и идей таким образом поможет всему сообществу сосредоточиться на улучшении опыта разработчиков в целом.

Плюс в карму за предоставление скриншотов, конкретных значений, тестовых случаев или проектов-примеров (если возможно).

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

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

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

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