Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Основы создания 2D персонажа в Godot. Часть 1: компилирование игрового движка, создание плана и анимация покоя героя

Anna | 15.06.2014 | нет комментариев
Пару дней назад увидел статью о публикации начального кода под свободной лицензией MIT игрового движка Godot и сразу решил поковыряться в нём.
Оказалось не всё так трудно, скорее комично. В своей первой публикации хотелось бы рассказать о первых шагах на пути к созданию игрового платформера, и всех подводных камнях, о которые я чуть было не переломал пальцы за эти дни.

Если это кому-то увлекательно, добродушно пожаловать под Програкат!

Встречаем: компилирование и установка godot на GNU/Linux x86, создание примитивной сцены и анимированного персонажа

Сразу определимся, Дабы не было недопонимания:
1) На написание статьи меня сподвиг imageCharoplet со своим циклом статей «2D персонаж в Unity 3D». Спасибо ему за это, творческих триумфов и продолжения столь интересных статей.
2) Вновь же, для наглядности взял (без потребности) текстуры (персонажа) из его уроков. Верю, меня за это извинят.
3) На борту имею только GNU/Linux, x86 и amd64 соответственно. Под другие ОС довольно скачать бинарные файлы с сайта создателей. Так как под amd64 всё теснее есть, а под x86 предвидится в ближайшем грядущем (обещал скомпилировать 14 февраля, верю я поспею дописать статью до того как он выложит на сайте), я и решил что для 32-битных систем статья будет больше востребована и увлекательна.

Компиляция

Устанавливаем зависимости, если ещё нет в системе:

GCC or LLVM
Python 2.7 (3.0 ещё не тестировался).
SCons build system.
X11 and MESA development Libraries
ALSA development libraries
Freetype
pkg-config
Пользователям Ubuntu:

apt-get install git scons pkg-config libx11-dev libxcursor-dev build-essential libasound2-dev libfreetype6-dev

Клонирование начальных кодов:

git clone https://github.com/okamstudio/godot.git

Само компилирование:

cd ./godot
scons bin/godot

scons поддерживает параллельную компиляцию. Довольно добавить опцию -j с доводом, указывающим на число потоков, скажем

scons -j 4  bin/godot

У меня стремительней каждого получалось когда число потоков == числу ядер.

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

Чай приготовили, компиляция ещё идёт? Тогда дозволено сходить на сайт издателя и почитать документацию, скачать Демо и примеры, а так-же Образцы экспорта планов под надобные операционные системы.

1-й запуск, создание плана

В директории /bin возник бинарный файл godot. Довольно легко запустить его.
Перед нами сразу же возникает диалоговое с планами. Так как мы запустили в 1-й раз, оно будет пустым.

Давайте сделаем свой 1-й план.

New Project -> Project Path — соответственно директория, в которой он и будет находиться; Project Name — его наименование.
Не длинно думая выбираем место назначения, называем test, клацаем кнопочку Edit, и сделанный план вылетает с segmentation fault.

Вначале я думал что у меня руки кривые. Пересобрал из git, запускаю — вновь двадцать пять. Собрал на иной машине — всё заработало! На своей — нет. И здесь до меня допёрло! Товарищи! Программа не понимает кириллицу! В всеобщем переместил явсё в иной каталог, и всё заработало и на моей машине. Что ж, отныне будем осмотрительнее.

Ну вот и основное окно программы.

Для начала давайте сотворим новую сцену. Сцена — это эпизод игры. Это может быть целый ярус. Заставка. Анимация персонажа. Задний план. Godot — программа редактирования сцен. Мы сегодня не будем углубляться в создание полнофункциональной игровой сцены, а легко сделаем персонажа.

Создание игрового персонажа

Первое что нужно сделать — это достать спрайты. Нарисовать/скачать/украсть. Я вероятно возьму из урока про Unity3D. Спрайты от imageCharoplet.

Качаем Idle.png.
Импортируем в Godot:

image

Указать какое изображение(я) куда импортируем

Указать степень сжатия

image

И нажать «Import». В Wiki есть больше подробная информация об импорте текстур на английском. Рекомендую к прочтению.

Ну а мы довольные итогом пробуем сделать персонажа.

Сцена персонажа

В верхнем правом углу в окошке Scene нажимаем на исключительную энергичную кнопку «Add/Create a new Node», либо сочетанием клавиш Ctrl A создаём «Ноду». Я думаю самый ближний перевод — шестерня, но звучит не прекрасно. Пускай будет материал? Документ? Либо так и оставить, — «Нода»? Буду рад комментариям.

В поиске «Search» вводим «Rigid», и «Node» отсортируются по наименованиям. Выбираем RigidBody2D.
Настраиваем параметры в меню Inspector ниже:
Mode: Character Mass: 3 Friction: 0 Custom Integrato: думаю сразу додумались что делать. Огромнее пока её трогать не будем.

Самое время создавать анимацию! Делать это проще некуда! Выбираем anim, внизу слева возникает меню анимации.
Сотворим анимацию. Слева внизу есть кнопка «Create new animation in player». Жмякаем. Называем idle.
Нажимаем на карандаш правее, и вот оно, меню редактора анимации.

Ставим Len(s) — длину анимации 1,1 (секунды), а Step(s) — шаг анимации, 0,15.
Выбираем вновь на Sprite в окне Scene вверху справа.

Глядим на Inspector — ищем переменную Frame. Она должна равняться нулю. Справа нарисован ключик. Нажимаем на него. Нам предлагают сделать новую линию анимации «frame» для данного спрайта. Соглашаемся (Create).
Сейчас всё легко. Нажимаем Ctrl Right, выбираем следующую анимацию — нажимаем на ключик. И так дальше. Каждого должно получиться 8 синих точек, 8 кадров анимации. Позже этого дозволено нажать на плеере на play, и посмотреть что у нас получилось. Да, не позабудьте зациклить анимацию. (Кнопка Enable/Disable looping in animation).

Сберегаем сцену (Scene -> Save, назвав player.xml).

Так, 30% сделали. Сейчас самое увлекательное.

Будем варить! кодить!

Scene -> player -> Inspector -> Script. Поспеваете за мною? На скриншоте выше нарисовано куда идти. Выбираем там New GDScript.

Переключаемся на вкладку скрипты.

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

extends RigidBody2D #объявляем класс

var anim=""  #Объявляем переменную анимации

func _integrate_forces(s):   #Начинаем функцию

	var new_anim=anim #Объявляем переменную смены анимации (потребуется в грядущем, когда будем применять различные анимации)
	new_anim="idle" #присваиваем анимацию покоя

	if (new_anim!=anim): ##Сама смена анимации
		anim=new_anim
		get_node("anim").play(anim)


Ну вот, а вы опасались.

Как и обещал:

extends RigidBody2D

var anim=”"

func _integrate_forces(s):

var new_anim=anim
new_anim=«idle»

if (new_anim!=anim):
anim=new_anim
get_node(«anim»).play(anim)


Не забываем сберечь как player.gd.

Так. В тезисе примерно всё готово. Осталось самое основное:

Создание сцены


Не забываем сберечь сцену с персонажем. И создаём новую. Благо теснее умеем.

Для начала создаём пустую «Node» — назовём её Scene.
Сейчас к ней привяжем нашего игрока. Нажимаем на «плюс» и выбираем нашего только что сделанного player.xml.

Так. Ну и запуск.

image

Упс!

image

Сберегаем нашу сцену как scene.xml. И запускаем ещё раз. Если всё сделали верно, то увидите ошеломляющую анимацию нашего Капитана!

Малое видео итога с бонусными задниками и землей под ногами:

Ну и в завершение. Как я писал выше, в ОС GNU/linux x86 на данный момент план экспортировать невозможно. Авторы программы уведомлены. В скором грядущем обещали решить эту задачу и скомпилировать не только бинарники для x86, но и Образцы экспорта. Также можете протестировать экспорт на другие ОС.

Ну а я, если получится, верю продолжить цикл статей о создании 2D, а в грядущем допустимо и 3D игр на этом восхитительном движке. Славной пятницы, с Днём Компьютерщика, до скорых встреч!

 Источник: programmingmaster.ru
Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB