evilfactorylabs

Cover image for Berkenalan dengan Love2D
Mabinogion
Mabinogion

Posted on • Updated on

Berkenalan dengan Love2D

Kimi-tachi mungkin tidak asing dengan Web Framework, sekumpulan fungsi program siap pakai dengan filosofinya sendiri untuk membangun Web, kita cukup nuangin lojik kode dan nambahin pernak-pernik lainya : db driver, cache, logger, etc ngweb riwet ya aksesorisnya xixixixi ribet-ribet pas insiden ga buntu.

Di-isekai Game Development punya mekanisme untuk ngebantu koding biar lebih enak keak game engine semacam Unity, Godot, RPGMaker atau framework sejenis Renpy dan Raylib. Jadi kita ga perlu khatam OpenGL beserta segala implementasi pengolahan citra.

Bedanya game engine dan framework, di framework kita lebih banyak ngoding untuk membuat game kita ketimbang game engine yang banyak nyedian utilitas dan template untuk scaffolding game. Keuntungan dari game engine pengembangan cepat tetapi terasa vendor-lockin (opionated, mirip ruby on rails), sedang framework kita ga kaku buat nyusun arsitektur kode kita (unopionated, keak net/http golang).

Love 2D

Kali ini kita coba yang game framework: Love 2D. Cinta Waifu atau Love2D, semacam framework untuk bikin game dua dimensi dengan Lua . Love 2d berisi fungsi-fungsi utilitas untuk nampilin gambar, ngolah suara dan sebagainya. (tapi ada mod untuk 3d dari komunitas)

Memulai membuat game kita perlu punya Love2d, karena saya agak malas jadi saya sarankan install, ZeroBrane IDE. Tapi bagi sesepuh yang menolak IDE dan segala bentuk wujudnya, silahkan download binary love2d dan ikuti petunjuk ini, TL;DR: untuk anti IDE, .\love <script>.love untuk jalanin Love2d mirip interpreter.

rupa dari ZeroBrane IDE sebuah kotak untuk menulis kode dan navigasi kumpulan kode beserta manajemen lainya

Jangan lupa disisi kanan paling bawah di pilih opsi LOVE di ZeroBrane IDE.

posisi penyetingan interpreter untuk memilih dari pilihan bawaan ke Love2d

Pertama buka folder kosong untuk memulai project di Zerobrane dengan pencet CTRL+O di kibot, lalu kita buat file bernama main.lua di folder dengan kode berikut.

function love.draw()
   love.graphics.print("Hello, UwU", 10, 10)
end
Enter fullscreen mode Exit fullscreen mode

Kegelapan kode diatas:

  • function love.draw() adalah fungsi yang dipanggil oleh Love2D ketika ingin menampilkan (render) visual game.
  • love.graphics.print, fungsi untuk mencetak teks, parameter pertama adalah textnya ("Hello, UwU"), kedua adalah posisi sumbu X dalam window visual game nilai ini berupa bilang positif (10) dan ketiga untuk posisi sumbu Y, masih ingat diagram kartesian ? coba main desmos.

Ketik REG SPASI RAMAL, setelah itu CTRL + S (ngesep file) dan pencet F5 (ngerun file) buat jalanin kodenya. Hasilnya akan muncul kotak hitam dengan tulisan putih:

demonstrasi hasil tampilan kode dari kode yang ditulis, Hello World berjarak 10 piksel dari kiri dan atas

Tampilan diatas kita memiliki teks "Hello, UwU" dengan jarak 10 piksel dari batas kiri dan 10 piksel dari batas atas window.

Sistem Koordinat

Berikut sistem koordinat sumbur di window:

gambar babi dalam contoh koordinat

Kredit gambar: LOVE 2D

Sudut atas paling kiri menjadi basis koordinat (0,0), maka ketika bergerak ke angka positif objek akan bergerak ke kanan di sumbu X dan bergerak kebawah di sumbu Y.

Nambah Gambar

Perkenalkan maskot kita Nyo Nyo, anak gurita pink prematur.
ini nyo-nyo

Silahkan unduh gambar ini lalu simpan dengan nama "nyo-nyo.png" letakan di folder game yang dibuka di IDE. Kita hapus kode kita yang ada di main.lua lalu ganti dengan ini:

function love.load()
  nyoNyo = love.graphics.newImage("nyo-nyo.png")
end

function love.draw()
  love.graphics.draw(nyoNyo, 0,0)
  love.graphics.print("Nyo Nyo", 0,49)
end
Enter fullscreen mode Exit fullscreen mode

Penjelasan:

  • function love.load() untuk memuat asset (gambar nyo-nyo) ke memori untuk ditampilkan, Gambar Nyo-Nyo disimpen kedalam variable nyoNyo (di lua ini jadi global variabel yang bisa diakses dimana aja). Laifsaikel akan dijelaskan di bagian selanjutnya.

  • love.graphics.draw, ini untuk menampilkan asset gambar ke window.

window hitam diatas merupakan hasil kode dengan gambar maskot nyo nyo dan tulisan nyo nyo, lalu dibawah IDE dan kodenya

Love 2D Lifecycle

Minna-san sudah belajar mengunakan salah satu dari laifsaikel (lifecycle) dari Love2d yakni love.draw untuk meng-render visual di window. Ada tiga fase laifsaikel yang wajib kamu tau sekarang: love.load, love.update, love.keypressed.

  • love.load adalah fungsi yang akan dibaca saat awal sebelum masuk ke fase love.draw. Laifsaikel ini biasanya dipakai buat ngemuat asset ke memori, parsing savean dan sebagainya, ini kenapa kita menjumpai loading screen.

  • love.update fungsi tempat memproses event masuk entah itu keyboard dipencet dsb, fungsi ini dipanggil setiap frame di render sebanyak FPS.

  • love.keypressed mirip dengan fungsi update tapi khusus untuk mengolah inputan keyboard.

Pada dasarnya prinsipnya mirip seperti Model-View-Update nya Elm,

load -> draw -> update/keypressed -> balk lagi ke draw

Penutup

Sekian demonstrasi sekelas "Hello, World" di game framework Love 2D. Mungkin bila sempat, watashi (saya) akan mencoba membuat Nyo Nyo bisa jalan dengan pencetan kibot dan menuliskanya di sini.

Salam bangkit game developer Indonesia huahahahahaha

referensi lanjutan

Top comments (0)