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] Также поддерживается визуальное кодирование через сторонний язык с открытым исходным кодом Orchestrator. [28] Первоначально визуальное кодирование поддерживалось встроенным языком VisualScript, разработанным как визуальный эквивалент GDScript. [19] VisualScript был удален из основного движка в Godot 4.0. [29] Игры Godot, запущенные в браузере, могут взаимодействовать с кодом JavaScript браузера .
Редактор Godot включает в себя текстовый редактор с автоматическим отступом , подсветкой синтаксиса , автодополнением и сворачиванием кода . Он также имеет отладчик с возможностью установки точек останова и пошагового выполнения программы . [30]
Godot имеет собственный встроенный язык сценариев , GDScript, [30] высокоуровневый , постепенно типизированный язык программирования , который синтаксически похож на Python . В отличие от Python, GDScript оптимизирован для архитектуры Godot, основанной на сценах, и может указывать строгую типизацию переменных. Разработчики Godot заявили, что многие альтернативные сторонние языки сценариев, такие как Lua , Python и Squirrel , были протестированы, прежде чем было принято решение, что использование пользовательского языка позволяет добиться превосходной оптимизации и интеграции редактора. В версии 4.0 в GDScript была реализована новая функция под названием Типизированный массив [31] . Это позволяет пользователям легко изменять обычный массив на типизированный и наоборот, не меняя большого количества кода. [30]
Простую программу « Привет, мир » можно написать так:
func _ready (): print ( "Привет, мир" )
Возможны и более сложные программы, такие как генерация последовательности Фибоначчи :
func _ready (): var nterms = 5 print ( "Последовательность Фибоначчи:" ) for i in range ( nterms ): print ( fibonacci ( i )) функция фибоначчи ( n ): если n <= 1 : вернуть n иначе : вернуть фибоначчи ( n - 1 ) + фибоначчи ( n - 2 )
Графический движок Godot использует OpenGL ES 3.0 для всех поддерживаемых платформ; в противном случае используется OpenGL ES 2.0. Vulkan поддерживается, начиная с версии 4.0, а также включает возможность поддержки Metal с помощью MoltenVK . [32] Движок поддерживает нормальные отображения , зеркальность , динамические тени с использованием карт теней , запеченное и динамическое глобальное освещение и полноэкранные эффекты постобработки, такие как bloom , глубина резкости , рендеринг с высоким динамическим диапазоном и гамма-коррекция . Также включен упрощенный язык шейдеров , похожий на GLSL . Шейдеры можно использовать для материалов и постобработки . В качестве альтернативы их можно создавать, манипулируя узлами в визуальном редакторе.
Godot также включает в себя отдельный 2D графический движок, который может работать независимо от 3D движка, но оба могут работать одновременно на одном дисплее, чтобы создавать сложные миксы между 2D и 3D. 2D движок поддерживает такие функции, как освещение, тени, шейдеры, наборы плиток , параллакс-скроллинг , полигоны , анимацию, физику и частицы. Также возможно смешивать 2D и 3D с помощью «узла окна просмотра».
Для поддержки пользовательского интерфейса и поддержки векторной 2D-графики Godot интегрировал стороннюю библиотеку ThorVG (Thor Vector Graphics) . [33]
Godot содержит анимационную систему с графическим интерфейсом для скелетной анимации , смешивания, деревьев анимации, морфинга и заставок в реальном времени. Почти любая переменная, определенная или созданная в игровой сущности, может быть анимирована. [34] Godot имеет свой собственный физический движок, и начиная с Godot 4.x позволяет третьим сторонам интегрировать свою собственную физику через GDExtension. В Godot 3.x физический движок Bullet включен и используется по умолчанию. [35]
Хуан 'reduz' Линиецкий и Ариэль 'punto' Манзур в 1999 году совместно основали Codenix, консалтинговую компанию по разработке игр. Еще в 2001 году они начали работу над движком под кодовым названием «Larvotor», который был лицензирован сторонними компаниями в Аргентине. [36] [37] [38] [39] В течение следующих десяти лет движок был переименован в «Legacy», «NG3D», «Larvita» и, наконец, в «Godot». Название «Godot» было выбрано из-за его связи с пьесой Сэмюэля Беккета « В ожидании Годо» , поскольку оно олицетворяет непрекращающееся желание добавлять новые функции в движок, что приблизило бы его к исчерпывающему продукту, но никогда не станет таковым. [40] Линиецкий и Манзур присоединились к OKAM, и компания работала с рядом студий в эпоху закрытого исходного кода, включая Square Enix . Однако Линиецкий указал, что их работа была затруднена политической и экономической нестабильностью в Аргентине в то время. [41]
К 2014 году Линецкий планировал уехать из Аргентины и опубликовал исходный код Godot на GitHub под лицензией MIT . [42] Godot присоединился к Software Freedom Conservancy (SFC) 4 ноября 2015 года. [43] 22 июня 2016 года Godot получил премию в размере 20 000 долларов США от Mozilla Open Source Support (MOSS) «Mission Partners», которая будет использована для добавления поддержки WebSockets , WebAssembly и WebGL 2.0. [16]
Обновление 3.0 для Godot включало в себя решение длинного списка желаемых функций, которые требовали серьезной переделки движка, что было невозможно в условиях коммерческих ограничений в эпоху закрытого исходного кода. При поддержке Мигеля де Икасы Godot получил пожертвование в размере 24 000 долларов от Microsoft в 2017 году для внедрения C# в качестве языка сценариев в Godot. [44] Был запущен Patreon, что позволило Линецкому и Вершельде работать над проектом полный рабочий день. Версия 3.0 была выпущена в 2018 году. Обновление 3.1 добавило рендерер OpenGL ES 2.0, нацеленный на мобильное оборудование, поскольку мобильная поддержка ES 3.0 производителями была тогда ограничена. [45]
В 2019 году были сформированы две команды: команда Линецкого сосредоточилась на ветке Vulkan (позже выпущенной как 4.0), а команда Вершельда занялась дальнейшими обновлениями ветки 3.x. Линецкий указал, что часть проблемы заключалась в том, что ветка 3.x была создана с учетом старых архитектурных принципов, таких как одноядерные процессоры. Таким образом, было намерение переработать основную архитектуру для 4.0 и учесть современные принципы. [46] В 2020 году Godot получил награду Epic Games в размере 250 000 долларов за улучшение графического рендеринга и встроенного в движок языка разработки игр GDScript, который использовался для оплаты Линецкого и Джорджа Маркеса в течение двух лет, при этом высвободив пожертвованные деньги для других целей. [47] [48] Godot также получила гранты от Reality Labs компании Meta Platforms в 2020 и 2021 годах. [49] [50] [51] Ветка 4.0 была выпущена в альфа-версии в начале 2022 года и дорабатывалась в течение года. [46] В августе того же года Линиецкий и несколько других членов команды Godot основали W4 Games для предложения коммерческих услуг на основе движка, включая консольные порты, которые не могут быть включены в его открытую кодовую базу. [52] [20] В ноябре Godot объявила о планах перехода от SFC к своему собственному недавно сформированному Godot Foundation. [53] [54] [55] [56]
Полный выпуск обновления 4.0 с поддержкой Vulkan состоялся в 2023 году, как и появление движка Godot в магазине Epic Games. Версия в Epic идентична другим с точки зрения как контента, так и лицензирования, а витрина магазина просто используется как средство распространения и обновления. [57] Однако версия движка с поддержкой .NET/C# недоступна в магазине Epic Games, а также в Itch и Steam . [58] В сентябре Unity Technologies объявила о серьезных изменениях в лицензировании движка Unity, включая добавление « платы за выполнение », которая будет взиматься с пользователей при установке игр Unity. В результате Re-Logic пожертвовала 100 000 долларов США компании Godot и далее объявила, что будет жертвовать 1000 долларов США в месяц в интересах поддержки альтернативы Unity с открытым исходным кодом. [59]
Godot достиг версии 1.0 15 декабря 2014 года, что стало первым стабильным релизом и добавлением карт освещения , поддержки навигационной сетки и большего количества шейдеров . [60] Версия 1.1 была выпущена 21 мая 2015 года, добавив улучшенное автодополнение в редакторе кода, визуальный редактор шейдеров, новый API для операционной системы для управления экранами и окнами, улучшенную 2D-физику и переписанный 2D-движок, улучшенную поддержку Blender Collada и новую тёмную тему. [61]
Godot 2.0 был выпущен 23 февраля 2016 года, добавив улучшенное создание и наследование сцен, новый браузер файловой системы, редактирование нескольких сцен и улучшенный отладчик. [62] [7] За этим последовала версия 2.1 в августе 2016 года, в которой были представлены база данных активов, профилировщик и API плагинов. [63]
Версия 3.0 была выпущена 29 января 2018 года, добавив новый рендерер PBR , реализованный в OpenGL ES 3.0 , совместимость с виртуальной реальностью и поддержку C# (через Mono ) [35] благодаря пожертвованию в размере 24 000 долларов от Microsoft. [64] Версия 3.0 также добавила физический движок Bullet в дополнение к встроенному в движок бэкэнду 3D-физики и стала первой версией Godot, включенной в Debian.
Godot 3.1 был выпущен 13 марта 2019 года, наиболее заметными функциями которого стали добавление статически типизированного § GDScript, системы классов скриптов для GDScript и рендерера OpenGL ES 2.0 . [65] Godot 3.2 был выпущен 29 января 2020 года, наиболее заметными функциями которого стали значительные улучшения документации, значительно улучшенная поддержка C# и поддержка файлов glTF 2.0 . [66]
Ведущий разработчик Хуан Линиецкий провел большую часть своего времени, работая над отдельной веткой Vulkan, которая позже будет объединена в основную для 4.0, [67] поэтому работа над 3.2 в основном выполнялась другими участниками. Работа над 3.2 продолжалась как долгосрочный выпуск поддержки в течение года, [66] включая Godot 3.2.2 26 июня 2020 года, большой выпуск патча, который добавил такие функции, как пакетирование OpenGL ES 2.0 и поддержку C# для iOS. [68] 17 марта 2021 года стратегия управления версиями была изменена, чтобы лучше отражать семантическое управление версиями, со стабильной веткой 3.3 и веткой 3.x для бэкпортирования функций в будущий выпуск 3.4. [69]
Godot 3.3 был выпущен 21 апреля 2021 года с такими функциями, как поддержка ARM на macOS, поддержка Android App Bundles , поддержка MP3, поддержка Autodesk FBX , поддержка WebXR и веб-редактор. [70]
Godot 3.4 был выпущен 6 ноября 2021 года после шести месяцев разработки, реализовав отсутствующие функции или исправив ошибки, которые имеют решающее значение для публикации 2D- и 3D-игр с помощью Godot 3, а также сделав существующие функции более оптимизированными и надежными. [71]
Godot 4 был выпущен 1 марта 2023 года. Это крупное обновление, которое перестраивает систему рендеринга, добавляет поддержку графического API Vulkan , улучшает производительность и удобство использования GDScript, улучшает физические и анимационные системы, а также вводит множество других функций и исправлений ошибок. Разработка Godot 4 началась в 2019 году с переписывания рендерера для использования Vulkan Линиецким. В 2020 году несколько участников присоединились к команде разработчиков и работали над различными аспектами Godot 4, такими как улучшения GDScript, переработка физического движка, переписывание системы анимации, улучшения удобства использования редактора и многое другое.
Первая альфа-версия Godot 4 была выпущена для тестирования ранними пользователями в январе 2022 года. [72] Она включала новые функции, такие как глобальное освещение на основе SDF, частицы на основе GPU и динамические мягкие тени. В сентябре 2022 года Godot 4 достигла стадии бета-тестирования с улучшенной стабильностью и производительностью. [73] Также была добавлена поддержка WebXR , поддержка C# для Android и iOS и новые аудиофункции. 1 марта 2023 года Godot 4 был официально выпущен как стабильная версия после нескольких бета-сборок и исправлений ошибок. Она улучшила качество графики, методы оптимизации рендеринга и добавила функции доступности. [15] За ней последовал Godot 4.1 позже в 2023 году, в который была добавлена экспериментальная многопоточность сцен, улучшения редактора и улучшения C#. [74]
Многие игры студии OKAM были созданы с использованием Godot, включая Dog Mendonça & Pizza Boy , которая использует расширение приключенческой игры Escoria. [84] Кроме того, она использовалась в программе средней школы Западной Вирджинии из-за простоты использования для непрограммистов и уже существующих учебных материалов. [85] Создатель RPG Maker , Gotcha Gotcha Games объявили о планах использовать Godot для своей собственной новой системы создания игр (которая станет преемницей Pixel Game Maker MV 2018 года ). Новая система, Action Game Maker , планируется к выпуску в 2025 году. [86]
Проще говоря, Godot не может быть проектом с открытым исходным кодом, управляемым сообществом, и одновременно поддерживать консоли. Но есть способы обойти это, поэтому W4 надеется заработать, предлагая услугу портирования, чтобы помочь разработчикам конвертировать свои существующие игры в формат, совместимый с консолями.