Sistem Global - Godot Engine
Hai. Kenalin, gue Reymo Je
Ini kali pertama gue menulis blog yang bertentangan dengan teknologi dan game development. Berawal dari kegabutan menjadi proyek besar yang pernah gue kerjakan hingga saat ini. Dari bulan November 2024 hingga sekarang gue lagi ngerjain proyek game berjudul "Project Thinkbox". Disini gue akan berbagi sedikit ilmu ke kalian supaya industri kreatif dapat dikembangkan oleh generasi muda.
Project Thinkbox progress showcase - 19 Jan 2025
Godot Autoload
Buat para user Godot Engine mungkin pernah mendengar sebuah kata bernama Autoload. Yap, salah satu fitur godot yang memberikan fleksibilitas kepada scene system-nya.
Bilamana lo punya dua scene, scene pertama sedang berjalan dan akan berpindah ke scene kedua. Lah, lu punya sebuah variable yang value-nya selalu bertahan (tidak ter-reset) walaupun ada pergantian scene. Dari sini, kita dapat menggunakan system autoload ini. Dimana autoload akan menyimpan data berupa Resource dan akan terus berjalan sampai game selesai berjalan (Quit Game).
Global System
MENYIMPAN VARIABEL GLOBAL KE DALAM SEBUAH FILE
Lanjut ke Sistem Global yang gue bikin sendiri. Gue membagi variabel global menjadi dua jenis, yaitu Conditions dan State. Supaya pengolahan data lebih fleksibel, variabel-variabel tersebut disimpan disebuah file JSON bernama global_var.json
- Conditions : menyimpan variable berupa boolean (true/false)
- State : menyimpan variable dalam bentuk angka (integer)
global_var.json
Darisini kita dapat mengolah data file global tersebut menggunakan script. Buatlah script global (global.gd) kemudian masukkan script tersebut ke Project > Project Settings > Globals > Autoload. Aksi ini membuat script global akan berjalan sepanjang game yang sedang bekerja hingga game telah usai. Kita perlu memuat file global tersebut sebelum mengolah datanya.
NOTE : File JSON adalah sebuah Resource, bilamana file tersebut dimuat ke dalam sebuah variabel, variabel tersebut akan berjenis Dictionary
Buat variable untuk menyimpan JSON ke dalam bentuk Dictionary
Fungsi untuk memuat file JSON
Btw, berdasarkan gambar pertama, kita juga memerlukan variabel default dari variable global. Untuk apa? Supaya variabel global dapat di-reset ke default value-nya. Untuk mendapatkan value variabel default, kita duplikat variable global saat game baru berjalan. Inilah mengapa pada gambar pertama, mengisi variabel default dilakukan di dalam fungsi _ready().
FUNGSI UNTUK MENGOLAH DATA
Disini kita dapat sebebasnya mengolah data dari variabel global tersebut. Gue membagi beberapa fungsionalitas pengolahan data.
- Get Global Condition
- Set Global Condition
- Get Global State
- Set Global State
- Increase Global State
- Decrease Global State
- Reset Global
TAMBAHAN
Gue juga bikin fungsi tambahan untuk mengecek ada tidaknya suatu key didalam sebuah Dictionary.
Untuk memakai fungsi ini, diperlukan 3 input :
- Dictionary : Variabel dictionary yang akan dicek
- Head : Conditions atau State
- Key : Nama key yang akan dicek
Fungsi ini akan menghasilkan nilai true bila key ada didalam head, dan akan menghasilkan nilai false bila sebaliknya.
Konstanta untuk Conditions dan State juga diperlukan.
GET GLOBAL CONDITION
Fungsi ini berfungsi untuk mengambil value condition dari sebuah key sebagai input.
SET GLOBAL CONDITION
Fungsi ini berfungsi untuk mengatur value condition dari sebuah input key dengan input value.
GET GLOBAL STATE
Fungsi ini berfungsi untuk mendapatkan value state dari sebuah key sebagai input.
SET GLOBAL STATE
Fungsi ini berfungsi untuk mengatur value state dari sebuah input key dengan input value.
INCREASE GLOBAL STATE
Fungsi ini berfungsi menaikkan value state.
DECREASE GLOBAL STATE
Fungsi ini berfungsi menurunkan value state.
RESET GLOBAL
Mengingat Autoload akan dijalankan dari awal game berjalan hingga selesai. Fungsi ini berfungsi mengembalikan ulang value dari variabel global. Berguna jika berpindah scene dan ingin mer-reset variabel global.
USE CASES
PLAYER HANYA BISA MELOMPAT BILA IA CONTROLLABLE
is_player_controllable sudah dideklarasikan di dalam global_var.json
Di dalam fungsi jump() tersebut, instruksi fungsi hanya akan berjalan bila variabel is_player_controllable memiliki value true. Untuk mendapatkan value dari variabel tersebut, kita menggunakan fungsi get_global_condition().
BILA PLAYER MOKAD, ANGKA DEATH COUNT NAIK
Dalam fungsi kill_self() dimana fungsi tersebut akan tereksekusi bila player mokad, kita dapat menggunakan variabel global untuk menyimpan dan menghitung jumlah kegagalan yang ada.
Post written by Reymo Je














Comments
Post a Comment