LÖVE

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

Структура програм на 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.

Посилання