Експортування¶
Огляд¶
Тепер, коли у вас є робоча гра, ви, мабуть, хочете поділитися своїм успіхом з іншими. Однак не практично просити своїх друзів завантажити Godot лише для того, щоб вони могли відкрити ваш проєкт. Натомість ви можете експортувати свій проєкт, перетворюючи його у "пакет", який може запускати будь-хто.
Спосіб експорту вашої гри залежить від платформи, на яку ви орієнтовані. З цього уроку ви дізнаєтесь, як експортувати гру Dodge the Creeps для різних платформ. Однак спершу нам потрібно внести деякі зміни в спосіб роботи гри.
Примітка
Якщо ви ще не зробили "Dodge the Creeps", будь ласка, прочитайте Ваша перша 2D гра, перш ніж продовжувати цей урок.
Приготування проєкту¶
У Dodge the Creeps ми використовували клавіатуру для переміщення персонажа гравця. Це добре, якщо ваша гра грається на платформі ПК, але на телефоні, чи планшеті, вам потрібна підтримка сенсорного екрану. Оскільки подію клацання мишки можна трактувати так само, як сенсорну подію, ми перетворимо гру в стиль "click-and-move" ("клац і рух").
За замовчуванням Godot емулює введення миші з сенсорного введення. Це означає, що все що закодовано на події миші, буде працювати і на події сенсорного введення. Godot також може імітувати сенсорне введення з натискання миші, що дає нам можливість продовжувати грати в нашу гру на комп'ютері переключившись на сенсорний ввід.
У Проєкт > Параметри проєкту в розділі Input Devices(Пристрої введення) > Pointing встановіть Emulate Touch From Mouse (Емуляція дотику від миші).

Нам також необхідно впевнитись, що гра масштабується корректно на різних розмірах екранів, тому в параметрах проєкту перейдіть до меню Display (Екран), натисніть Window (Вікно). У параметрах Stretch (Розтягування) встановіть для Mode (Режим) - 2d
, а для Aspect (Вигляд) - keep
(утримувати).
Оскільки ми вже в Window, то також встановимо під Handheld в Orientation (Орієнтація) на portrait
(портретна).

Далі нам потрібно модифікувати скрипт Player.gd
, щоб змінити метод введення. Ми видалимо керування клавішами та змусимо гравця рухатись до "цілі", встановленої дотиком (або клацанням мишки).
Ось повний скрипт для гравця із коментарями щодо того, що ми змінили:
extends Area2D
signal hit
export var speed = 400
var screen_size
# Add this variable to hold the clicked position.
var target = Vector2()
func _ready():
hide()
screen_size = get_viewport_rect().size
func start(pos):
position = pos
# Initial target is the start position.
target = pos
show()
$CollisionShape2D.disabled = false
# Change the target whenever a touch event happens.
func _input(event):
if event is InputEventScreenTouch and event.pressed:
target = event.position
func _process(delta):
var velocity = Vector2()
# Move towards the target and stop when close.
if position.distance_to(target) > 10:
velocity = target - position
# Remove keyboard controls.
# if Input.is_action_pressed("ui_right"):
# velocity.x += 1
# if Input.is_action_pressed("ui_left"):
# velocity.x -= 1
# if Input.is_action_pressed("ui_down"):
# velocity.y += 1
# if Input.is_action_pressed("ui_up"):
# velocity.y -= 1
if velocity.length() > 0:
velocity = velocity.normalized() * speed
$AnimatedSprite.play()
else:
$AnimatedSprite.stop()
position += velocity * delta
# We still need to clamp the player's position here because on devices that don't
# match your game's aspect ratio, Godot will try to maintain it as much as possible
# by creating black borders, if necessary.
# Without clamp(), the player would be able to move under those borders.
position.x = clamp(position.x, 0, screen_size.x)
position.y = clamp(position.y, 0, screen_size.y)
if velocity.x != 0:
$AnimatedSprite.animation = "walk"
$AnimatedSprite.flip_v = false
$AnimatedSprite.flip_h = velocity.x < 0
elif velocity.y != 0:
$AnimatedSprite.animation = "up"
$AnimatedSprite.flip_v = velocity.y > 0
func _on_Player_body_entered( body ):
hide()
emit_signal("hit")
$CollisionShape2D.set_deferred("disabled", true)
using Godot;
using System;
public class Player : Area2D
{
[Signal]
public delegate void Hit();
[Export]
public int Speed = 400;
private Vector2 _screenSize;
// Add this variable to hold the clicked position.
private Vector2 _target;
public override void _Ready()
{
Hide();
_screenSize = GetViewport().Size;
}
public void Start(Vector2 pos)
{
Position = pos;
// Initial target us the start position.
_target = pos;
Show();
GetNode<CollisionShape2D>("CollisionShape2D").Disabled = false;
}
// Change the target whenever a touch event happens.
public override void _Input(InputEvent @event)
{
if (@event is InputEventScreenTouch eventMouseButton && eventMouseButton.Pressed)
{
_target = (@event as InputEventScreenTouch).Position;
}
}
public override void _Process(float delta)
{
var velocity = new Vector2();
// Move towards the target and stop when close.
if (Position.DistanceTo(_target) > 10)
{
velocity = _target - Position;
}
// Remove keyboard controls.
//if (Input.IsActionPressed("ui_right"))
//{
// velocity.x += 1;
//}
//if (Input.IsActionPressed("ui_left"))
//{
// velocity.x -= 1;
//}
//if (Input.IsActionPressed("ui_down"))
//{
// velocity.y += 1;
//}
//if (Input.IsActionPressed("ui_up"))
//{
// velocity.y -= 1;
//}
var animatedSprite = GetNode<AnimatedSprite>("AnimatedSprite");
if (velocity.Length() > 0)
{
velocity = velocity.Normalized() * Speed;
animatedSprite.Play();
}
else
{
animatedSprite.Stop();
}
Position += velocity * delta;
// We still need to clamp the player's position here because on devices that don't
// match your game's aspect ratio, Godot will try to maintain it as much as possible
// by creating black borders, if necessary.
// Without clamp(), the player would be able to move under those borders.
Position = new Vector2(
x: Mathf.Clamp(Position.x, 0, _screenSize.x),
y: Mathf.Clamp(Position.y, 0, _screenSize.y)
);
if (velocity.x != 0)
{
animatedSprite.Animation = "walk";
animatedSprite.FlipV = false;
animatedSprite.FlipH = velocity.x < 0;
}
else if(velocity.y != 0)
{
animatedSprite.Animation = "up";
animatedSprite.FlipV = velocity.y > 0;
}
}
public void OnPlayerBodyEntered(PhysicsBody2D body)
{
Hide(); // Player disappears after being hit.
EmitSignal("Hit");
GetNode<CollisionShape2D>("CollisionShape2D").SetDeferred("disabled", true);
}
}
Налаштування головної сцени¶
Головна сцена - це та, з якої буде розпочинатися ваша гра. У Проєкт -> Параметри проєкту -> Application (Застосування) -> Run, встановіть для Main Scene (Головна сцена) значення "Main.tscn", натиснувши піктограму теки та вибравши його.
Шаблони експорту¶
Для експорту вам потрібно завантажити шаблони експорту з http://godotengine.org/download. Ці шаблони є оптимізованими версіями редактора без самого редактора оптимізованого для кожної платформи. Ви також можете завантажити їх у Godot, натиснувши Редактор -> Керування шаблонами експорту:

Примітка
Якщо ви завантажили Godot зі Steam, то шаблони експорту вже включені в нього. Тому вам не потрібно завантажувати їх за допомогою діалогового вікна Керування шаблонами експорту.
У вікні, що з’явиться, ви можете натиснути Завантажити, щоб отримати версію шаблону, що відповідає вашій версії Godot.

Примітка
Шаблони експорту прив'язані до певної версії Godot. Якщо ви оновлюєте Godot, то ви повинні завантажити шаблони, які відповідають новій версії.
Взірці експортування¶
Далі ви можете налаштувати параметри експорту, натиснувши на Проєкт -> Експортувати.
Створіть новий взірець експорту, натиснувши Додати… та обравши платформу. За допомогою різних налаштувань можна зробити стільки завгодно взірців з різними налаштуваннями.

У нижній частині вікна є дві кнопки. Експорт PCK / ZIP створює лише упаковану версію даних вашого проєкту. Без виконуваного файлу, тому проєкт не бути запускатися самостійно.
Друга кнопка - Експорт проєкту створює повну виконавчу версію вашої гри, наприклад як .apk
для Android, або .exe
для Windows.
На вкладках Resources (Ресурси) та Features (Особливості) ви можете налаштувати експорт гри для кожної платформи. Наразі ці налаштування ми можемо залишити в спокої.
Експортування на платформами¶
У цьому розділі ми розглянемо процес для кожної платформи, включаючи будь-яке додаткове програмне забезпечення, або вимоги, які вам знадобляться.
ПК (Linux/macOS/Windows)¶
Експорт на платформи ПК працює однаково в трьох підтримуваних операційних системах. Відкрийте вікно експорту та натисніть Додати .., щоб створити взірець, який ви хочете використати. Потім натисніть Експорт проєкту та оберіть ім'я й теку. Виберіть розташування за межами папки вашого проєкту.
Натисніть Зберегти, і редактор створить файли експорту.
Примітка
При експорті для macOS, якщо ви експортуєте з macOS, ви отримаєте файл .dmg
, а при використанні Linux, або Windows, буде .zip
. У будь-якому випадку стиснутий файл містить macOS .app
, який можна двічі клацнути та запустити.
Примітка
Якщо ви хочете, щоб експортований виконуваний файл мав інакший значок, а не стандартний, його потрібно змінити вручну. Дивіться: Зміна іконки програми для Windows.
Android¶
Порада
Мобільні пристрої оснащені найрізноманітнішими можливостями. У більшості випадків налаштування Godot за замовчуванням спрацюють, але мобільний розвиток іноді є більше мистецтвом, ніж наукою, і вам може знадобитися зробити кілька експериментів та пошукати допомоги, щоб все запрацювало.
Перш ніж експортувати проєкт для Android, потрібно завантажити таке програмне забезпечення:
Android SDK: https://developer.android.com/studio/
Open JDK (потрібна версія 8, новіші версії не працюють): https://adoptopenjdk.net/index.html
Коли ви вперше запустите Android Studio, натисніть Налаштувати -> SDK Manager та встановіть Android SDK Platform Tools (Інструменти платформи Android SDK). Тут встановлюється інструмент командного рядка adb
, який Godot використовує для спілкування з вашим пристроєм.
Далі створіть сховище ключів налагодження, запустивши таку команду в командному рядку вашої системи:
keytool -keyalg RSA -genkeypair -alias androiddebugkey -keypass android -keystore debug.keystore -storepass android -dname "CN=Android Debug,O=Android,C=US" -validity 9999
Клацніть на Редактор -> Параметри редактора в Godot і виберіть розділ Export/Android. Тут вам потрібно встановити шляхи до додатків Android SDK у вашій системі та місце розташування створеного вами сховища ключів.

Тепер ви готові експортувати. Клацніть на Проєкт -> Експортувати та додайте взірець для Android (дивіться вище). Виберіть новостворений взірець і в розділі Options (Опції) перейдіть до Screen (Екран) та встановіть Orientation (Орієнтація) на Portrait (портретна).
Натисніть кнопку Експорт проєкту і Godot створить APK, який ви можете завантажити на свій пристрій. Для цього в командному рядку використовуйте наступне:
adb install dodge.apk
Примітка
Можливо, ваш пристрій повинен перебувати в режимі розробника. Для отримання детальної інформації зверніться до документації пристрою.
Якщо ваша система підтримує це, підключення сумісного пристрою Android спричинить появу кнопки Розгортання одним натисканням кнопки в області кнопок відтворення Godot:

Натискання цієї кнопки створює APK і копіює його на ваш пристрій за один крок.
iOS¶
Примітка
Для того щоб створити гру для iOS, у вас повинен бути встановлений комп'ютер під управлінням macOS з Xcode.
Перед експортом є кілька параметрів, які ви повинні змінити для успішного експорту проєкту. По-перше, App Store Team Id, який ви можете знайти, увійшовши до свого облікового запису розробника Apple і переглянувши розділ Membership.
Ви також повинні надати піктограми та зображення екрану, як показано нижче:

Клацніть Експорт проєкту та оберіть теку призначення.
Після того, як ви успішно експортували проєкт, ви знайдете такі папки та файли, які були створені у вибраному вами місці:

Тепер ви можете відкрити проєкт у Xcode та створити проєкт для iOS. Процедура збирання Xcode виходить за межі цього підручника. Дивіться https://help.apple.com/xcode/mac/current/#/devc8c2a6be1 для отримання додаткової інформації.
HTML5 (web)¶
Натисніть Експорт проєкту на взірці HTML5. Нам не потрібно змінювати жодні налаштування за замовчуванням.
Коли експорт завершиться, у вас з’явиться папка, що містить такі файли:

Перегляд .html
- файлу у вашому браузері дозволяє вам грати. Однак ви не можете відкрити файл безпосередньо, його потрібно обслуговувати вебсервером. Якщо у вас немає налаштувань на комп'ютері, ви можете пошукати їх в Інтернеті, щоб знайти пропозиції для вашої конкретної ОС.
Наберіть в браузері URL-адресу, де ви розмістили файл HTML. Можливо, вам доведеться почекати кілька хвилин, поки гра завантажиться, перш ніж ви побачите екран запуску.

Вікно консолі під грою підкаже в чому проблема, якщо щось піде не так. Ви можете відключити його, в параметрі Export With Debug під час експорту проєкту.

Примітка
Хоча WebAssembly підтримується у всіх основних браузерах, це все ще нова технологія, і ви можете знайти деякі речі, які не працюють. Переконайтеся, що ви оновили вебпереглядач до останньої версії та поінформуйте про будь-які помилки, які ви знайдете у Godot Github repository.