Ga ngelanjutin dulu soal game programming pattern. Soal implementasi singleton dan observer di Godot sudah cukup mudah dan sering aku pakai, meski definisi dan konsep dasarnya masih banyak yang kurang aku pahami. Sedangkan soal state pattern bakal lama implementasinya di proyek yang sudah ada (pingin ada waktu buat ngerjain yang lain, seperti beli baju lebaran hehe). Plus, pingin beres sebelum Jumatan. Jadinya balik lagi ke seri tutorial bikin game kartu.
Ga ngenalin fitur baru, tapi beberapa trik yang dipakai cukup baru buat saya. Hanya saja memang cara penulisan kodenya mungkin bukan best practice. Atau seenggaknya ga cocok aja. Misalnya, aku lebih cocok buat bikin reference untuk akses child node dari suatu scene daripada pakai get_node(). Dan, setelah kemarin ngerjain command pattern kerasa banget enaknya ngedeklarasiin script sebagai class pakai class_name, yang jarang dipakai di tutorial ini.
Tutorialnya sendiri tidak ada masalah. Mungkin ada beberapa modifikasi yang kurasa bakal lebih bagus:
- Kalau aset gambar kartu pakai AtlasTexture, bisa bikin masing-masing resourcenya dulu.
- Kalau ingin animasi flip selesai pas kartu yang di-draw nyampe ‘player hand’, pas bikin animasi flip, bikin dengan durasi 1 detik, lalu saat manggil animasi di skrip deck.gd, ubah
speed_scaledari Animation Player jadi 1/draw_speed yang sudah didefinisikan dari tutorial sebelumnya. - Ada baiknya saat nge-flip, saat animasi mencapai tengah-tengahnya, selain scale.x = 0.1, ubah juga scale.y menjadi sedikit lebih besar biar ada efek seperti kartunya keangkat waktu di-flip (dapet tips dari komen di YouTube tutorialnya).
Beberapa hal lain yang saya temukan:
- Otakku hanya bisa melihat kalau kartunya nge-flip ke kiri ._. padahal kalau cuma di-stretch atau diubah scale-nya ga akan ada bedanya di-flip ke kiri atau kanan.
- Nemu bug yang bikin kartu pindah ke belakang slot jika dilepas saat mouse di tengah slot. Mungkin gara-gara sistem drop di slot aku modifikasi kemaren. Tapi, ternyata kalau Collision Shape si kartu ga di-disabled saat habis dilepas, bugnya hilang. Tetep sih, collision-nya harus disabled agar tidak bisa di-klik saat kartu sudah masuk slot. Setelah diulik-ulik, akhirnya ubah
collision_maskdi Collision Shape-nya aja agar tidak kena Raycast dari mouse.
Gara-gara bug yang terakhir, ngerjain ini jadi nambah 1 jam lebih.
Github: OneDay-OneTut: Latihan ngerjain 1 tutorial Godot tiap hari selama bulan Maret
Asset: Kenney Playing Card Pack
