
- •Введение
- •Постановка задачи
- •Основные положение и аспекты разработки
- •Основная часть
- •Создание персонажа.
- •Создание игрового барьера, генератора игровых препятствий и земли.
- •Реализация стартового, прощального меню и счетчика очков.
- •Создание основной сцены игры, главного меню.
- •Приложение а
- •Приложение б
- •Приложение в
- •Приложение г
- •Приложение д
Основные положение и аспекты разработки
В разработке игровой программы существуют такие аспекты, как:
• Проектирование
1) Цель: идея, жанр, сеттинг.
2) Средство: программный код, игровой движок.
• Творчество
Игровая механика: объекты, управление, физический движок, ИИ.
Уровни: расстановка объектов (левелдизайн).
Графика: арты, 2D модели, анимации, фоны, спецэффекты, оформление экрана и меню.
Звук: звуковые эффекты, музыка, озвучка.
5) Для разработки игры используется движок Godot.
6) За концепцию взята механика игры «Flappy bird».
7) Применяется язык программирования GodoScript в игровой сфере.
8) В ходе написания игрового кода изучены многие возможности движка Godot и его языка GodoScript.
9) Реализована начальная кодовая база для развития данного проекта:
Стартовое меню;
меню проигрыша;
механизм движения и анимации игрового объекта «Bird»;
изменение игрового окружения (эффект параллакса);
подсчёт очков;
изменение дизайна птицы сообразно достигнутым игроком рекордам
10) Разработка курсовой работы с целью создания игровой программы.
Основная часть
Первым делом, в редакторе игровых сцен “Godot” производится первоначальная настройка приложения. Так как игра заточена на мобильную аудиторию, то оптимальным решением был выбор разрешения экрана 480 на 854 пикселей. Этот формат не совсем подходит под современные стандарты, так как высота более вытянута, но такой формат может подойти абсолютно под любой смартфон, так что выбор пал именно на это разрешение. В игре выполняется лишь одно действие, так что в настройках выполнена реализация лишь одного способа взаимодействия – команда flap, то есть взлет вверх, которая выполняется нажатием правой кнопки мыши. Приложение – мобильное, поэтому нажатие на кнопку мыши эмулируется в качестве нажатия на экран (Touch). Начальная игровая сцена представлена на рисунке 1.
Рисунки 1 – Начальная игровая сцена
Прежде всего, разрабатывается дизайн игрового приложения. В этом дизайне присутствуют следующие элементы:
Игровой персонаж – летающая птица
Труба
Земля
Задний план
Стартовое сообщение
Прощальное сообщение
Также, командой было решено добавить дополнительные элементы в игру, а именно:
Меню
Контейнер с кнопками редактирования персонажа
Движок “Godot” – это Node Tree редактор игр, то есть элементы располагаются на сцене в качестве узлов, которые взаимодействуют между собой. Размещение и создание элементов происходило по ходу создания игры, поэтому итоговый вариант дерева узлов представлен в последнем пункте. В игре реализовано две сцены – меню (StartUI) и главная игровая сцена (main). Реализация начинается с последнего, куда добавляется спрайт с задним фоном игры, который никак не будет меняться.
Создание персонажа.
Создание персонажа, птички, начинается с создания узла твердого тела (RigidBody 2D), которое имеет определенный вес, из-за чего при добавлении на главную сцену оно начинает падать вниз под силой тяжести. Далее, к телу добавляется спрайт с текстурой птички во всех вариантах движения (рис.2).
Рисунок 2 – Спрайт игрового персонажа
Далее, к игровому персонажу добавляется форма столкновения (Collision Shape 2D), которое в дальнейшем будет использоваться для определения соприкосновения объекты с другими элементами сцены.
Выполнение анимации происходит созданием узла AnimationPlayer. У игрока будет существовать всего два вида анимации:
Анимация полета, которое будет выполняться во время игры
Анимация движения на месте, которое будет выполняться перед тем, как игра началась, т.е. в стартовом положении.
Анимация полета создается следующим образом: рисунок делится на 3 кадра с помощью инструмента Horizontal Frames, в результате чего происходит обрезание спрайта на три части. Теперь в узле AnimationPlayer выполняется создание типа анимации, которое присваивается пользователем – flap. Теперь происходит распределение кадров на определенном промежутке времени. В моем случае это одна секунда, в которую помещаются frames с помощью инструмента Set Key. Для этого типа анимации выбирается кубическая интерполяция для создания ощущения плавного движения полета птицы. Результат представлен на рисунке 3.
Рисунок 3 – Создание анимации движения персонажа
Далее выполняется создание анимации движения на месте. Аналогично, как и в предыдущем примере, анимация будет выполняться в течение одной секунды. Чтобы анимация объекта выполняла свое предназначение, объекту будут заданы ключи кадров в позициях: 1 – (0; -5), 2 – (0; 5), 3 – (0; -5). Анимация будет запускаться сразу после запуска сцены. Таким образом, перед началом игры, игровой персонаж будет выполнять движение вверх-вниз, которое будет имитировать порхание птицы. Также будет применяться кубическая интерполяция для создания плавности анимации движения. Результат создания анимации можно увидеть на рисунке 4.
Рисунок 4 – Создание анимации движения на месте
Теперь, выполняется написание скрипта для сцены (Приложение А):
func _physics_process(_delta)
func start()
func flap()
func die()
Первый метод является основным, который задает физические свойства объекта. В нем проверяется, жив ли объект и задается угловое вращение объекта. По умолчанию объект умеет определенную угловую скорость при движение, то есть порхании объект будет вращаться вокруг своего центра. Но такое движение неестественно, поэтому в этой функции ему задается остановка углового вращение при достижении 90 градусов (при остановке объект будет лететь вниз головой) и при -30 градусах объект будет направлять своё движение вверх, поднимаю голову вверх при порхании. Подробную схему угловой скорости можно увидеть на рисунке 5.
Рисунок 5 – Направления угловой скорости
Второй же метод запускается при начале игры: в этот момент включается гравитационная величина и анимация полета. И теперь игроку в этот момент требуется начать движения, чтобы персонаж не коснулся земли или труб, что является проигрышем.
Третий метод задает линейную скорость игрового персонажа и включает угловую скорость, направленную против часовой стрелки, которая вызывается нажатием на экран. То есть этот метод является тем описанием движения объекта, который является единственным в игре, задает основную функцию птицы. Так же при вызове метода воспроизводится звук порхания.
Последний метод останавливает движение объекта полностью, если получена переменная, подтверждающая смерть игрового персонажа. Полностью отключаются линейная и угловая скорости.
Стоит упомянуть, что к объекту bird, добавлены еще два спрайта, которые по умолчанию скрыты. Над этими спрайтами так же надстроены два вида анимации, упомянутые ранее. Предназначение этих спрайтов в том, чтобы заменить изменять внешний вид игрового персонажа, заменяя первый спрайт, заданный по умолчанию.