Pas pertama kali buka editor Godot, kamu bakal lihat beberapa panel. Sebenarnya, tampilannya lebih simpel dari yang terlihat. Ini area-area penting yang perlu kamu tahu:
Left Panel: Di sini ada dua tab:
Scene: Menampilkan hierarki scene (nanti kita bahas tentang scenes dan nodes)
FileSystem: Menampilkan file dan folder project
Right Panel: Menampilkan properti dari node yang sedang kamu pilih
Center Area: Ini adalah area kerja utama buat ngeliat dan ngedit scene
Scene ini pakai CharacterBody2D sebagai root node-nya, yang ngatur pergerakan dan physics. Di dalamnya ada beberapa child node:
Node Type
Fungsi
Sprite2D
Menampilkan tampilan karakter
CollisionShape2D
Menentukan bentuk fisik untuk collision detection
AnimationPlayer
Mengontrol animasi karakter
Area2D
Mengatur area serangan karakter
AudioStreamPlayer2D
Mengelola efek suara
Catatan: Di screenshot, kamu bisa lihat CharacterBody2D dinamai HeavyBlade dan Area2D dinamai BasicAttackHitbox. Kita bisa ganti nama node supaya lebih jelas fungsinya, karena satu scene bisa punya beberapa node dengan tipe yang sama.
Struktur ini menunjukkan bahwa setiap node punya peran masing-masing dan bersama-sama menciptakan behavior yang kompleks—ibarat main LEGO, tiap potongan punya fungsinya dan kalau digabung jadi sesuatu yang lebih keren.
Catatan: Nanti kita bahas kenapa pakai CharacterBody2D di pelajaran berikutnya. Untuk sekarang, cukup tahu kalau node ini pas buat karakter yang bisa dikontrol.
Klik “Create” untuk menambahkannya sebagai root node
Sekarang, scene baru kamu sudah punya CharacterBody2D sebagai root node, tapi kita harus simpan dulu.
Catatan: Ini adalah sprite sheet yang akan kita pakai:
Atur sprite sheet:
Di bagian Animation, set Hframes ke 23 (frame horizontal)
Set Vframes ke 1 (frame vertikal)
Ini membagi sprite sheet menjadi frame-frame individual. Sprite sheet ini punya 23 frames yang tersusun horizontal, jadi Godot perlu tahu cara membaginya.
Atur Scale jadi 0.5:
Di bagian Transform, set Scale ke 0.5
Karena sprite sheet ini agak besar buat ukuran default.
Pindahkan karaktermu ke tengah layar dengan menggeser root node.
Tekan F6 atau klik tombol “Play Scene” (ikon film) buat nyobain scene
Karaktermu bakal tampil di jendela game
Catatan: Kalau karaktermu nggak muncul, pastikan posisinya di dalam area tampilan jendela game dan yang kamu geser adalah root node, bukan sprite node.
Sekarang kamu sudah punya scene dasar, tapi masih statis. Walaupun kamu bisa atur properti seperti posisi secara manual di editor, gimana biar scene bergerak saat game jalan?
Jawabannya adalah script! Script ngasih tahu node: apa yang harus dilakukan saat game dijalankan. Misalnya, pergerakan karakter dilakukan dengan mengubah properti position seiring waktu sesuai input pemain.
Dengan script, kamu bisa:
Mengubah properti node secara real-time
Merespons aksi pemain (seperti input keyboard/mouse)
Mengatur aturan dan behavior game
Aku anggap kamu sudah paham dasar-dasar pemrograman (variabel, fungsi, alur logika, dll.), jadi aku nggak akan jelasin dasar-dasar GDScript (bahasa script Godot) di sini. Kalau kamu masih baru, sebaiknya pelajari dulu dasarnya.
Kalau butuh bantuan, tinggal tanya aja di Discord.
Di Godot, kamu bisa lampirkan script ke setiap node dalam scene. Biasanya, script dilampirkan ke root node kecuali ada alasan khusus buat lampir ke child node.
Untuk melampirkan script:
Klik kanan pada node, lalu pilih “Attach Script”, atau
Pilih node dan klik ikon ’+’ di pojok kanan atas.
Kamu akan diminta pilih bahasa script dan beri nama script-nya. Dalam project ini, kita pakai GDScript.
Misalnya, beri nama script “heavy_blade.gd” agar sesuai dengan nama scene. Lalu, kamu akan melihat tab script (menggantikan tab scene) yang isinya:
extendsCharacterBody2D
Ini artinya script sudah terlampir pada node CharacterBody2D.
Bisa langsung nulis kode di bawah baris extends? Bisa, tapi kalau kamu nulis kode langsung tanpa dibungkus dalam fungsi, akan muncul error “unexpected identifier”. Semua kode yang bisa dijalankan harus ada dalam fungsi. GDScript nggak punya fungsi main(), melainkan bergantung pada fungsi virtual.
Saat scene dijalankan, karaktermu akan bergerak sesuai tombol panah yang ditekan.
Namun, kamu mungkin akan melihat pergerakannya agak tersendat. Ini karena gerakan hanya diterapkan saat input terdeteksi, padahal seharusnya gerakan itu kontinu.
Fungsi _unhandled_input() ternyata kurang pas untuk input yang terus menerus. Mari kita refactor kodenya ke dalam fungsi _process():
Selamat, kamu telah menyelesaikan pelajaran pertama! Hari ini, kamu telah belajar cara download dan setup Godot, membuat project pertama, mengenal editor, serta membuat scene dasar menggunakan nodes dan script. Ini adalah langkah awal penting dalam perjalanan pembuatan game kamu.
Ingat, di tahap awal kita bahas secara detail supaya kamu lebih nyaman dengan konsep-konsep baru. Nanti, saat kamu makin paham, panduannya akan jadi lebih ringkas sehingga kamu punya ruang untuk bereksperimen sendiri. Pelajaran ini sengaja dibuat singkat agar tidak membuat kamu kewalahan dengan informasi.
Luangkan waktu untuk berlatih dengan apa yang sudah kamu pelajari. Coba buat scene dan script sendiri serta eksplorasi kode-kodenya. Mungkin kamu juga akan nemu bagian-bagian kode yang sengaja dibuat ambiguous, contohnya:
Apa itu delta? Apa maksud -> void? Bagaimana cara kerja Vector2? Apakah ini cara terbaik buat menggerakkan karakter? Bagaimana biar gerakannya lebih halus?
Kalau ada pertanyaan, jangan ragu untuk tanya di Discord.
Kerja bagus sudah ambil langkah pertama—tetap semangat, dan selamat ngoding!