Godot ( / ˈ ɡ ɒ d oʊ / [a] ) — кроссплатформенный , бесплатный игровой движок с открытым исходным кодом, выпущенный под разрешительной лицензией MIT . Первоначально он был разработан аргентинскими разработчиками программного обеспечения Хуаном Линиецки и Ариэлем Манзуром [6] для нескольких компаний в Латинской Америке до его публичного выпуска в 2014 году . [7] Среда разработки работает на многих платформах и может экспортироваться еще на несколько платформ. Он предназначен для создания как 2D- , так и 3D- игр для ПК , мобильных и веб- платформ, а также может использоваться для разработки неигрового программного обеспечения, включая редакторы.
Godot позволяет разработчикам видеоигр создавать как 3D, так и 2D игры, используя несколько языков программирования, таких как C++, C# и GDScript. [8] Он использует иерархию узлов для облегчения процесса разработки. [9] Классы могут быть производными от типа узла для создания более специализированных типов узлов, наследующих поведение. Узлы организованы внутри «сцен», которые представляют собой повторно используемые, экземпляры , наследуемые и вложенные группы узлов. Все игровые ресурсы, включая сценарии и графические ресурсы, сохраняются как часть файловой системы компьютера (а не в базе данных ). Это решение для хранения данных предназначено для облегчения сотрудничества между командами разработчиков игр с использованием систем контроля версий программного обеспечения . [10]
Движок поддерживает развертывание на нескольких платформах и позволяет указывать параметры сжатия и разрешения текстур для каждой платформы. На веб-сайте представлены двоичные файлы только для платформ редактора, а экспорт проектов на другие платформы осуществляется в редакторе Godot.
Редактор Godot, используемый для создания игр Godot, поддерживает следующие платформы:
Движок поддерживает экспорт проектов на множество других платформ, включая все платформы редактора. Начиная с Godot 4.0, в настоящее время поддерживаются следующие платформы: [15]
Движок Godot можно запускать на консолях , хотя популярные консоли официально не поддерживаются, поскольку они не позволяют публиковать свой код , специфичный для платформы, под лицензией с открытым исходным кодом . [17] Игры можно портировать на консоли через сторонние компании. [18] [19] Поддержка Godot 4 для консолей сторонними командами в настоящее время находится в стадии разработки. [15] W4 Games, коммерческая компания, соучредителем которой являются некоторые члены руководства Godot, объявила о планах предлагать услуги по портированию игр Godot 4.0 на платформы Microsoft , Nintendo и Sony . [20] [21]
Что касается архитектур ЦП, Godot официально поддерживает x86 на всех настольных платформах (как 32-битных, так и 64-битных, если доступно) и имеет официальную поддержку ARM на macOS, Linux [22] , мобильных платформах и автономных платформах Oculus (как 32-битных, так и 64-битная версия, если она доступна). Веб-платформа использует 32-битную WebAssembly . Поддержка RISC-V и PowerPC Linux является неофициальной и экспериментальной. [23] [24]
Godot поддерживает множество языков программирования для создания игр, включая интегрированный язык GDScript, C++ [25] и C# . Кроме того, движок включает GDNative — средство для создания привязок к другим языкам. Официально поддерживаемые языки GDNative включают C и C++ . [26] Языки , поддерживаемые сообществом, включают Rust , Nim , Haskell , Clojure , Swift и D. [27] Также поддерживалось визуальное кодирование с помощью встроенного языка VisualScript, разработанного как визуальный эквивалент GDScript. [19] Визуальные сценарии были удалены из основного движка Godot 4.0. [28] Игры Godot, запущенные в браузере, могут взаимодействовать с кодом JavaScript браузера .
Редактор Godot включает в себя текстовый редактор с автоматическим отступом , подсветкой синтаксиса , а также автодополнением и свертыванием кода . Он также имеет отладчик с возможностью установки точек останова и пошагового выполнения программы . [29]
Godot имеет собственный встроенный язык сценариев GDScript, [ 29 ] высокоуровневый динамически типизированный язык программирования , синтаксически похожий на Python . В отличие от Python, GDScript оптимизирован для сценовой архитектуры Godot и может задавать строгую типизацию переменных. Разработчики Godot заявили, что многие альтернативные сторонние языки сценариев, такие как Lua , Python и Squirrel , были протестированы, прежде чем было принято решение, что использование специального языка обеспечивает превосходную оптимизацию и интеграцию редактора. В версии 4.0 в GDScript была реализована новая функция под названием «Типизированный массив» [30] . Это позволяет пользователям легко преобразовать обычный массив в типизированный и наоборот, не меняя при этом большого количества кода. [29]
Простую программу « Привет, мир » можно написать так:
func _ready (): print ( "Hello World" )
Также возможны более сложные программы, такие как эта, генерирующая последовательность Фибоначчи :
func _ready (): var nterms = 5 print ( «Последовательность Фибоначчи:» ) для i в диапазоне ( nterms ): print ( fibonacci ( i )) func fibonacci ( n ): если n <= 1 : вернуть n else : вернуть фибоначчи ( n - 1 ) + фибоначчи ( n - 2 )
Графический движок Godot использует OpenGL ES 3.0 для всех поддерживаемых платформ; в противном случае используется OpenGL ES 2.0. Vulkan поддерживается начиная с версии 4.0, а также включает возможность поддержки Metal с помощью MoltenVK . [31] Движок поддерживает отображение нормалей , зеркальность , динамические тени с использованием карт теней , запеченное и динамическое глобальное освещение , а также полноэкранные эффекты постобработки, такие как цветение , глубина резкости , рендеринг с расширенным динамическим диапазоном и гамма-коррекция . Также включен упрощенный язык шейдеров , аналогичный GLSL . Шейдеры можно использовать для материалов и постобработки . Альтернативно их можно создавать, манипулируя узлами в визуальном редакторе.
Godot также включает в себя отдельный движок 2D- графики, который может работать независимо от движка 3D, но оба они также могут работать одновременно на одном дисплее, что позволяет создавать сложные миксы между 2D и 3D. 2D-движок поддерживает такие функции, как освещение, тени, шейдеры, наборы плиток , параллаксная прокрутка , многоугольники , анимация, физика и частицы. Также возможно смешивать 2D и 3D, используя «узел области просмотра».
Godot содержит систему анимации с графическим интерфейсом для скелетной анимации , смешивания, деревьев анимации, морфинга и кат-сцен в реальном времени. Практически любую переменную, определенную или созданную в игровом объекте, можно анимировать. [32] Godot имеет собственный физический движок, а начиная с Godot 4.x позволяет третьим сторонам интегрировать свою собственную физику через GDExtension. В Godot 3.x физический движок Bullet включен и используется по умолчанию. [33] Библиотека Thor Vector Graphics (ThorVG) позволяет создавать графические интерфейсы с векторными ресурсами. [34]
Хуан «reduz» Линиецки и Ариэль «punto» Манзур в 1999 году основали Codenix, консалтинговую компанию по разработке игр. Еще в 2001 году они начали работу над двигателем под кодовым названием «Ларвотор», лицензия на который была передана сторонним компаниям в Аргентине. [35] [36] [37] [38] В течение следующих десяти лет двигатель был переименован в «Legacy», «NG3D», «Larvita» и, наконец, в «Godot». Название «Годо» было выбрано из-за его связи с пьесой Сэмюэля Беккета «В ожидании Годо» , поскольку оно представляет собой бесконечное желание добавления новых функций в движок, которые приблизили бы его к исчерпывающему продукту, но никогда не сделают этого. . [39] Линицкий и Манзур присоединились к OKAM, и компания работала с рядом студий в эпоху закрытого исходного кода, включая Square Enix . Однако Линиецкий указал, что их работе препятствовала политическая и экономическая нестабильность в Аргентине в то время. [40]
К 2014 году Линиецкий планировал уехать из Аргентины и выложил исходный код Godot в открытый доступ на GitHub под лицензией MIT . [41] Годо присоединился к организации Software Freedom Conservancy (SFC) 4 ноября 2015 года. [42] 22 июня 2016 года Годо получил награду Mozilla Open Source Support (MOSS) в размере 20 000 долларов США «Mission Partners», которая будет использоваться для добавления WebSockets , WebAssembly и Поддержка WebGL 2.0. [16]
Обновление 3.0 для Godot включало в себя устранение длинного списка желаемых функций, которые требовали серьезного рефакторинга движка, что было невозможно в условиях коммерческих ограничений в эпоху закрытого исходного кода. При поддержке Мигеля де Икаса в 2017 году Годо получил пожертвование в размере 24 000 долларов от Microsoft на реализацию C# в качестве языка сценариев в Godot. [43] Был запущен Patreon, что позволило Линиецки и Вершельде работать над проектом полный рабочий день. Версия 3.0 была выпущена в 2018 году. В обновлении 3.1 добавлен модуль рендеринга OpenGL ES 2.0, предназначенный для мобильного оборудования, поскольку в то время поддержка мобильных устройств ES 3.0 производителями была ограничена. [44]
В 2019 году были сформированы две команды: команда Линиецкого сосредоточилась на ветке Vulkan (позже выпущенной как 4.0), а команда Вершельде занималась дальнейшими обновлениями ветки 3.x. Линиецкий отметил, что отчасти проблема заключалась в том, что ветка 3.x была построена с учетом старых архитектурных принципов, таких как одноядерные процессоры. Таким образом, целью было переработать базовую архитектуру версии 4.0 с учетом современных принципов. [45] В 2020 году Годо получил награду Epic Games в размере 250 000 долларов за улучшение графического рендеринга и встроенного в движок языка разработки игр GDScript, который использовался для оплаты Линиецки и Джорджа Маркеса в течение двух лет, одновременно освобождая деньги для пожертвований на другие цели. [46] [47] Годо также получал гранты от Reality Labs Meta Platforms в 2020 и 2021 годах. [48] [49] [50] Ветка 4.0 была выпущена в альфа-форме в начале 2022 года и дорабатывалась в течение года. . [51] В августе того же года Линицкий и несколько других членов команды Godot основали W4 Games, чтобы предлагать коммерческие услуги на основе движка, включая консольные порты, которые не могут быть включены в его базу кода с открытым исходным кодом. [52] [20] В ноябре Годо объявил о планах перехода от SFC к своему недавно созданному Фонду Годо. [53] [54] [55] [56]
Полный выпуск обновления 4.0 с поддержкой Vulkan произошел в 2023 году, как и появление движка Godot в магазине Epic Games Store. Версия на Epic идентична другим с точки зрения содержания и лицензирования, при этом витрина магазина используется просто как средство распространения и обновления. [57] В сентябре Unity Technologies объявила о серьезных изменениях в лицензировании движка Unity, включая добавление « платы за выполнение », которая будет взимать с пользователей плату за установку игр Unity. В результате Re-Logic пожертвовала Godot 100 000 долларов и далее объявила, что в будущем будет жертвовать 1000 долларов в месяц в интересах поддержки альтернативы Unity с открытым исходным кодом. [58]
Godot достиг версии 1.0 15 декабря 2014 года, ознаменовав первый стабильный выпуск и добавление карт освещения , поддержки навигационной сетки и дополнительных шейдеров . [59] Версия 1.1 была выпущена 21 мая 2015 года и в нее добавлены улучшенное автозаполнение в редакторе кода, редактор визуальных шейдеров, новый API операционной системы для управления экранами и окнами, улучшенная 2D-физика и переписанный 2D-движок, улучшенный. Поддержка Blender Collada и новая темная тема. [60]
Godot 2.0 был выпущен 23 февраля 2016 года, в него добавлены улучшенное создание экземпляров и наследование сцен, новый браузер файловой системы, возможность редактирования нескольких сцен и улучшенный отладчик. [61] [7] За этим последовала версия 2.1 в августе 2016 года, в которой были представлены база данных активов, профилировщик и API плагинов. [62]
Версия 3.0 была выпущена 29 января 2018 года и в нее добавлен новый модуль рендеринга PBR , реализованный в OpenGL ES 3.0 , совместимость с виртуальной реальностью и поддержка C# (через Mono ) [33] благодаря пожертвованию Microsoft в размере 24 000 долларов. [63] Версия 3.0 также добавила физический движок Bullet в дополнение к встроенной в движок внутренней части 3D-физики и стала первой версией Godot, включенной в Debian.
Godot 3.1 был выпущен 13 марта 2019 года, наиболее заметными особенностями которого являются добавление статически типизированного § GDScript, системы классов сценариев для GDScript и средства рендеринга OpenGL ES 2.0 . [64] Godot 3.2 был выпущен 29 января 2020 года, наиболее заметными особенностями которого стали значительные улучшения документации, значительно улучшенная поддержка C # и поддержка файлов glTF 2.0 . [65]
Ведущий разработчик Хуан Линиецки большую часть своего времени работал над отдельной веткой Vulkan, которая позже была объединена с основной веткой 4.0, [66] поэтому работа над 3.2 в основном выполнялась другими участниками. Работа над версией 3.2 продолжалась в виде выпуска с долгосрочной поддержкой в течение года, [65] включая Godot 3.2.2 от 26 июня 2020 года, большой выпуск исправлений, в который были добавлены такие функции, как пакетная обработка OpenGL ES 2.0 и поддержка C # для iOS. [67] 17 марта 2021 года стратегия управления версиями была изменена, чтобы лучше отражать семантическое управление версиями: появилась стабильная ветка 3.3 и ветка 3.x для переноса функций в будущую версию 3.4. [68]
Godot 3.3 был выпущен 21 апреля 2021 года и включает в себя такие функции, как поддержка ARM в macOS, поддержка пакетов приложений Android , поддержка MP3, поддержка Autodesk FBX , поддержка WebXR и веб-редактор. [69]
Godot 3.4 был выпущен 6 ноября 2021 года после шести месяцев разработки, в нем реализованы недостающие функции или исправлены ошибки, которые имеют решающее значение для публикации 2D- и 3D-игр с помощью Godot 3, а также сделаны существующие функции более оптимизированными и надежными. [70]
Godot 4 был выпущен 1 марта 2023 года. Это крупное обновление, которое обновляет систему рендеринга, добавляет поддержку графического API Vulkan , повышает производительность и удобство использования GDScript, улучшает физику и системы анимации, а также представляет множество других функций и исправлений ошибок. Разработка Godot 4 началась в 2019 году с переписывания рендерера Линиецким для использования Vulkan. В 2020 году к команде разработчиков присоединились несколько участников и работали над различными аспектами Godot 4, такими как улучшения GDScript, капитальный ремонт физического движка, переписывание системы анимации, повышение удобства использования редактора и многое другое.
Первая альфа-версия Godot 4 была выпущена для тестирования ранними пользователями в январе 2022 года. [71] Она включала новые функции, такие как глобальное освещение на основе SDF, частицы на основе графического процессора, динамические мягкие тени. В сентябре 2022 года Godot 4 достигла стадии бета-тестирования с улучшенной стабильностью и производительностью. [72] Также добавлена поддержка WebXR , поддержка C# для Android и iOS, новые функции звука. 1 марта 2023 года Godot 4 был официально выпущен как стабильная версия после нескольких бета-версий и исправлений ошибок. Он улучшил качество графики, методы оптимизации рендеринга и добавил специальные возможности. [15] Позже, в 2023 году, за ним последовал Godot 4.1, в котором были добавлены экспериментальная многопоточность сцен, усовершенствования редактора и улучшения C#. [73]
Многие игры OKAM Studio были созданы с использованием Godot, в том числе Dog Mendonça и Pizza Boy , в которых используется расширение приключенческой игры Escoria. [80] Кроме того, он использовался в учебной программе средней школы Западной Вирджинии из-за простоты его использования для непрограммистов и того, что описывается как «богатство учебных материалов, которые уже существуют для программного обеспечения». [81]
Проще говоря, Godot не может быть проектом с открытым исходным кодом, управляемым сообществом, и одновременно поддерживать консоли. Но есть способы обойти эту проблему, поэтому W4 надеется заработать деньги, предлагая услугу портирования, которая поможет разработчикам конвертировать существующие игры в формат, совместимый с консолью.