LÖVE
Тип | фреймворк |
---|---|
Перший випуск | 13 січня 2008 |
Версії | 11.5 (3 грудня 2023)[1][2][3] |
Останнє оновлення | 31 жовтня 2016 |
Операційна система | NetBSD, OpenBSD, FreeBSD, Windows, OS X, Linux, Android, iOS |
Мова програмування | C++ |
Розмір | 12.5 Мб |
Стан розробки | активна розробка |
Ліцензія | zlib |
Репозиторій | github.com/love2d/love |
Вебсайт | love2d.org |
LÖVE (також відомий як Love2D) — вільно розповсюджуваний кросплатформений фреймворк, призначений для розробки комп'ютерних ігор на мові Lua. Поширюється по ліцензії zlib, яка передбачає вільне використання як у відкритих, так і в комерційних проектах із закритим початковим кодом.
LÖVE не є конструктором ігор, орієнтованим на новачків: фреймворк не має власних засобів розробки, а є всього лише середовищем виконання ігор, написаних для цього двигуна. Для написання коду гри можна використовувати будь-який текстовий редактор, наприклад Notepad++. Також в LÖVE немає редактора рівнів, всі зображення, рівні і персонажі прописуються у коді гри.
Вільно доступна відкрита IDE на Lua ZeroBrane Studio, яка надає середовище для розробки і налагодження LÖVE-проектів. Для дизайну рівнів може бути використаний інший відкритий проект: редактор карт Tiled, створені за його допомогою скрипти можна завантажити в LÖVE-гру за допомогою Lua бібліотеки Simple-Tiled-Implementation.
LÖVE забезпечує доступ з Lua-коду до бібліотек для роботи з аудіо[4], графікою[5], фізикою[6], часом[7] та джойстиком[8]. Також є можливість упакування гри разом з її графічними ресурсами в один файл[9].
Код, який виводить «Hello World!» на екран:
function love.draw()
love.graphics.print("Hello World!", 400, 300)
end
Відображення графічного зображення:
function love.load()
whale = love.graphics.newImage("whale.png")
end
function love.draw()
love.graphics.draw(whale, 300, 200)
end
Програвання музики:
function love.load()
sound = love.audio.newSource("music.ogg")
love.audio.play(sound)
end
Проста програма на Love2D може складатися лише з одного файлу «main.lua». Цей файл повинен мати певну структуру, тобто складатися з трьох частин: load, update, draw. Також в структурі програми може знаходитися файл «conf.lua», у якому містяться значення параметрів вікна програми та деякі параметри відображення графіки.
Приклад вигляду структури файла «main.lua»:
function love.load()
end
function love.update(dt)
end
function love.draw()
end
Функція love.load відповідає за завантаження файлів у пам'ять та оголошення змінних та функцій. Ця функція виконується лише раз при старті програми. Фактично, оголошувати змінні і функції можна і в наступних двох функціях love.update та love.draw, але вони будуть оголошуватися кожну ітерацію основного циклу програми, що сильно навантажує процесор та погіршує читабельність коду.
Функція love.update відповідає за оновлення значень змінних у програмі. У цьому блоці рекомендується виконувати основні розрахунки.
Функція love.draw відповідає за відображення графіки на екрані. У цю функцію не рекомендовано вставляти елементи коду з розрахунками, бо це впливає на швидкодію програми. Слід мати на увазі, що елементи, які знаходяться у цій частині коду, виводяться згідно порядку в якому вони написані. Тобто перший елемент буде знаходитися під всіма іншими. Наприклад:
function love.draw()
love.graphics.setBackgroundColor(247, 247, 247)
draw_score()
end
На цьому прикладі видно, що спочатку вікно програми заповнюється одним кольором (у форматі RGB), а потім виконується функція, яка відмальовує рахунок гравців.[10]
Файл «conf.lua» має містити одну головну функцію love.conf(t). В середині цієї функції можна надавати значення таким параметрам як висота та довжина вікна програми, заголовок вікна, автор програми, вертикальна синхронізація, режим на весь екран та іншим. Приклад вигляду файлу «conf.lua»:
function love.conf(t)
t.window.width = 1280
t.window.height = 720
t.window.fullscreen = true
t.window.fullscreentype = "exclusive"
t.window.msaa = 2
t.title = "PingPong"
t.author = "Максим"
end
Фреймворк надає багато можливостей для роботи з графікою. У програмі реалізована робота з лініями, полігонами, текстом, картинками, шрифтами та системами частинок. Також є можливість рендеру в текстуру.
Для роботи з графікою важливо добре орієнтуватися у системі координат програми та екрану в цілому. В Love2D система координат має початок у верхньому лівому куті. Вісь OX розташована горизонтально і зростає в право, а вісь OY розташована вертикально і зростає донизу.
У фреймворку є багато вбудованих функцій для роботи з графікою. Приклад деяких функцій:
Функція | Опис | Аргументи |
---|---|---|
love.graphics.circle | Малює коло | mode (заповнена чи ні), x, y, radius |
love.graphics.ellipse | Малює еліпс | mode, x, y, radiusx, radiusy |
love.graphics.line | Малює лінію | x1, y1, x2, y2, ... |
love.graphics.point | Малює крапку | x, y |
love.graphics.polygon | Малює полігон | mode, x1, y1, x2, y2, ... |
love.graphics.rectangle | Малює квадрат | mode, x, y, width, height |
love.graphics.newImage | Завантажує зображення до пам'яті | filename |
ove.graphics.newFont | Завантажує шрифт до пам'яті | filename |
love.graphics.setBackgroundColor | Визначає колір тла | red, green, blue (значення 0-255) |
- ↑ https://love2d.org/forums/viewtopic.php?t=95265
- ↑ (unspecified title) — 2023.
- ↑ LÖVE 11.5 released!
- ↑ love.audio - LOVE. love2d.org (англ.). Архів оригіналу за 14 жовтня 2017. Процитовано 15 жовтня 2017.
- ↑ love.graphics - LOVE. love2d.org (англ.). Архів оригіналу за 19 жовтня 2017. Процитовано 15 жовтня 2017.
- ↑ love.physics - LOVE. love2d.org (англ.). Архів оригіналу за 14 жовтня 2017. Процитовано 15 жовтня 2017.
- ↑ love.timer - LOVE. love2d.org (англ.). Архів оригіналу за 14 жовтня 2017. Процитовано 15 жовтня 2017.
- ↑ love.joystick - LOVE. love2d.org (англ.). Архів оригіналу за 14 жовтня 2017. Процитовано 15 жовтня 2017.
- ↑ Game Distribution - LOVE. love2d.org (англ.). Архів оригіналу за 25 жовтня 2017. Процитовано 15 жовтня 2017.
- ↑ love - LOVE. love2d.org (англ.). Архів оригіналу за 12 жовтня 2017. Процитовано 23 жовтня 2017.
- ↑ Config Files - LOVE. love2d.org (англ.). Архів оригіналу за 6 листопада 2017. Процитовано 23 жовтня 2017.
- love2d.org [Архівовано 14 жовтня 2017 у Wayback Machine.] — офіційний сайт LÖVE
- Офіційна вікі-документація [Архівовано 13 жовтня 2017 у Wayback Machine.]
- Офіційний форум програми [Архівовано 11 жовтня 2017 у Wayback Machine.]
- Баг-трекер [Архівовано 15 жовтня 2017 у Wayback Machine.]