Kebanyakan game engine menuntut kamu belajar banyak hal dulu sebelum ada sesuatu yang bergerak di layar. Usagi melakukan sebaliknya. Ini adalah engine 2D open source yang kecil untuk membuat game pixel art dengan Lua, dibangun di sekitar satu ide: prototyping cepat, perubahan terlihat seketika, dan export cukup dengan satu perintah. Kamu menulis game dengan Lua, menjalankan `usagi dev`, dan setiap kali menyimpan, game yang sedang berjalan langsung diperbarui tanpa restart dan tanpa kehilangan state-nya. Loop secepat itu adalah inti dari Usagi, dan itulah alasan ia layak dilirik kalau kamu punya ide game yang ingin diuji akhir pekan ini, bukan bulan depan.
Poin Penting
>
Usagi adalah game engine 2D open source untuk prototyping cepat game pixel art dengan Lua 5.5, dibuat oleh Brett Chalupa dan dirilis ke domain publik di bawah lisensi Unlicense.
Fitur utamanya adalah live reload: `usagi dev` memantau kode dan aset kamu, jadi setiap penyimpanan langsung diterapkan tanpa kehilangan state game.
Satu perintah, `usagi export`, mengemas game untuk Linux, macOS, Windows, dan web.
Batasannya sengaja dibuat: resolusi default 320x180, grid sprite default 16x16, dan satu file `sprites.png` untuk semua tekstur.
Mirror GitHub di brettchalupa/usagi punya 871 star, dan pengembangannya berjalan di Codeberg.
Tonton signal repo 30 detiknya: Build 2D Pixel Games Fast With Usagi
Baca artikel ini dalam bahasa Inggris: Usagi: Build 2D Pixel Games Fast With Lua and Live Reload
Sebenarnya Usagi Itu Apa
Usagi mendeskripsikan dirinya dengan sederhana: game engine 2D sederhana untuk rapid prototyping. Engine-nya sendiri ditulis dengan Rust, tapi kamu membuat game dengan Lua 5.5, bahasa kecil yang banyak dipakai di perkakas game. Repositori GitHub-nya adalah mirror; pengembangan aktif berlangsung di codeberg.org/brettchalupa/usagi, dan rilis terbarunya adalah v1.3.3. Ini adalah perangkat lunak bebas karya Brett Chalupa, didedikasikan ke domain publik, jadi kamu bisa memakainya tanpa khawatir soal biaya lisensi atau royalti.
Usagi tidak berusaha menjadi segalanya. Dokumentasinya sendiri bilang, ini bukan fantasy console dan bukan pengganti Love2D. Ia tidak menargetkan mobile atau VR, dan tidak dibangun untuk game besar yang sudah dipoles. Kejujuran itu berguna, karena ia langsung memberi tahu kapan kamu harus memakainya: saat kamu ingin mencoba ide dengan cepat, saat kamu baru belajar pemrograman game, saat kamu sudah mentok di perkakas yang lebih terbatas, atau saat kamu menginginkan sesuatu yang lebih sederhana dari engine serbaguna yang besar.
Memulai Dalam Tiga Perintah
Memulai proyek Usagi hanya butuh tiga perintah, semuanya terdokumentasi di README proyek:
`usagi init my_game` membuat proyek dengan file `main.lua`, type stub untuk dukungan language server Lua, dan salinan dokumentasi.
`cd my_game` pindah ke folder proyek.
`usagi dev` menjalankan game dalam mode pengembangan sambil memantau file kamu.
File `main.lua` yang dibuat memberi tiga stub: `_init` berjalan sekali saat startup, `_update` berjalan setiap frame, dan `_draw` merender frame. Menggambar teks sesingkat ini:
function _draw(_dt) gfx.clear(gfx.COLOR_BLACK) gfx.text("Hello, Usagi!", 10, 10, gfx.COLOR_WHITE) end
Dari situ, kamu menambahkan sprite, input, suara, dan logika game di file yang sama, atau memecahnya seiring proyek membesar. Engine ini punya buku online di book.usagiengine.com yang menjelaskan API-nya, jadi kamu tidak perlu menebak fungsi tiap perintah.
Kenapa Live Reload Mengubah Prototyping
Live reload terdengar seperti kenyamanan kecil, tapi dalam praktik ia mengubah cara kamu mendesain. Dalam alur kerja biasa, kamu mengubah satu nilai, me-restart game, memainkan lagi sampai ke titik yang sedang diuji, baru kemudian menilai perubahannya. Dengan Usagi, kamu mengedit sprite di editor, menyimpan, dan game yang sedang berjalan langsung menampilkan art baru, dengan state tetap utuh. Kamu bisa menyetel tinggi lompatan, kecepatan musuh, atau palet warna selagi game masih berjalan di depanmu, dan merasakan bedanya dalam hitungan detik, bukan menit.
Hal itu paling terasa di tahap prototype, saat kamu menjawab pertanyaan seperti: apakah lompatan ini seru, apakah level ini mudah dibaca, apakah musuh ini terasa adil? Jawaban yang cepat berarti lebih banyak ide yang teruji, dan lebih banyak ide yang teruji berarti peluang lebih besar menemukan satu ide yang layak diselesaikan. Dokumentasi engine merangkum hal yang sama sebagai "constraints to inspire creativity": API kecil yang tetap memberi semua yang kamu butuhkan untuk game 2D yang bagus, dan membuang sisanya.
Batasan Itu, dan Kenapa Justru Membantu
Default Usagi terlihat ketat pada pandangan pertama, dan itu memang disengaja:
Aspek | Default Usagi | Kenapa membantu |
|---|---|---|
Resolusi | 320x180 | Setiap game berbagi kanvas retro yang tajam, dan scaling tetap sederhana |
Grid sprite | 16x16 | Art tetap konsisten, dan satu sprite sheet mudah dikelola |
Tekstur | Satu sprites.png | Tidak ada asset pipeline yang harus dikonfigurasi sebelum mulai |
Bahasa | Lua 5.5 | Kecil, mudah dibaca, dan mudah dipelajari pemula |
Data simpanan | Satu fungsi untuk tabel Lua | Menyimpan dan memuat tidak butuh database atau format file khusus |
Satu file `sprites.png` plus API kecil berarti jam pertamamu dipakai untuk gamenya, bukan untuk perkakas. Pertukarannya nyata: kalau kamu butuh 3D, build mobile, atau dunia terbuka yang besar, Usagi adalah perkakas yang salah, dan dokumentasinya bilang begitu. Tapi kalau idemu adalah game arcade yang rapat, game puzzle, atau entri game jam, batasan itu justru menghilangkan keputusan, bukan menambahnya.
Bawaan, Bukan Tambalan
Dua fitur yang biasanya butuh kerja ekstra di engine kecil sudah built in di Usagi. Yang pertama adalah pause menu, dengan kontrol volume suara dan musik, toggle fullscreen, dan remapping keyboard dan gamepad per game. Pemain mengharapkan menu itu, dan membuatnya sendiri bisa menghabiskan satu akhir pekan. Yang kedua adalah data simpanan: satu fungsi menyimpan state game sebagai tabel Lua, dan satu fungsi memuatnya kembali. Bersama-sama, keduanya membuat prototype terasa seperti game jadi jauh lebih awal, sehingga playtesting bersama teman jadi jauh lebih berguna.
Export adalah bagian lain yang biasanya menyakitkan. `usagi export` mengemas game untuk Linux, macOS, Windows, dan web dalam satu langkah. Artinya prototype yang sama yang kamu setel di laptop bisa dibagikan sebagai build web untuk umpan balik cepat, lalu dikirim sebagai build desktop saat sudah siap. Kamu juga bisa menginstal engine dari Codeberg, GitHub, atau itch.io, atau lewat Homebrew dengan community tap, semuanya tercantum di README.
Siapa yang Cocok Mencoba Usagi
Usagi sangat cocok untuk beberapa orang. Pemula mendapat jalur masuk yang lembut: satu bahasa, satu sprite sheet, dan umpan balik seketika. Developer game jam mendapat kecepatan: prototype yang bisa dimainkan dalam satu malam, dengan export siap saat deadline tiba. Developer berpengalaman mendapat buku sketsa: tempat menguji mekanik sebelum berkomitmen ke engine yang lebih besar. Kalau kamu pernah berkata "saya ingin mencoba ide itu, tapi menyiapkan proyeknya terlalu merepotkan," Usagi menghilangkan alasan itu.
Ia bukan untuk semua orang. Tim yang membangun game komersial besar, developer yang menargetkan ponsel, atau siapa pun yang butuh 3D sebaiknya mencari di tempat lain. Tapi open source justru tumbuh dari perkakas yang mengerjakan satu pekerjaan dengan baik, dan pekerjaan Usagi jelas: membuat ide game pixel art bisa dimainkan secepat mungkin.
FAQ
Apakah Usagi gratis?
Ya. Usagi adalah perangkat lunak bebas yang didedikasikan ke domain publik di bawah lisensi Unlicense, jadi tidak ada biaya lisensi. Penulisnya menerima dukungan sukarela lewat tautan kopi, tapi engine-nya sendiri tidak berbayar.
Apakah saya harus bisa Rust untuk memakai Usagi?
Tidak. Engine-nya ditulis dengan Rust, tapi game ditulis dengan Lua 5.5. Kamu hanya menyentuh Lua, plus sprite sheet dan perkakas suara dan musik pilihanmu.
Di mana Usagi dikembangkan?
Repositori GitHub di brettchalupa/usagi adalah mirror. Pengembangan aktif berlangsung di Codeberg, dan situs resminya adalah usagiengine.com.
Bisakah saya mengekspor game ke web?
Ya. `usagi export` mengemas game untuk Linux, macOS, Windows, dan web, jadi kamu bisa membagikan build web yang bisa dimainkan untuk umpan balik.
Intinya
Usagi tidak akan menggantikan engine besar, dan ia memang tidak mencoba. Ia memberimu Lua, sprite sheet, live reload, dan export satu perintah, lalu menyingkir dari jalanmu. Kalau kamu punya ide pixel art yang tersimpan di buku catatan, ini adalah salah satu cara tercepat untuk melihatnya bergerak. Ambil engine-nya, jalankan `usagi init`, dan cari tahu dalam satu malam apakah idemu seru. Itulah gunanya engine prototyping.
