Как установить godot на linux

Обновлено: 04.07.2024

Недавно я делал статью и видео о том, как тестировать свои unity-прототипы на прошитом Nintendo Switch. Дело оказалось не самым тяжелым, кроме одного момента - было непонятно, почему не экспортируется игра и проблема оказалась с настройками экспорта и в частности с иконками. Воспользовавшись тутором и пояснениями, делать теперь это не сложно.

Когда я выложил в соцсети радостный пост о том, что получилось запустить игру с unity на своем…

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

Очевидно, что нам потребуется сам движок. Плюс Godot, что он полностью open-source и любой может сделать его форк и переписать что и как угодно. И нам надо как раз скачать такой форк, где 25 мегабайт архива (или 50 мегабайт распакованного) и есть уже готовый движок, из которого можно экспортировать свои игры на switch-платформу.

Godot Engine – Multi-platform 2D and 3D game engine - Stary2001/godot

В папке релизов лежат сборки под windows, mac, linux и есть godot-template, это шаблон для экспорта под switch. Нам он пока не понадобится, потому как движок сам докачает все нужные ему файлы. Если же вдруг не найдет, то скачать можно из релиза репозитория.

Для теста я взял стандартный platformer template от godot, там настроено и управление, и взаимодействия, нам только и остается, что выбрать Проект-Экспортировать, после чего выбрать switch платформу.

При первой попытке экспорта, godot engine быстро докачает 15 мегабайт шаблона для экспорта на switch. Если нет, можно указать путь к шаблону самостоятельно. После этого жмем Экспортировать проект, удобнее выбрать пустую папку и движок создаст нам .nro файл и .pck, это исполняемый файл и его ресурсы, графика итд. Эти файлы нам надо будет скопировать на switch.

Установка простейшая - надо на sd карте в папке switch создать свою папку для теста, я создал tgame, куда и скопировал оба файла.

После чего в homebrew browser появляется отдельная иконка приложения, запускаем и убеждаемся, что все работает отлично. Не надо ни подписывать приложение, ни мучаться с иконками, все быстро и удобно. После мучений с unity я сильно порадовался.

Кстати, проект можно и упаковать в привычный nsp файл, для чего можно воспользоваться утилитой nro2nsp, которую скачать тут:

Про Godot, GLSL и WebGL, шейдеры используемые в мини игре

2019-09-18 в 13:50, admin , рубрики: gles, glsl, Godot, OpenGL, WebGL, игростроение, разработка игр

Статья разбита по такой очередности:

  • Ссылки и краткое описание.
  • Очень краткое описание игровой логики, и используемых возможностей Godot.
  • Про используемые шейдеры.
  • Еще немного про Godot, и его особенности.
  • WebGL2 работает
  • Мультиплеер

Исходный код всей игры доступен на github-е или gitlab.

Игровой процесс:

Минимальный, это не полноценная игра. (звука в игре нет)

Цель игры — продержаться максимальное количество раундов. Раунды начинаются когда HP сферы ноль, и нет роботов в игре.

При уничтожении фигур появляются бонусы, раз за раунд, дают скорость анимации выстрела, урон (только по главной сфере), и высоту прыжка, по цвету синий, красно/зеленый, желтый. Боты также дают бонус но случайно. Персонаж игрока восстанавливает +1HP каждый новый раунд.

Используемые ресурсы:

Blender использовался лишь для уменьшения количества полигонов на моделях, и для создания разрушенных кусков моделей.

Используется модуль futari-addon. (про него ниже еще напишу)

В игре две модели имеют анимации.
Движения персонажа игрока я сделал в Godot, оригинальная модель
Вторая модель это sphere-bot которая имеет качественные анимации.

Все используемые готовые сторонние модели объектов перечислены по ссылке.

Логика игры и возможности Godot:

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

Используется всего один Viewport для 3D сцены, и несколько Viewport-ов (низкого разрешения) в которых стоят ортогональные камеры для 2D-Viewport-ов (тоже низкого разрешения) в которых идет обработка Multipass/Feedback шейдеров, о них ниже.

Про Godot, GLSL и WebGL, шейдеры используемые в мини игре - 1

Все текстуры имеют mipmap, и работают даже в браузере. Есть дополнительные настройки графики (Esc — Settings). Например можно сделать любое разрешение для игры, до размера 32x32 пикселя, например я поставил 320x240 разрешение в настройках, запустив игру в браузере, и включил максимальное сглаживание MSAA вот что вышло

Все источники света работают в реальном времени, их 16 штук всего.

Пол и забор это простейшие частицы которые дублируют одну модель множество раз, код тривиален.

Анимация разрушаемых блоков считается физическим движком в реальном времени

Физика в Godot довольно ограничена, и начинает сильно уменьшать FPS уже при десятке активных объектов, поэтому отключены все столкновения между разрушенными кусками, и другие, установлены уровни для физики, также стоит ограничение на количество одновременных разрушений, и максимальное число Ботов одновременно (шесть).

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

bot_hit.gd функция _integrate_forces и все что ей вызывается, это движения противника-бота
player_l.gd во первых функцией move_and_slide отключается бесконечная инерция, и функция process_collision отталкивает объекты.

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

Несколько дублирующихся объектов в одном, и несколько GIProbe, формы и параметры источников света-все так и задумано, сделано для обхода ограничений OpenGL или ограничений в Godot.

Панорама окружения:

В этой игре используется статическая панорама, картинка получена из этого шейдера (с1 с2 цвета, ldir положение)

для получения панорамы убрать комментарий со строке 57 panorama_uv(fragCoord,ro,rd); и поставить комментарий на строку 58

Динамические панорамы для Godot в прошлых демках (ютуб и там ссылки на код) панорама облаков и панорама цикла дня/ночи с движением облаков

Если нужно конвертировать CubeMap в панораму окружения для Godot, я сделал простейший веб конвертер.

Совсем простые шейдеры:

Шейдеры для частиц статически определяющие их позицию для анимации или без. Например spawn.shader)

Для дополнительного свечения вокруг объектов, не только шаров, это одна строка gglow.shader (цифры можно менять как надо)

Про Godot, GLSL и WebGL, шейдеры используемые в мини игре - 2
Про Godot, GLSL и WebGL, шейдеры используемые в мини игре - 3

Показ текста-цифр в 3D, как я понял в Godot нет средств для этого (без создания дополнительного FBO (viewport)) поэтому простой шейдер печатающий цифры из текстуры (чтобы был mipmapping), код шейдера

Элементы UI:

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

Про модуль futari-addon:

Он работает практически также как этот шейдер для 2D-частиц на видео (смотреть с 1:41).

На видео строится 2D-SDF карта всех полигонов один раз на старте и полученная текстура просто отправляется частицам, частицы сами строят normal в текущей позиции и меняют движение.

futari-addon делает практически тоже самое, только вместо 2D карты-текстуры передаются координаты 3D сфер и плоскостей которые обрабатываются по условию в шейдере частиц, поэтому свободно можно менять их положение и другие параметры.

Плюс ветер (в моем 2D-примере ветер добавить очень просто, как еще одну текстуру с +- значениями к скорости, и частицы просто добавляют значение скорости из этой карты по своему положению).

Модуль futari-addon очень хорош, использовал его вместо создания своей системы для частиц.

Эффект щита:

Частицы которым передаются координаты удара по сфере и положение игрока, и угасание используя буфер transform feedback. Код шейдера в файле en_m.shader

Щит у Ботов:


Шейдер по типу трехмерного шума sheild.shader по сути все работает благодаря функции flow оригинал тут
Задний фон определяется gl_FrontFacing , и закрашивается в более темный и зеленый, а не синий.
Реакция на удар-просто передается таймер события удара.

Про Godot, GLSL и WebGL, шейдеры используемые в мини игре - 6

Почти все эффекты сделаны используя эту логику.
Один из шейдеров из игры.
В качестве источника я поставил ортогональную камеру которая снимает на маленькое расстояние объекты в определенной группе (не обрабатывая всю сцену)
.

Эффект поля льда:

Шейдер указан выше, в проекте файл ice_feedback.shader, и fragment шейдер для плоскости который создает иллюзию глубины пола используя простой depth цикл:

Эффект поля частиц:

Шейдер тот-же, координата y (высота) частиц по яркости цвета буфера кадра от шейдера, цвет также по яркости цвета (шейдер частиц я не сохранял отдельно, он в проекте в объекте floor/visible_/floor3/grass/grass ).

Динамическая анимация флага:

В Godot есть SoftBody для анимации ткани, но это CPU, поэтому я не использовал. Я использовал уже готовый код ссылка на оригинал. Этот флаг отталкивается от трех шаров сбоку и голова персонажа четвертый шар.
Логика multipass-шейдера, как в примере выше, только с тремя осями, код multipass шейдера (1)flag.shader, шейдер рисующий флаг просто показывает текстуру с меняет геометрию плоскости (2)flag.shader.

Появление фигур:

У фигур нет UV, поэтому triplanar-texture-mapping для наложения текстуры, и разрезание по треугольникам (vertex), весь код в cchess.shader

Анимация hitbox-а (красная рамка) который наносит урон персонажу игрока, и след от рамки (частицы очевидно):

Используется всего лишь уже указанный шейдер gglow.shader.

Для частиц используется всего две текстуры, круг и квадрат.

Godot очень хорош и прост (не для новичка). Мне Godot очень понравился своими возможностями.

Багов очень много, документация Godot не полная и порой вводит в заблуждение из за ошибок и не указания критических моментов (не очевидных для меня), чтоб понять которые приходилось весь исходный код Godot многократно перечитывать (код не большой и хорошо написан).
Это лишь мое впечатление, может быть ошибочное, никого не хочу ввести в заблуждение.

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

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

Лаги — есть большая проблема с управлением, это 100% на стороне Godot, я не исправлял это. (управление заклинивает во время компиляции шейдеров и лагов FPS (например в браузере)), также другие лаги связанные с особенностями 3D-рендера в Godot, я сделал обход части из них, но они всеравно есть/могут быть.

Не запускайте игру по ссылке, если у вас Windows. Ссылка на WebGL2/WASM версию.

Работает только в Chrome 76+ и Firefox (Linux).

По ходу этого проекта был исправлен один баг в Chrome благодаря чему заработал transform-feedback и моя прошлая демка (выше видео с панорамой дня/ночи), которая до этого не работала.

Это TODO. Обновлю эту часть как будет сделано.

Будет добавлен мультиплеер на двух игроков, для обычных версий (вне барузера) (в ближайшую неделю/две).

И как только выйдет Godot 3.2 с поддержкой WebRTC будет добавлена поддержка WebRTC, мультиплеер в браузере будет работать (пусть хоть только в Linux, хоть так).

Разработка игр более доступна, чем когда-либо. Многие инструменты бесплатны, а множество онлайн-уроков делают создание игр тем, что каждый может сделать.

1. Годо полезен для программистов

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

2. Годо имеет специальный язык

Пример GDScript, Годо на языке движка

Движок Godot поставляется с языком программирования под названием GDScript. Для некоторых это немедленное отключение. Часто внутренние языки либо не нужны, либо плохо продуманы.

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

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

3. Godot поддерживает несколько языков

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

4. Godot поддерживает привязку языка

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

В настоящее время существуют экспериментальные привязки для Go, R, Nim, Rust и Ruby. Учитывая репутацию Годо среди программистов и потребность в большем количестве языков, вы можете ожидать, что этот список будет быстро расти!

5. Узловая система

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

6. Godot поддерживает разработку 2D и 3D игр

Инструмент создания сцены Годо в режиме 2D.

Годо поддерживает создание как 2D, так и 3D игр. Инди-разработчики, делающие 2D-игры, любят рабочий процесс, который предоставляет Godot. Вместо псевдо 2D (трехмерный мир, представленный в двух измерениях), Godot работает в реальном 2D-пространстве, выраженном в пикселях. Это значительно упрощает создание и оптимизацию 2D-игр.

Поддержка 3D новее и все еще отстает от Unreal Engine и Unity. Тем не менее, если вы не создаете игру ААА с графикой наивысшего качества, вы не столкнетесь с какими-либо ограничениями при использовании Godot.

У Godot есть специализированные узлы как для 2D, так и для 3D, некоторые из которых предназначены для работы в обоих, и скоро ожидается поддержка 2.5D.

7. Годо с открытым исходным кодом

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

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

8. У Годо своя собственная IDE

Годо в движке IDE


Годо имеет встроенную IDE. Несмотря на то, что он может не поставляться с некоторыми функциями кулера других IDE, такими как функция Live Share VSCode, он идеально подходит для использования с Godot.

Конечно, вы не обязаны использовать встроенную IDE и можете использовать свою любимую IDE или текстовый редактор.

Текстовые редакторы против IDE: какой из них лучше для программистов?



Текстовые редакторы против IDE: какой из них лучше для программистов?
Выбор между расширенной IDE и более простым текстовым редактором может быть трудным. Мы предлагаем некоторую информацию, чтобы помочь вам принять это решение.
Прочитайте больше

для программирования в Годо.

9. Годо легкий

Стандартный исполняемый файл Godot составляет чуть более 60 МБ и не требует установки. Просто скачайте, разархивируйте и отправляйтесь. Наряду с небольшим размером файла, сам движок удобен в системах с низким энергопотреблением.

10. Годо кросс-платформенный

Godot доступен для ПК, Mac и Linux

Godot действительно кроссплатформенный, с разработчиками для Mac, Windows и Linux. Многие альтернативные инструменты разработаны с учетом одной операционной системы (ОС) и испытывают проблемы при переносе на другие.

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

В работах даже есть версия Raspberry Pi, которая, разумеется, волнует нас!

Для чего Годо не годится?

До сих пор вы видели много веских причин использовать Godot, но для кого это не нужно? Ну, Годо не собирается выпускать следующий блокбастер ААА, но опять же, дело не в том, на кого ориентирован двигатель.

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

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

Свобода создавать игры с Годо

5 бесплатных программных инструментов для разработки игр



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

для тех, кто хочет создавать свои собственные игры!

Узнайте больше о: разработке игр, Godot Engine, Open Source.

Программирование Arduino для начинающих: руководство по проектированию контроллера светофора

Godot Engine

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

Godot Engine

Вопрос: как удалить объект (ноду) из скрипта?
Ответ: object.queue_free()

Вопрос: как изъять объект (ноду) из дерева нод, но при этом не удалять сам объект из памяти?
Ответ: node1.remove_child(node2)

Godot Engine

Вопрос: как объявить и вызвать функцию?
Ответ:

Godot Engine

Вопрос: как написать класс и создать его экземпляр?
Ответ:

Godot Engine

Вопрос: как произвести наследование одного скрипта от другого?
Ответ:

Godot Engine

Вопрос: как произвести наследование одного класса от другого?
Ответ:

Godot Engine

Вопрос: скрипт это класс?
Ответ: да. (унаследованных от того, что вы написали в extends)

Godot Engine

Вопрос: На какие платформы поддерживается экспорт?
Ответ: на почти все возможные платформы, которые поддерживают GLES 2/3 (в Godot 3.0). Количество платформ возможно расширить за счёт модулей. Дополнительные платформы: PlayStation (4, Pro, Vita, 3), XBOX (360, ONE, S), Nintendo (Switch, Wii U) и так далее.

Читайте также: