LÖVE (також відомий як Love2D) — вільно розповсюджуваний кросплатформений фреймворк, призначений для розробки комп'ютерних ігор на мові Lua. Поширюється по ліцензії zlib, яка передбачає вільне використання як у відкритих, так і в комерційних проектах із закритим початковим кодом.

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 не є конструктором ігор, орієнтованим на новачків: фреймворк не має власних засобів розробки, а є всього лише середовищем виконання ігор, написаних для цього двигуна. Для написання коду гри можна використовувати будь-який текстовий редактор, наприклад 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

Структура програм на LÖVE ред.

Проста програма на Love2D може складатися лише з одного файлу «main.lua». Цей файл повинен мати певну структуру, тобто складатися з трьох частин: load, update, draw. Також в структурі програми може знаходитися файл «conf.lua», у якому містяться значення параметрів вікна програми та деякі параметри відображення графіки.

Файл «main.lua» ред.

Приклад вигляду структури файла «main.lua»:

function love.load()
	
end

function love.update(dt)
	
end

function love.draw()

end

Функція love.load() ред.

Функція love.load відповідає за завантаження файлів у пам'ять та оголошення змінних та функцій. Ця функція виконується лише раз при старті програми. Фактично, оголошувати змінні і функції можна і в наступних двох функціях love.update та love.draw, але вони будуть оголошуватися кожну ітерацію основного циклу програми, що сильно навантажує процесор та погіршує читабельність коду.

Функція love.update(dt) ред.

Функція love.update відповідає за оновлення значень змінних у програмі. У цьому блоці рекомендується виконувати основні розрахунки.

Функція love.draw() ред.

Функція love.draw відповідає за відображення графіки на екрані. У цю функцію не рекомендовано вставляти елементи коду з розрахунками, бо це впливає на швидкодію програми. Слід мати на увазі, що елементи, які знаходяться у цій частині коду, виводяться згідно порядку в якому вони написані. Тобто перший елемент буде знаходитися під всіма іншими. Наприклад:

function love.draw()
	
	love.graphics.setBackgroundColor(247, 247, 247)
	
	draw_score()
end

На цьому прикладі видно, що спочатку вікно програми заповнюється одним кольором (у форматі RGB), а потім виконується функція, яка відмальовує рахунок гравців.[10]

Файл «conf.lua» ред.

Файл «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

[11]

Робота з графікою в LÖVE ред.

Фреймворк надає багато можливостей для роботи з графікою. У програмі реалізована робота з лініями, полігонами, текстом, картинками, шрифтами та системами частинок. Також є можливість рендеру в текстуру.

Для роботи з графікою важливо добре орієнтуватися у системі координат програми та екрану в цілому. В 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)

Примітки ред.

  1. https://love2d.org/forums/viewtopic.php?t=95265
  2. (unspecified title) — 2023.
  3. LÖVE 11.5 released!
  4. love.audio - LOVE. love2d.org (англ.). Архів оригіналу за 14 жовтня 2017. Процитовано 15 жовтня 2017.
  5. love.graphics - LOVE. love2d.org (англ.). Архів оригіналу за 19 жовтня 2017. Процитовано 15 жовтня 2017.
  6. love.physics - LOVE. love2d.org (англ.). Архів оригіналу за 14 жовтня 2017. Процитовано 15 жовтня 2017.
  7. love.timer - LOVE. love2d.org (англ.). Архів оригіналу за 14 жовтня 2017. Процитовано 15 жовтня 2017.
  8. love.joystick - LOVE. love2d.org (англ.). Архів оригіналу за 14 жовтня 2017. Процитовано 15 жовтня 2017.
  9. Game Distribution - LOVE. love2d.org (англ.). Архів оригіналу за 25 жовтня 2017. Процитовано 15 жовтня 2017.
  10. love - LOVE. love2d.org (англ.). Архів оригіналу за 12 жовтня 2017. Процитовано 23 жовтня 2017.
  11. Config Files - LOVE. love2d.org (англ.). Архів оригіналу за 6 листопада 2017. Процитовано 23 жовтня 2017.

Посилання ред.