Similar presentations:
3. Git + Godot
1. 3. CКВ в игровом движке Godot Engine
1. CКВ в игровомдвижке Unity
ОПД, 1 курс,
2 семестр
2. CКВ в игровом
движке Unreal Engine
3. CКВ в игровом
движке Godot Engine
Git в виртуальных машинах.
SSH-подключение к Github.
Создание кастомных YAML-скриптов.
2. №3. СКВ в движке Godot Engine.
Цель работыСимуляция и разрешение конфликтов в работе с Git и Godot Engine на операционной
системе Linux, часто возникающих в профессиональной деятельности в игровой
разработке.
К концу практики учащийся должен суметь:
Подключаться к интернету с виртуальной машины на основе ОС Linux.
Скачивать готовые проекты для Godot Engine, разбираться в их содержимом и
использовать их для своей креативной деятельности.
Настраивать SSH-подключение к Github на Linux.
Разрешать конфликты слияния в файлах Godot через Git.
Самостоятельно писать код YAML для компиляции Godot проектов и автоматической
публикации их на Github Releases.
2
3. Практика 3.
Методические указанияДля выполнения заданий в этой лабораторной
разбились на команды по три человека.
вы
Вы и ваши коллеги могут использовать совершенно
разные инструменты для работы с СКВ git – главное,
чтобы инструмент был вам удобен и понятен.
Выберите себе инструмент (Github, git bash, т.д.). В
начале отчёта запишите, кто каким инструментом
пользовался в вашей команде при выполнении этой
работы.
3
4. №3. СКВ в движке Godot Engine.
Подготовка к выполнению работыРаспределение ролей.
Вам необходимо распределить роли в вашей команде.
«Сеньор» (Senior, «опытный» программист).
Выполняет самые сложные и важные задачи. Осуществляет надзор над деятельностью всех
членов команды. Проверяет качество и правильность результатов.
«Джуниор» (Junior, «начинающий» программист).
Выполняет лёгкие и муторные задачи. Допускает ошибки и обращается к Сеньору.
Ответственен за отчётность.
«Девопс» (Devops).
Традиционно – инженер, занимающийся автоматизацией процесса сборки, настройки и
развёртывания программного обеспечения. Ответственен за сборку проекта. Проверяет
проект на баги и докладывает о них через Github.
Состав вашей команды не изменяется с прошлой лабораторной.
Вам нельзя занимать ту же самую роль, на которой вы уже были.
4
5. №3. СКВ в движке Godot Engine.
Подготовка к выполнению работыУстановка виртуальной машины.
1.
2.
3.
4.
Выберите себе дистрибутив Linux с
графической оболочкой. Он может
быть любой.
Вот лишь некоторые из
дистрибутивов, доступные вам
для скачивания:
Mint
Ubuntu
Скачайте образ, создайте из него
виртуальную машину, установите для
неё как можно больший размер RAM.
Debian
CachyOS
Astra
Запустите образ и убедитесь, что из
него у вас есть выход в интернет.
Manjaro
Fedora
Обязательно запишите в отчёте, кто
из вас какой выбрал дистрибутив.
… (много-много других).
5
6. №3. СКВ в движке Godot Engine.
Подготовка к выполнению работыУстановка Godot Engine 4.
1.
Зайдите в любой браузер внутри
своей виртуальной машины.
2.
Скачайте и запустите
последнюю версию Godot Engine,
следуя инструкциям на этой
странице.
3.
Убедитесь, что одна и та же
версия Godot Engine
открывается у всех ваших коллег.
Обязательно вставьте в отчёт
скриншот запущенного Godot с
виртуальной машины Linux.
4.
6
7. №3. СКВ в движке Godot Engine.
Задание к выполнению1. Настройка SSH-подключения к Git.
Всей команде необходимо зайти в консоль в своих виртуальных машинах и сгенерировать secret key
следующей командой:
$ ssh-keygen -t ed25519 -C «your_email@example.com»
Нажмите enter, чтобы принять стандартное расположение файла. Введите и запомните пароль.
Затем, через следующие команды вы запустите ssh-агент и добавите в него свой ключ:
$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/id_ed25519
Затем, введите команду:
$ cat ~/.ssh/id_ed25519.pub
Скопируйте содержимое файла .pub, которое вы увидите.
Этот ключ необходимо добавить в ваш аккаунт: "Settings" ->
"Assets" -> "SSH & GPG keys" -> "Add/New SSH Key": выберите тип
"authentication", вставьте ключ, нажмите сохранить.
Проверьте своё подключение к Github
через консоль:
$ ssh –T git@github.com
После этого, команда может делать
коммиты.
7
8. №3. СКВ в движке Godot Engine.
Задание к выполнению2. Создание проекта и репозитория.
Сеньор вспоминает и записывает в отчёт по проекту форматы, определённые командой в рамках
предыдущей лабораторной работы:
1) Формат именования веток (тематические / именные / …)
2) Формат коммитов:
Язык (русский / английский)
Формат заголовков (версии / номера / подробное описание / …)
Формат содержания (нумерованный / маркированный список / сплошной текст / …)
3) Содержание коммитов (атомарное / неатомарное)
Эти форматы должны полностью совпадать с форматами в отчёте по предыдущей лабораторной. Этим
указаниям будут обязаны следовать все члены команды. Сеньор отслеживает выполнение правил и
документирует выполнение работы.
Вся команда дружно идёт на сайт https://godotengine.org/asset-library/.
Самое большое число игровых шаблонов – под тегами «Demos», «Templates». Можно искать по ключевым
словам: «Game», «Transformer», «Shooter», и т.д. Выбрать можно любой игровой проект. Важно, чтобы в нём
был готовый тестовый уровень, скрипты, позволяющие именно что уже играть, а не просто «плагины»,
которые сами по себе не способны обеспечить геймплей.
Команда изучает доступные тестовые проекты. Рекомендуется выбирать проекты с тегом «Featured», с
высоким рейтингом и множеством отзывов.
8
9. №3. СКВ в движке Godot Engine.
Задание к выполнению2. Создание проекта и
репозитория.
Рекомендуемые проекты к использованию:
2D Platformer Demo by Godot Engine
Physics Platformer Demo by Godot Engine
Isometric Game Demo by Godot Engine
Hexagonal Game Demo by Godot Engine
Third Person Shooter Demo by Godot Engine
Kinematic Character 3D Demo by Godot Engine
3D Platformer Demo by Godot Engine
Role Playing Game Demo by Godot Engine
Godot Tactical RPG by ramaureirac
Каждый член команды предлагает один
понравившийся ему тестовый проект, после
чего проводится голосование. Побеждает
тестовый проект, который больше всего всем
понравился.
Т.к. вы не ограничены в выборе проекта, можете основывать выбор
версии движка на интересующем вас проекте. У каждого ассета есть
тег, на какую версию движка он идёт.
9
10. №3. СКВ в движке Godot Engine.
Задание к выполнению2. Создание проекта и репозитория.
Сеньор скачивает данный тестовый проект и
запускает его у себя в движке. Затем, Сеньор:
Инициализирует репозиторий в папке с
тестовым проектом (выбрав
соответствующий Git ignore)
Делает и пушит Initial commit
Переходит в настройки репозитория на
Github
Включает разделы Issues и Actions
Приглашает в коллабораторы свою
команду.
Всем членам команды необходимо принять приглашение Сеньора и
клонировать репозиторий себе на систему.
Все члены команды должны запустить проект у себя в Godot Engine.
Затем, все члены команды смотрят содержимое выбранного тестового
проекта. Распишите в отчёте, в каких папках какие файлы находятся, как
проект структурирован.
Вопросы
на засыпку
(Различия между движками)
1. Что находится в тех
папках и файлах, которые
упомянуты в файле
gitignore для Godot Engine?
2. Какие основные
различия между Godot
Engine и другими
движками вы можете
подметить уже на данном
этапе работы?
3. В чём различия
структуры проектов на
Godot Engine и проектов
на Unity и Unreal Engine?
10
11. №3. СКВ в движке Godot Engine.
3. Основная часть работы.Джуниору необходимо либо
скачать с Asset Library, либо
использовать уже имеющиеся в
шаблоне материалы, для
создания новой архитектуры на
уже существующей в проекте
тестовой сцене.
Сеньор добавляет на сцену игровые
элементы - объекты
взаимодействия. Опять же, Сеньор
может подойти к этому заданию
креативно, вдохновившись своими
любимыми играми и готовыми
элементами, имеющимися в шаблоне.
Джуниор может креативно
подойти к этому заданию.
Вдохновитесь своими любимыми
играми.
Он также может скачивать
различные элементы и плагины с
Asset Library и добавлять их в свой
проект.
По завершении работы, Джуниор
создаёт по заданному ранее
формату ветку и пушит туда
свои изменения.
По завершении работы, он также
создаёт по заданному ранее
формату ветку и пушит туда свои
изменения.
Сеньор сливает все рабочие ветки в main. Сеньор также разрешает все
конфликты слияния, которые возникают, любыми доступными ему способами.
Сеньор не может удалять работу Джуниора.
Задание к выполнению
Сеньор и Джуниор должны работать на
одной и той же сцене. Рекомендуется
использовать уже существующую в
проекте сцену, т.к. к ней привязан запуск
игры. Если вы создаёте новую сцену, то
привяжите к ней запуск игры.
Вопросы
на засыпку
(Различия между движками)
1. Как конфликты слияния в Godot
Engine разрешаются по сравнению с
такими же конфликтами в Unity и
Unreal Engine? Сравните ваш опыт.
2. Как эти различия отражают
различия между устройством сцен и
файлов в движках?
3. Попробуйте открыть разные
форматы Godot файлов – .tres, .import,
.tscn, и т.д. - в блокноте. Посмотрите
их содержимое; как оно устроено?
Сравните с рабочими файлами Unity
и Unreal Engine.
11
12. №3. СКВ в движке Godot Engine.
№3. СКВ в движке Godot Engine.Задание к выполнению
4. CI/CD и компиляция проекта.
Задача Девопса - скомпилировать проект и настроить
пайплайн CI/CD с автоматическим экспортом на Github
Releases.
Девопс:
Заходит к себе в настройки профиля на Github
Создаёт новый токен
Копирует и вставляет его в секретные переменные
вашего репозитория Github с названием GH_TOKEN.
Заходит в проект на Godot Engine, заходит в Project ->
Export
Настраивает имя проекта (заканчивается на «windows»), Export Path.
Компилирует проект один раз, чтобы создать файл
«export-presets.cfg»
https://docs.godotengine.org/en/stable/tutorials/export/exporting_projects.html
12
13. №3. СКВ в движке Godot Engine.
№3. СКВ в движке Godot Engine.С помощью консоли, создайте файл .github/workflows/gh-publish.yml.
А теперь давайте вместе напишем свой YAML файл.
Сперва, объявим имя. Потом – триггер действия. Самый простой
триггер - это отправка изменений в основную ветку.
Задание к выполнению
name: godot-ci
on:
push:
branches: [ main ]
env:
GODOT_VERSION: 0.0
Потом – переменные окружения: версию Godot Engine введите ту,
которую используете, с форматом из примера.
А теперь, мы можем определить сами действия. Начнём с ключевого
слова “jobs”. Имя можем выставить какое угодно – в примере, имя
“export-game”.
Всегда определяем ubuntu-latest. Это – образ, который Github будет
использовать для тестов.
Порядок действий у нас такой:
1.
Checkout (загружаем сурс проекта в действия)
2.
Экспорт игры в файл
3.
Публикация игры.
Для этих действий, мы будем использовать уже готовые образы
действий, опубликованные на Github Actions.
Для стадии экспорта, мы используем образ firebelley/godot-export. Для
него, мы указываем ссылки на скачивание файлов движка, а также
ОТНОСИТЕЛЬНЫЙ путь к проекту (где лежит файл .godot).
jobs:
export-game:
runs-on: ubuntu-latest
permissions:
contents: write
name: Export game
steps:
- name: Checkout source code
uses: actions/checkout@v3
- name: Godot Export
id: export
uses: firebelley/godot-export@v7.0.0
with:
godot_executable_download_url:
https://github.com/godotengine/godot/releases/download/${GODOT_VERSI
ON}-stable/Godot_v${GODOT_VERSION}-stable_linux.x86_64.zip
https://github.com/godotengine/godot/releases/download/${GODOT_VERSI
ON}-stable/Godot_v${GODOT_VERSION}-stable_export_templates.tpz
relative_project_path: ./
cache: true
env:
GITHUB_TOKEN: ${{secrets.GH_TOKEN}}
13
14. №3. СКВ в движке Godot Engine.
№3. СКВ в движке Godot Engine.4. CI/CD и компиляция
проекта.
Для стадии публикации проекта, мы используем
действие ncipollo/release-action.
Настраиваем для него ссылку на токен в
секретах, а также прочие переменные.
Задание к выполнению
...
- name: create release
uses: ncipollo/release-action@v1.18.0
with:
token: ${{ secrets.GH_TOKEN }}
generateReleaseNotes: true
tag: ${{ github.ref_name }}
artifacts: ${{ steps.export.outputs.archive_directory }}/*
После этого, можно сделать коммит с этим файлом и
запушить его на main, или скопировать его содержимое в
Github Actions.
Теперь, каждый раз когда вы пушите на упомянутую в файле
ветку, воркфлоу будет строить вам релиз.
Существует множество разных
подобных действий. Одни популярнее
чем другие, но для любой платформы
они точно найдутся.
Советую поискать в интернете похожие действия
для интересующих вас платформ.
К примеру:
У YAML файлов есть ещё много функционала.
Например, можно настроить публикацию
новостей в различные социальные сети на
основе webhooks, отсылать уведомления пользователям,
выкладывать статистику на дашборды. Да и вообще, Github
Actions может любые скрипты выполнять.
https://github.com/game-ci/steam-deploy
https://maximmaeder.com/how-to-automatepublishing-godot-games-to-itch-io/
https://www.vojtechstruhar.com/blog/022-godot-itchgithub-action/
14
15. №3. СКВ в движке Godot Engine.
Задание к выполнению5. Отчётность.
Каждый член команды пишет свой личный вывод по работе
о том, какую роль они играли и что они выполняли, и
отправить его Сеньору.
Сеньор оформляет отчёт. В это время Джуниор оформляет
презентацию проекта, а Девопс подчищает баги, описания
коммитов и README репозитория.
Требования к
презентации проекта
Список членов команды с
указанием ролей
Все действия, описанные в
порядке их выполнения
Скриншоты репозитория с
историей коммитов
Отправьте отчёт на почту aapivovarova@itmo.ru.
Защищаетесь вы, представляя вашу презентацию
проекта.
Во время защиты, каждому члену команды будут
задаваться вопросы по его работе. Желательно всем
присутствовать.
Скриншоты проекта,
демонстрирующие что
работа и Сеньора, и
Джуниора сохранилась
Скриншот папки со
скомпилированным
проектом
Скриншот файла YAML
Скриншот раздела Releases
15
16. №3. СКВ в движке Godot Engine.
Задание к выполнениюЗадания на полный балл
Задание на полный балл №1
Один из членов команды должен записать «летсплей» или
«трейлер» готового проекта и отправить его команде для
вставки в презентацию.
Видео должно длиться не больше 1 минуты и должно показывать
всё то новое, что было добавлено командой на уровень.
Отнеситесь к этому заданию креативно. Демонстрировать будем
на проекторе. Постарайтесь без громкой музыки и ярких вспышек.
Задание на полный балл №2
Один из членов команды должен подробно расписать в отчёте про
SSH подключения. Что это такое? В чём был смысл тех действий,
которые вы проделали в рамках этой лабораторной работы?
Почему нельзя обойтись простым подключением по HTTPS? Как
генерируется ключ, и почему нужно два ключа – публичный и
приватный?
16