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) |
Примітки
- ↑ 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.]