LÖVE

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
LÖVE
LÖVE logo.svg
Тип фреймворк
Перший випуск 13 січня 2008
Репозиторій bitbucket.org/rude/love/src
Останнє оновлення 31 жовтня 2016
Операційна система Windows, OS X, Linux, Android, iOS
Написано на C++
Розмір 12.5 Мб
Стан розробки активна розробка
Ліцензія zlib
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-коду до бібліотек для роботи з аудіо[1], графікою[2], фізикою[3], часом[4] та джойстиком[5]. Також є можливість упакування гри разом з її графічними ресурсами в один файл[6].

Приклади коду[ред.ред. код]

Код, який виводить «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), а потім виконується функція, яка відмальовує рахунок гравців.[7]

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

[8]

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

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

Для роботи з графікою важливо добре орієнтуватися у системі координат програми та екрану в цілому. В Love2D система координат має початок у верхньому лівому куті. Вісь OX розташована горизонтально і зростає в право, а вісь OY розташована вертикально і зростає донизу.

Lovecoordsystem.png

У фреймворку є багато вбудованих функцій для роботи з графикою. Приклад деяких функцій:

Функція Опис Аргументи
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. love.audio - LOVE. love2d.org (en). Процитовано 2017-10-15. 
  2. love.graphics - LOVE. love2d.org (en). Процитовано 2017-10-15. 
  3. love.physics - LOVE. love2d.org (en). Процитовано 2017-10-15. 
  4. love.timer - LOVE. love2d.org (en). Процитовано 2017-10-15. 
  5. love.joystick - LOVE. love2d.org (en). Процитовано 2017-10-15. 
  6. Game Distribution - LOVE. love2d.org (en). Процитовано 2017-10-15. 
  7. love - LOVE. love2d.org (en). Процитовано 2017-10-23. 
  8. Config Files - LOVE. love2d.org (en). Процитовано 2017-10-23. 

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