Найти в Дзене
Тут про e-learning

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

В марте 2024 года в сообществе «Digital Learning: Очумелые Ручки» проводилось соревнование (если назовем его хакатоном, не сильно ошибемся). Цель соревнования: за короткий срок разработать учебный материал в любом Open Source ПО*.
*Это программное обеспечение, исходный код которого доступен для изучения, изменения и распространения любым желающим. Это означает, что пользователи могут свободно использовать, изменять и адаптировать программы под свои нужды, а также делиться своими изменениями с другими. Я давно хотел попробовать игровой движок Godot (это упрощённый Open Source аналог Unity). Хакатон — отличный повод это сделать. Времени на разработку и обучение было не так много, поэтому я выбрал простой кейс — сделать аналог популярной в 90-х игры Baby Type (а ещё я обожал эту игру в начальной школе, так что выбор был очевиден). Игра учит базовым навыкам печати. Игрок управляет персонажем, за которым гонится монстр, преодолевая препятствия в виде блоков с буквами. Правильное нажатие на
Оглавление

В марте 2024 года в сообществе «Digital Learning: Очумелые Ручки» проводилось соревнование (если назовем его хакатоном, не сильно ошибемся).

Цель соревнования: за короткий срок разработать учебный материал в любом Open Source ПО*.
*Это программное обеспечение, исходный код которого доступен для изучения, изменения и распространения любым желающим. Это означает, что пользователи могут свободно использовать, изменять и адаптировать программы под свои нужды, а также делиться своими изменениями с другими.

Я давно хотел попробовать игровой движок Godot (это упрощённый Open Source аналог Unity). Хакатон — отличный повод это сделать.

Времени на разработку и обучение было не так много, поэтому я выбрал простой кейс — сделать аналог популярной в 90-х игры Baby Type (а ещё я обожал эту игру в начальной школе, так что выбор был очевиден).

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

Гейплей оригинальной игры Baby Type 1993 года
Гейплей оригинальной игры Baby Type 1993 года

Вот что получилось в итоге.

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

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

Разработка проекта

Интерфейс Godot выглядит вот так:

-3

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

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

Игровые механики

В игре всего 3 «действующих лица» (монстр, персонаж и блоки с буквами), у каждого не так много механик:

- Монстр. Двигается слева направо и убивает игрока при касании.

- Игрок. Двигается слева направо, не может пройти сквозь блоки с буквами, а при достижении «финишной черты» переводит нас на экран с победой.

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

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

Я выбрал GDScript, так как, судя по отзывам, он работает лучше и корректнее (и ещё хотелось попробовать что-то новое, вдруг он невероятно классный и удобный?).

Механик немного, и они все простые. Для обучения достаточно декомпозировать игровые механики и просмотреть один ролик на YouTube. Естественно, ролика «Как сделать аналог игры Baby Type в Godot» на YouTube нет, но все механики базовые и используются практически во всех жанрах игр. Самый похожий жанр — платформер. Там тоже персонажи перемещаются, взаимодействуют друг с другом и окружением (разве что не отслеживаются нажатия на буквы на клавиатуре — за этим пришлось лезть в документацию).

Анимации

Тут всё совсем просто. Анимация покадровая. Я сделал несколько кадров с движением персонажа, установил частоту смены кадров и всё.

Впечатления от Godot

Godot — это упрощённая версия Unity, так что, думаю, будет корректнее описать все плюсы и минусы в сравнении.

Начнём с плюсов.

Бесплатно

И Unity, и Godot устанавливаются совершенно бесплатно. При этом Unity берёт комиссию с продаж игры, если она была успешной (если сумма продаж превысила 200 000 долларов).

Это существенное преимущество Godot, если мы разрабатываем игру и прогнозируем высокие продажи.

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

Более простой интерфейс

Интерфейс проще — проще разобраться в движке и начать разработку.

Так выглядит интерфейс в Unity
Так выглядит интерфейс в Unity

Экспорт в веб

Экспортировать свою игру в веб можно как в Unity, так и в Godot. Об этом преимуществе стоит упомянуть, так как без него мы не смогли бы загрузить свой проект в LMS.

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

Минусы

Маленькое комьюнити пользователей

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

GDScript

GDScript используется только в Godot. Возвращаясь к предыдущему пункту: меньше комьюнити — меньше информации. Плюс полученные знания и навыки становятся менее универсальными. Опыт работы в C# может пригодиться в каких-то других случаях, а GDScript нам совершенно точно не будет нужен за пределами игрового движка.

Оптимизация

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

Нельзя сказать, что оптимизация в Godot плохая, но тесты показывают, что Unity справляется с этим лучше. Этот пункт особенно важен, если вы планируете разрабатывать игры в 3D.

Сравнительно маленький магазин ассетов

Ассет — ресурс, используемый в разработке игры (3D модель, картинка или даже целая игровая механика или расширение на движок).

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

В использовании ассетов нет ничего зазорного. Зачем нам заново писать код, который уже кто-то сделал до нас?

Вывод

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