на Главную Вход Регистрация Забыли пароль ?

skype: megainformatic, телеграм: megainformatic, онлайн-чат (megainformatic live chat), форма обратной связи

Онлайн Школа Компьютерных Наук Андрея Синицина

Онлайн Школа Компьютерных Наук Андрея Синицина - автор

Добро пожаловать в нашу школу ! Давайте вместе откроем путь к новым перспективам !!!

Разработка игры на godot 3.5.1 - Глава 8 - Уровни сложности в игре на примере реализации игры Ну, погоди!




В данной серии статей мы знакомимся с созданием игр на godot версии 3.4

Если вы совсем не знаете godot, советую начать изучение с этих уроков -


Осваиваем движок godot 3.4 Глава 1 - Первые шаги

Глава 2 - Основы анимации и создание дистрибутива игры на godot

Глава 3 - Визуальная новелла на godot 3.4 часть 1 - основа будущей игры

Глава 4 - Визуальная новелла на godot 3.4 часть 2 - поддержка нескольких языков, signals

Глава 5 - рефакторинг кода, полноэкранный режим, звуки и музыка

Глава 6 - экран настроек игры (данная глава доступна в полной версии книги о разработке игры на godot 3/4)

Глава 7 - Создание визуальной новеллы на примере реального проекта игры (данная глава доступна в полной версии книги о разработке игры на godot 3/4)



main_scene.gd

если кликать картинку она будет последовательно меняться в размерах от 640 до 1282 пиксель.
В предыдущих главах мы узнали о базовых основах создания игры. По сути мы занимались вопросами создания каркаса будущей игры - созданием нового проекта, анимациями, созданием меню, выводом текстовых фраз, звуками и музыкой, экраном настроек, но вот разработки непосредственно геймплея еще не касались. В данной главе и последующих мы будем рассматривать процесс непосредственно создания геймплея игры, а также механизмов управляющих сложностью игры для игрока. В предыдущих главах мы использовали для разработки godot 3.4.2, а с 7 главы - 3.4.3 Начиная с данной главы мы переходим к использованию godot 3.5.1 как более новой и стабильной на момент создания игры Ну, Погоди!, поскольку речь будет идти о ней. В данный момент актуальной является версия godot 4.1.1, но разработку игры на ней мы будем рассматривать в последующих главах. Кроме того, в дальнейшем Вы узнаете, что в godot 4.1.1 есть ряд особенностей, которые требуют или могут потребовать от пользователя дополнительных действий на своем устройстве, чтобы заставить вашу игру запускаться и работать. Для версий godot до 4, а именно 3.5.1 таких проблем не было. Поэтому мы будем рассматривать разработку игры именно на godot 3.5.1 как базовой версии, чтобы не вносить путаницу связанную с необходимостью вносить в ваш код изменения, связанные с использованием другой версии godot. Предупрежу сразу, что для изучения материала лучше использовать именно указанную версию godot. Если вы используете godot более ранних или более новых версий, то будьте готовы к тому, что вам придется самостоятельно выяснять отличия в коде и тех действиях, которые нужно выполнить по сравнению с описанием в данных уроках. Один простой совет, который позволит Вам быстрее научиться делать игры на godot заключается в том, чтобы на старте, когда Вы еще практически ничего не умеете и не особо понимаете назначение и смысл тех или иных описываемых действий, делать очень простую игру, не содержащую каких-либо сложных в реализации механик или других техник и технологий. Не стремитесь делать сразу что-то сложное и трудновыполнимое. Конечно всегда такой соблазн есть. Но увы, лучше не форсировать события, иначе негативный опыт может вообще отбить у вас всякое желание не только к освоению godot, но и к созданию игр. Несомненным преимуществом godot, по-сравнению с другими движками и технологиями является полная открытость исходного кода. Вы можете найти официальный репозиторий исходников godot и следуя официальным инструкциям собрать его из исходного кода. Во многих других и в особенности проприетарных движках, вы не можете увидеть исходный код движка или собрать движок из исходников. Итак, давайте займёмся изучением основ создания очень простой игры, такой как Ну, Погоди! Суть игры заключается в том, что игрок управляет волком, который ловит яйца падающие с лотков. Простейший вариант усложнения или упрощения игры в данном случае - это скорость падения яиц с лотков и их количество. Для легкого уровня сложности число яиц в единицу времени и скорость их перемещения по лотку меньше. Для более сложного - наоборот - число яиц увеличивается и увеличивается скорость перемещения. Волк и яйца даже не требуют создания анимированных спрайтов. Достаточно иметь статичные изображения, которые должны появляться и исчезать на экране игры в нужные моменты. В папке примеров Вы найдете небольшой прототип игры Ну, Погоди!, в котором выполняется 2 задачи: игрок может управлять положением волка с помощью клавиш, а с лотков катятся яйца, и вы через код можете управлять скоростью движения яиц и их количеством. Далее мы пошагово рассмотрим как сделать такой прототип и решить 2 эти сформулированные задачи. Вам лучше начать новый проект godot 3.5.1, создав отдельную новую папку. В моём примере я создам папку - F:\data\GameDev\godot\my_samples\lessons\chapter_8\prototype\nu_pogodi в которой и буду делать прототип. Итак, давайте начнём ! Запускаем редактор godot 3.5.1 и выбираем пункт New Project Запускаем редактор godot 3.5.1 и выбираем пункт New Project
если кликать картинку она будет последовательно меняться в размерах от 640 до 1026 пиксель.
делаем все настройки как на рисунке ниже - делаем все настройки как на рисунке
если кликать картинку она будет последовательно меняться в размерах от 640 до 1026 пиксель.
только путь к папке проекта в вашей системе, разумеется будет другим. Жмём кнопку Create & Edit и получаем новый пустой проект godot 3.5.1 Ждём некоторое время и увидим на экране следующее. Жмём кнопку Create & Edit и получаем новый пустой проект godot 3.5.1
если кликать картинку она будет последовательно меняться в размерах от 640 до 1920 пиксель.
Также советую заглянуть в указанную папку и увидеть какие файлы там были созданы автоматически. Также советую заглянуть в указанную папку и увидеть какие файлы там были созданы автоматически.
если кликать картинку она будет последовательно меняться в размерах от 640 до 1920 пиксель.
Если сейчас запустить проект на выполнения клавишей [F5] или кнопкой Play в правом верхнем углу окна редактора godot 3.5.1 то вы увидите следующее - Суть сообщения заключается в том, что еще не определена main - главная сцена для проекта. У нас она даже еще и не создана. И это надо сделать в первую очередь. в окошке жмём кнопку Cancel. Если вы будете делать 2d игру, то вам в качестве корневого начального узла нужно создать узел с типом Node2D или Node. Советую создать Node - как более универсальный, внутри которого уже создавать все дочерние узлы. Для 3d игр надо использовать тип узла Spacial как корневой для всех дочерних узлов, либо также сначала создать базовый узел Node. Давайте создадим базовый узел Node и назовём его main. Вот как это происходит - Вы видели, что для быстрого поиска по иерархии создаваемых объектов я начал вводить первые буквы требуемого объекта - Node и быстро его нашел в списке. Затем я переименовал его в main дважды кликнув и введя новое имя. Далее нажав Ctrl + [S] попытался сохранить проект и мне предложили сохранить файл сцены под именем main.tscn и я сохранил эту сцену. Также если вы заглянете в папку вашего проекта - увидите там появление файла main.tscn это просто текстовый файл который можно просматривать любым редактором текстов, например обычным Блокнотом или notepad++. Но вручную менять файл не рекомендуется. Иначе могут возникнуть ошибки в работе редактора godot. Теперь нам осталось задать сцену main.tscn в качестве основной и теперь наш проект может нормально запускаться. У нас теперь есть базовый узел в сцене и мы можем переключаться между сценой или кодом нажимая 2D или Script в самой верхней части окна godot 3.5.1, как я это делал на первом видео - Нам нужно для нашего узла main создать gd скрипт. Вот как это происходит. После прикрепления скрипта main.gd к узлу main в папке вашего проекта также появится файл main.gd этот файл также может открыть любой текстовый редактор наподобие Блокнот или notepad++, но опять же, не рекомендуется менять содержимое файла не из редактора godot. На видео я продемонстрировал добавление в метод _ready вызова print("game started") что при запуске игры дает однократный вывод в окно терминала указанной фразы: game started. Если вы будете запускать exe файл игры из коммандной строки win, то в окне терминала также увидите такое сообщение. Ну а в редакторе оно просто выводится в окне консоли (что соответствует выводу в окне терминала). Для запуска игры из терминала надо создать файл start.bat с таким содержимым - nu_pogodi.exe pause И запустить файл start.bat тогда Вы как раз и увидите все сообщения окна терминала. Вот как это происходит. То есть я создал дистрибутив игры в папке dist внутри папки проекта, чтобы не смешивать с другими файлами проекта. И добавив туда файл start.bat запустил игру из него. В терминал вывелось game started. Но это происходит 1 раз т. к. метод _ready вызывается всегда однократно в момент старта игры. Далее уже работает метод _process, код которого я расскомментировал выделив обе строки и нажав Ctrl + [K]. И добавил туда вывод print("game processed:", delta) и поскольку данный метод вызывается каждый кадр, то сообщение выводится циклически. Также выводится значение параметра delta - это время прошедшее между вызовом предыдущего кадра и следующим. Оно и выводится в терминал. Основа для проекта прототипа nu_pogodi и вашей будущей игры создана. Давайте двигаться дальше. Создадим для игры несколько статичных спрайтов - фон игры, волк, яйца и реализуем управление волком по клавишам E, D, K, O и автоматическое качение яиц по лоткам. События происходящие если волк поймал/не поймал яйцо реализовывать пока не будем. Также будет показано каким образом можно влиять на сложность игры. В первую очередь закомментируем строку print("game processed:", delta) для этого в самом начале нужно вставить символ комментария: # или при условии если текстовый курсор находится на данной строке нажать комбинацию клавиш Ctrl + K это приведет к такому же эффекту - но удобство использования Ctrl + K позволяет закомментировать или раскомментировать разом несколько выделенных строк кода. Вот как это происходит - Для старта игры я нажима клавишу [F5]. Теперь добавим в код закрытие игры по нажатию клавиши [Esc]. Для этого выполним такие действия (как показано на видео ниже) - Теперь для закрытия окна игры или быстрого выхода из неё достаточно нажать клавишу [Esc]. Я добавил метод update_input, который вызывается из метода _process каждый кадр и соответственно в нём будет добавляться весь код, отвечающий за обработку нажатий клавиш в игре. Для клавиши [Esc] мы это уже сделали, для остальных клавиш - E, D, K, O сделаем по-аналогии. Для скорости я продемонстриую весь процесс на видео, а вы потом просто сможете повторить мои действия, а если что-то непонятно остановить или пересмотреть его фрагменты. Что я буду делать? - добавлю фон игры Ну, Погоди! (вы можете использовать любую свою картинку); - добавлю изображения волка; - добавлю обработчики нажатий клавиш E, D, K, O для управления волком; - добавлю изображения катящихся по лоткам яиц и весь необходимый код для показа качения яиц по лоткам и их ловли волком; вот как это происходит - добавляю фон игры Ну, Погоди! - В папке проекта я создал подпапку media, со всеми необходимыми подпапками и нужными изображениями. И вы уже наверное поняли, что видимостью объекта $game_space/game_base можно управлять из редактора godot, а можно через код такой строкой кода - if !$game_space/game_base.visible: $game_space/game_base.show() Если данный код добавить в метод _ready, то при старте игры если объект game_base был в редакторе godot скрыт, то он отобразится. И самое важное! Строка if !$game_space/game_base.visible: гарантирует, что код будет вызван только 1 раз. Это важно понимать, если вы будете вызывать код из _process или каких-то вложенных в него методов. Поскольку многократные вызовы одного и того же действия не имеют смысла и зря расходую вычислительные ресурсы. А это особенно важно учитывать при разработке игр например для android. Идем дальше, добавляю изображения волка, добавлю обработчики нажатий клавиш E, D, K, O для управления волком - Теперь волк управляется по нажатию клавиш E, D, O, K отображаясь соответственно в позициях WolfPos = 1 # смотрит влево - руки подняты вверх WolfPos = 2 # смотрит влево - руки опущены вниз WolfPos = 3 # смотрит вправо - руки подняты вверх WolfPos = 4 # смотрит вправо - руки опущены вниз Чтобы слишком не удлинять видео, я покажу как мной уже было реализовано качение в созданной игре Ну, Погоди! И напоследок покажу как реализовано управление уровнем сложности в готовой игре - То есть уровень сложности - это переменная HardLevel которая принимает целое значение от 1 до 5, влияющее, через специальные формулы на сложность игрового процесса, а именно - на скорость качения яиц с лотков. Формула несколько сложнее, чем ожидается, поскольку еще учитывается такой игровой момент как постепенное нарастание скорости качения яиц по мере приближения игрового счета к очередной сотне. Теперь вы знаете, как сделать свою собственную игру на godot! На этом на сегодня все. Спасибо за внимание! [Следующая статья в процессе создания. Следите за обновлениями!!!]
оцените статью:
0
Понравилось!
0
Не понравилось!
 

Оставленные комментарии


megainformatic 2006 - 2024 карта сайта




Посетили страницу: 5