“Studi literatur” terakhir sebelum benar-benar melakukan “practices”. Sudah kuterima saja kalau manualnya perlu dibaca berulang kali biar ngerti dan kalaupun sudah ngerti ada saja pemahaman yang berubah saat baca bagian lain.
Aku belum sepenuhnya paham kenapa ada pertanyaan: “Pilih scene atau script?”. Mungkin karena di Godot kita bisa membuat scene yang merupakan instance dari tipe node tertentu, juga bisa membuat script dengan class_name yang keduanya dapat digunakan sebagai class. Namun, perbedaan keduanya cukup jelas bukan?
Secara umum, scene lebih cepat dan bagus performanya. Namun, script bisa bikin tipe node baru yang mempermudah pengembangan, khususnya kalau mau bikin tool internal atau plugin.
Kesimpulannya sih katanya begini:
Kalau perlu bikin tool internal atau plugin yang bakal dipake oleh non-programmer, bikin class pakai script.
Kalau perlu bikin suatu class atau konsep sistem yang cuma berlaku di game ini, bikin scene aja. Scene lebih mudah diedit dan lebih “secure”.
Selebihnya, hanya bisa dipahami dengan praktik. Mungkin belajar “best practices” dengan baca manual secara berurutan bukan cara terbaik. Nanti aku belajar bikin game jenis tertentu lewat ngikutin tutorial lalu dibandingkan dengan “best practices” aja.
Masih melanjutkan materi tentang Scene organization, masih di bagian koneksi antar node.
Intinya ada dua:
Seperti di postingan sebelumnya, usahain suatu scene atau script bisa berdiri sendiri tanpa perlu memiliki reference di luar scene nya. Ini dilakukan agar kalau ada perubahan di objek reference-nya, scene tersebut tidak terlalu terpengaruh. Kalau tidak memungkinkan, usahakan scene tersebut terhubung dengan scene lain secara anonim (pakai signal atau semacamnya) alias ‘loose-coupling’.
Semua aturan Object Oriented Programming (OOP) berlaku pada scene dan script, termasuk:
SOLID, aturan-aturan biar kodenya rapih, fleksibel, dan gampang di -maintain (artinya lebih mudah buat diutak-atik). Bisa baca wikipedia buat penjelasannya, tapi kalau mau dengan contoh langsung, cek ini.
DRY, akronim dari “Don’t Repeat Yourself”. Intinya sebisa mungkin jangan nulis dua kode dengan fungsi yang sama.
KISS, alias “Keep It Simple, Stupid!”. Aku memahaminya sebagai: “Tulis kode yang bisa dipahami tanpa mikir”. Mungkin begitu.
YAGNI, akronim dari “You Aren’t Gonna Need It”. Tahan diri dari godaan buat nulis kode yang fungsinya belum dibutuhkan saat ini agar kodenya gak terlalu kompleks dan sulit di-maintain.
Bagian selanjutnya dari bab ini adalah tentang menentukan struktur SceneTree, atau hirarki node dalam game. Sebaiknya saya tuliskan berurutan:
Buat sebuah node “Main” dengan script (misalnya main.gd). Ini akan menjadi “entry point” atau titik awal saat kita mau mulai menelusuri logika game. Node utama ini akan menjadi parent dari node lainnya seperti “World” dan “GUI”.
Pergantian level atau layar dapat dilakukan dengan mengganti objek scene di bawah “World”. Dibanding bikin scene utama dan pindah-pindah ke scene lain saat ganti level, kita bisa punya kontrol lebih, seperti yang pernah saya lakukan di sini.
Tentukan apakah suatu script atau scene menggunakan Autoload atau node biasa. Perhatikan bagaimana data di simpan dan dengan scene lain.
Pastikan masing-masing subsistem punya tempat khusus di hirarki. Dengan kata lain, kelompokkan dengan rapih.
Sebaiknya, hubungan parent-child ditentukan bukan karena relasi posisi (misal, child ngikutin posisi parent), tapi hubungan dependensi. Dengan kata lain, jadikan suatu node child atau parent hanya jika ia tidak akan berfungsi kecuali seperti itu. Ini dimaksudkan agar jika node diubah, parent atau childnya ga terpengaruh.
Player sebaiknya juga tidak menjadi child dari suatu level. Tempatkan di posisi lain dalam hirarki.
Jika posisi suatu node tergantung node lain, pakai RemoteTransform saja.
Meski sudah ditulis pun, sejujurnya saya kurang paham konsep-konsep di atas. Semuanya teori abstrak yang masih ambigu. Seperti ada rasa gatal untuk mempraktikkan atau memvisualisasikannya sebelum bisa paham.
Atau seperti tiba-tiba bahasa Inggrisku jadi payah dan kalimat-kalimat penjelasannya jadi sulit dipahami. Mungkin memang perlu mengenal dulu praktik-praktiknya baru bisa memahami “praktik terbaik”.
Jadi, sebaiknya memang saya mulai bikin proyek buat praktik teori-teori ini dulu. Mungkin satu bab lagi deh.
Paska mengerjakan proyek di pelatihan Game Development Professional Program, saya menyadari bahwa untuk memahami teori-teori pemrograman yang baik memerlukan praktek dan pengalaman. Selain itu, saat membaca kriteria rekrutmen dalam iklan lowongan kerja, saya merasa bisa ngoding saja tidak cukup; harus paham tata cara pemrograman yang baik dan benar. Karenanya, saya terpikir, mungkin saya perlu belajar ‘best practices’. Dan karena aku masih ingin ngulik Godot, saya belajar dari sini.
Saya masih percaya kalau ‘praktik terbaik’ itu bukan segalanya. Ada yang bilang, kode pemrograman dengan praktik terbaik adalah: yang jalan. Namun, saya yakin bahwa menguasai ‘praktik terbaik’ bisa menjadi nilai tambah yang membuat kita dipandang lebih mampu bekerja dalam tim dan dalam proyek besar. Kebanyakan ‘praktik terbaik’ dibuat agar enak buat temen kerja. Meskipun solo, tata cara membuat kode yang baik, khususnya yang membuat kode bisa dipahami dan mudah dikembangkan sendiri adalah bentuk self-love yang sebaiknya dilakukan programmer.
Maka untuk beberapa hari ke depan, saya coba meringkas (sepahamnya) dan mempraktikkan satu per satu bab-bab dari manual ‘best practices’ Godot tersebut.
Itu saja yang benar-benar kupahami dari bagian itu. Namun, ini mengubah mindset saya yang menganggap scene di Godot itu ibarat scene dan prefab di Unity. Mungkin di class diagram, tiap blok class bisa dianggap scene. Setiap objek di hirarki dalam scene bisa dianggap sub-class yang diperlukan oleh method atau property dari class. Mindset ini perlu diuji.
Hal lain yang perlu diingat:
Node adalah instance dari tipe node (Node2D, Control, Button, dll.) yang juga merupakan class
Tiap membuat script dalam node, maka ia menjadi ekstensi (atau child?) dari class tipe node tersebut
Saya baru baca bagian pertama yang menjelaskan tentang bagaimana hubungan antar node dilakukan. Pada dasarnya, mengulang tentang hal yang selalu saya ingat di Godot: Dari parent ke child pakai method, dari child ke parent pakai signal. Namun, selain itu ada beberapa cara spesifik yang menarik untuk diuji.
Sesuai dengan prinsip ‘loose coupling’, tiap class sebaiknya bisa digunakan tanpa dependensi. Bahkan, manual ini menyarankan agar tiap scene memuat data dan node yang diperlukan tanpa bergantung pada scene lain. Ini dilakukan agar programmer tidak perlu terlalu banyak bikin dokumentasi biar tidak lupa hubungan antar scene atau node. Agar tidak susah-susah seperti itu, disarankan juga pakai tool script seperti _get_configuration_warnings() yang dapat memberi tanda peringatan di samping node pada hirarki jika scene tidak merujuk pada node tipe tertentu.
Dan di sini saya mulai keluar jalur.
Karena tool script ini gak jalan, saya jadi cari-cari di dokumentasi dan juga googling. Susah dapat artikel yang membahas ini. Sampai akhirnya nemu video dari while(free) yang merupakan video kedua dari seri “Godot 4 Editor Scripting Series“. Playlist tersebut intinya membahas penggunaan @tool untuk memanipulasi inspector objek di editor Godot. Aku jadi tertarik meski tidak terlalu penting untuk saat ini.
Video kedua menjawab pertanyaan saya, namun tidak mungkin dipahami tanpa menonton video pertama. Video ketiga menunjukkan cara membuat dropdown menu seperti isian enum tapi menggunakan item-item dari array yang diinput dari inspector juga. Namun, pilihan dropdown menu itu hanya diperbaharui jika kita men-deselect node dan memilihnya lagi. Video keempat hasilnya kira-kira sama dengan video ketiga, tapi caranya lebih ribet tapi mungkin lebih terstruktur.
Belum kepikiran kapan aku akan mengimplementasikan teknik manipulasi editor ini, tapi mungkin saat diperlukan aku akan ingat video-video ini.
Kembali ke jalur.
Sebaiknya saya coba dulu mempraktikkan teori-teori di atas sebelum lanjut ke bagian berikutnya. Namun, aku sebaiknya juga menyelesaikan membaca Bab 2 ini.
Secara nekat dan tidak terencana masak-masak, aku daftar Game Seed 2025 dan ikutan Game Jam-nya yang dimulai dari 25 Juli sampai 4 Agustus. Aku daftar sebagai solo developer, karena tahu kemampuanku yang belum bisa nge-carry orang lain malah bakal jadi beban.
Ga ada niat menang. Meski kadang ngayal bisa beruntung lolos ke tahap selanjutnya. Niatku hanya agar ada dorongan buat belajar: Deadline yang jelas dan sedikit arahan dari batasan tema. Aku juga bikin batasan sendiri dengan menetapkan kalau aku harus pakai 3D karena pingin belajar itu.
Tantangan pertama muncul dari bikin ide dari tema yang ditetapkan. Ada 3 tema: 1) Remake gameplay game lama, 2) Gabungin 2 genre, 3) Bikin game terinspirasi dari kehidupan. Aku cuma kepikiran tema yang pertama dengan coba bikin game beat-em-up ala Street of Rage (alias Bare Knuckle) tapi dibikin 3D. Sudah kebayang sih ini bakal susah, tapi daripada mikir terus ga mula-mulai, jadi aku hajar saja. Tentu, setelah jalan, ini lebih-lebih-lebih susah daripada yang dibayangkan.
Setidaknya ada arahan, sih. Di akhir menjelang deadline, aku mulai kepikiran konsep yang bisa dieksekusi berdasarkan aset yang tersedia, kemampuan, dan batas waktu. Seenggaknya, bisa bikin sesuatu yang bisa dimainin dan ada kondisi selesainya. Akhirnya jadilah Baaaaare Knuckle, game 3D beat-em-up dan pemain menghajar penghalang berupa balok-balok baja hingga mencapai bos terakhir: Pocong Hitler.
Melihat game-game yang dibikin orang lain di game jam ini, membuatku makin pasrah. Bukan soal memenangkan game jam-nya, tapi juga soal menjadi game developer. Aku ngerasa ga punya keunikan atau kemampuan yang bisa membuatku menonjol di antara ratusan game developer yang muncul tiap tahunnya. Tapi, eh, bodo amat lah.
Gamenya, kalau bisa dibilang game, bisa dimainkan di Itch.io dan dijalankan di web, karena lupa upload file .pck yang harusnya di-zip bareng file .exe nya dan ga bisa edit lagi lewat deadline. Eh, sudahlah.
Pelajaran:
Yup, ikut game jam, apalagi yang online, ga perlu jago. Kalau persyaratannya ga terlalu strict, bisa jadi motivasi belajar. Kasian jurinya sih jadi kudu ngekurasi kiriman ‘sampah’, tapi di sisi aku pribadi, yang penting memanfaatkan motivasi yang muncul karena ikut game jam untuk berusaha sebaik mungkin.
Mikir sendirian itu susah. Lol. Ngonsep di awal itu penting buat acuan atau arahan pas bikin game. Namun, terlebih kalau solo, biarkan konsep itu berkembang dengan sendirinya sesuai dengan kondisi dan batasan yang ada.
Laman game kita di Itch.io bisa dihias. Baru tahu. Bahkan untuk nampilin screenshot perlu setting sendiri.
Cek proyek-proyek lain yang sudah kamu kerjain buat nyari ide dan bantuan! Kemarin aku agak panik dan terlalu fokus buat belajar 3D sehingga males buat ngecek. Apalagi ngecek kodingan yang di Godot jadi perlu buka 2 project bersamaan buat liat konteksnya. Agak berat, tapi setelah lihat proyek 1 Day 1 Tutorial yang aku kerjain di bulan Maret, kedepannya harus aku lakukan.
Meski jadinya ngasal, aku tetap coba share. Sudah susah-susah kok disimpan sendiri UwU.
Habis ngikutin workshop bikin efek cel-shading di Unreal, aku masih kesulitan memahami cara kerjanya dan menjelaskan hasilnya. Jadi, aku mau cerita soal Unreal-nya saja. Ini bukan pertama kali aku mencoba Unreal, tapi ini pertama kalinya ikut workshop Unreal dan niat buat beresin tugasnya. Workshop kalau berbayar memang jadi lebih niat diikutin.
Fitur di Unreal ini sangat buanyak dan tersebar dalam UI yang sulit diikuti kalau baru mulai. Ibaratnya masuk ke belantara yang dipenuhi keanekaragaman hayati. Memang banyak manfaat, tapi bisa bikin kita bingung dan tersesat. Satu-satunya hal yang menghentikan kebingungan saat lihat UI-nya adalah saat engine-nya crash dan force closed. Yup, sangat berat dan banyak makan kapasitas memori serta CPU.
Namun, dengan panduan yang baik dan tujuan yang jelas, kita bisa menjelajahi belantara ini. Ibaratnya, kita harus datang dengan tujuan. Misalnya cari jamur. Maka, tinggal ikuti instruksi, kita bisa menemukan jamur tanpa perlu peduli soal hewan atau tanaman lain di sekitar. Kalau kamu ingin melakukan manipulasi material objek agar menjadi stylized dengan efek cel-shading, misalnya, maka tinggal cari panduannya di internet (atau lewat bantuan temen), ikuti instruksinya, maka kamu bisa lebih mudah bernavigasi di belantara UI dan fitur hingga mencapai hasil yang diinginkan.
Hal lain yang ingin kukomentari adalah blueprints, yang dibilang no-code programming language. Pada workshop ini, aku diajari menggunakan blueprints untuk mengubah tekstur pada objek 3D. Aku kurang paham sebenarnya bagaimana blueprints ini bisa mengubah tekstur material. Ini tidak dijelaskan oleh pemateri (atau dijelasin saat aku tidak fokus), tapi yang kupahami, ini mirip seperti pemrograman shader pakai OpenGL yang dulu kucoba di Godot. Kalau di shader, ada bagian code yang mengubah warna pixel dan posisinya. Di blueprints ini aku belum paham bagian mana yang kira-kira mirip seperti itu.
Blueprints memang memudahkan dalam hal menghindari eror karena typo dan memperjelas penggambaran proses alur algoritma (kalau dibikin rapih). Namun, ga bisa salin-tempel kode, jadi sepertinya kurang fleksibel.
Aku cukup puas dengan hasil workshop yang kulakukan, meski rasanya bisa di-tweak lebih bagus. Efek cel-shading yang kuhasilkan sudah punya rim light dan outline yang berubah sesuai sudut pandang kamera dan arah sumber cahaya. Namun, mengubah warna tekstur menjadi flat dengan beberapa level shade yang berbeda masih kurang dan sepertinya perlu ngulik teksturnya. Sepertinya dalam bikin style visual apapun, aset tekstur, material, dan mesh perlu diulik dan disesuaikan.
Pakai cel-shading materialTanpa cel-shading material
Secara umum, aku merasa kalau bikin game pake Unreal tidak bisa sendirian. Engine ini seperti dibuat untuk tim yang mengerjakan bagian-bagian berbeda dari visual, game design, dan logic dalam satu engine yang sama. Aku masih berharap sempat belajar Unreal buat melanjutkan karir. Meskipun begitu, saat ini sepertinya masih Godot dulu.
Akhirnya kesampean juga nonton film Malaysia di bioskop (Bront Paralae yang main di Dendam Malam Kelam aktor Malaysia sih, tapi ga diitung film Malaysia) dan yang ditonton adalah film terlaris kedua sepanjang sejarah perfilman Malaysia. Prestasi yang sangat pantas.
Bercerita tentang dua sahabat dalam perebutan kekuasaan di suatu keluarga gangster yang mengepalai sindikat “9 Naga”, film ini kualitasnya sudah setara dengan film-film aksi Hongkong yang bertema triad atau mafia. Bedanya di sini ada bumbu budaya Melayu. Koreografi pertarungan, maupun tembak-tembakannya yang seru berpadu dengan adegan drama dan komedi secara rapi dalam ceritanya yang sederhana. Plotnya cukup tipikal, tapi eksekusinya menjadikan film ini terasa fresh.
Memang banyak adegan klasik film aksi, seperti mobil yang meledak saat ditembaki, yang sebenarnya tidak mungkin terjadi. Tapi, persetan fisika. Yang penting rame! Lol.
Kalau mau dibandingin sama The Raid (rasanya tidak perlu), mungkin agak beda. The Raid lebih ke film aksi bela diri, seperti film-film Jet Li. Bara Naga lebih ke film aksi gangster, seperti film-film Chow Yun Fat.
Sepertinya film-film terlaris di Malaysia saat ini kebanyakan film aksi. Bisa jadi Malaysia akan mengambil alih Hongkong sebagai pusat produksi film-film aksi di Asia, atau setidaknya Asia Tenggara. Tapi entah ya. Film aksi Indonesia sendiri rasanya belakangan kurang booming. Masih kalah gaung sama horor.
Hal menarik lainnya dari film ini adalah penggambaran polisi yang… gak korup dan bertindak sesuai hukum, tapi nyebelin! Bos gangster lagi berkabung karena anaknya dibunuh. Kapten polisi dateng-dateng langsung nyinyir! Tetep aja saat lagi ngawal diserang gangster langsung mundur. Lol.
Ini menarik karena aku sekilas melihat logo pemerintahan Malaysia di awal film jadi kupikir film ini didanai atau setidaknya ada dukungan pemerintah dalam bentuk apapun. Kalau itu benar, lucu juga pemerintah Malaysia mengizinkan penggambaran polisi seperti itu. Kalau nanti di Indonesia Polri beneran bakal dilibatkan buat nyensor film-film lokal, aku ingin polisinya boleh ditampilkan cupu dan nyebelin juga, kalo ga boleh ditampilin korup.
Thriller lokal dengan plot twist yang bisa kutebak tapi salah mulu. LOL. Maksudnya, sepanjang film aku tahu bakal ada plot twist dan kupikir bisa menebak akan seperti apa plot-twistnya. Tetap tidak terduga. Padahal “pistol chekov”-nya sudah ditunjukkan dari awal. Cuman karena adegan-adegan lain sepanjang film, adegan yang menunjukkan “pistol chekov” itu jadi dilupakan. Inti dari plot twist drama “mayat hilang di malam kelam dan seorang detektif menginterogasi tersangka pembunuh/suaminya yang kena teror” ini adalah: siapa yang dendam?
Film yang seru buatku. Kalau saja akting pemeran pendukungnya ga terlalu kaku dan tata suaranya ga terlalu berisik.
Btw di film ini seragam polisinya sengaja dibuat beda dengan Polri beneran ya?
Untuk film pertama tahun ini, aku random aja datang tanpa rencana mau nonton film apa. Yang jelas, rasanya ‘haus kekerasan’; pingin nonton film aksi. Liat poster film ini di bioskop kayaknya meyakinkan. Kayak pernah dengar judulnya tapi ga tahu reviewnya.
Ini adalah film aksi Hongkong campur drama ruang sidang, meski di akhir lebih banyakan aksinya. Cukup memuaskan dahaga dengan aksi kungfu ala Donnie Yen yang berperan sebagai pensiunan polisi lanjut kuliah lagi buat jadi jaksa. Agak propaganda polisi dan sistem peradilan Hongkong, tapi menunjukkan juga sisi korupnya dikit.
Porsi aksi dan dramanya lumyan, meski ada adegan yang agak aneh seperti saat Donnie Yen masuk ruang sidang dengan muka bengep di penghujung film. Yah, tapi yang lebih konyol lagi sih, wig era Victorian yang masih wajib dipake hakim dan pengacara di ruang sidang di Hongkong. With all due respect sama tradisi ruang sidang di sana, tapi kalau perlu pakai tutup kepala, kenapa ga pakai topi tradisional ala Judge Bao?
1 Kakak 7 Ponakan
Remake dari sinetron 90’an yang diadaptasi dari novel (atau cerbung?) karya Remy Silado. Jujur dari sinetron itu yang aku ingat cuma Sandi Nayoan dan Novia Kolopaking, dua pemeran utamanya, beberapa adegan, serta lagu temanya. Bahkan, aku ga ingat 1 kakak dan 7 ponakan itu siapa aja.
Ceritanya, Moko, seorang calon arsitek harus menunda karirnya saat tiba-tiba kakak dan iparnya meninggal dalam waktu berdekatan. Pasalnya, Moko harus mengurus 2 ponakan, 1 ponakan almarhum kakaknya, dan tambah 1 lagi yang baru lahir. Oke, itu udah 4 ponakan. Lalu mantan gurunya datang dan memohon untuk menitip putrinya. Jadi 5. Lalu, kakak moko yang satu lagi, Osa (yang dulu diperankan Novia Kolopaking) dan iparnya, Eka, pulang dari Australia dan tinggal bersama mereka. Saat Maurin, pacar Moko, nyeletuk 7 ponakan itu termasuk kakak dan iparnya itu, penonton langsung ‘oooohh gitu’.
Moko yang harus berjuang dalam keluarga yang serba kekurangan, mengurus ponakan yang macem-macem, dan mencoba lagi meniti karir sebagai arsitek, merasa bertanggungjawab untuk menanggung beban itu sendirian. Bahkan dia sempat putus dengan pacarnya karena merasa masa depannya suram, sampai mereka dipertemukan lagi di tempat kerja baru Moko. Ponakan-ponakannya juga melihat Moko berkorban sendiri. Maka saat mereka didorong (atau dimanipulasi) oleh Eka untuk mencari kerja, meski kebanyakan mereka masih di bawah umur, mereka menurut saja karena merasa bersalah dan ingin membantu Moko.
Kunci film ini adalah saat Ais, anak titipan gurunya Moko yang suka main piano, bercerita pada Moko bahwa ia main piano untuk mengenang masa saat ia dan ayahnya masih bersama. Saat balik ditanya pakah Moko juga punya hal yang dilakukan untuk mengenang seseorang, kita diperlihatkan bahwa hal itu… ya semuanya; Alasan Moko mengurus ponakannya (dan mungkin juga menjadi arsitek, karena almarhum iparnya adalah arsitek juga) adalah untuk mengenang kakak dan iparnya. Di akhir, ia harus membagi perasaan itu dengan ponakan-ponakannya dan tidak menjadikannya beban sendiri.
Kecuali Eka.
Si brengsek.
Bagiku yang belum nonton remake Keluarga Cemara, semua karakter yang diperankan Ringgo itu ada aja brengsek-brengseknya. Film ini adalah standar atas kebrengsekan Ringgo.
Aku bersyukur ini film lokal pertama yang kutonton tahun ini. Pokoknya bagus. Tanya aja David Gadgetin.
Ah, terakhir, sebelumnya aku khawatir theme song yang lama ga dimasukin ke film ini. Soalnya, lagunya jadul dan kupikir ga akan bagus mau diremake kayak gimana juga. Ternyata lagunya ada. Meski ga jadi tema utama yang diulang-ulang. Lagu itu dimainkan oleh Ais pakai piano dan dinyanyikan bareng ‘adik-kakak’-nya sebagai adegan yang menyenangkan di tengah-tengah hidup mereka yang serba susah. Tentang bagaimana keluarga yang susah ini masih nyimpen piano, aku ga mau pikirin.
Perayaan Mati Rasa
Protagonisnya kurang bikin simpatik. Memang sih bapaknya jarang ada karena melaut, tapi bapaknya ini mencoba dekat sama anak-anaknya, meski kadang banyak nuntut sedikit ngajar. Si protagonis yang namanya aku lupa lagi ini kayak yang ngambek dengan ketidakhadiran bapaknya tapi malah menolak bapaknya pas lagi ada.
Ceritanya lumayan menarik sih. Pas bapaknya ini hilang di laut, si protagonis dan adeknya berusaha menyembunyikan ini dari ibu mereka yang lagi sakit jantung. Karena peristiwa perahu bapaknya yang hilang ini tersiar di berita-berita, mereka sampai motongin kabel-kabel TV di pasar kaen pas ibunya belanja. Lol.
Yang paling berkesan buatku di film ini malah Dinda anak tetangga yang lebih siaga jaga sang Ibu daripada dua anak cowoknya yang labil.
Flow
Animasi kucing nyelametin diri dari banjir ini pemenang Oscar kategori animasi. Ga ada dialog. Hanya animasi dengan gerakan yang semi realistik, tapi visual yang stylized. Sangat stylized, hingga setiap helai daun kayak yang digambar tangan satu-persatu.
Ceritanya sebenarnya kurang jelas, sih. Yang bisa kupahami, ceritanya si kucing yang kebanjiran dapet mimpi buat pergi ke tempat tertinggi. Berlayarlah ia pakai perahu. Di perjalanan, dia bertemu hewan-hewan lain yang ikut numpang dengan kelakuan yang beda-beda. Ada banyak adegan magis di film ini yang tidak terlalu jelas namun berperan dalam cerita.
Rasanya film ini memang lebih ke vibe saja daripada cerita, meski cukup jelas bahwa ini adalah soal pembelajaran agar si kucing yang biasa hidup sendiri bisa belajar hidup bersama hewan lain.
Oh, film ini produksi Latvia kalau ga salah, ko-produksi dengan Perancis dan Belgia. Hebat juga sih ada studio yang bisa ngalahin studio-studio Hollywood di Academy Awards. Well…. Selain Ghibli.
I’m Still Here
Film Brazil tentang keluarga yang bapaknya dihilangin sama militer. Film ini menang Oscar kategori film bahasa asing.
Menurutku, film-film seperti ini bisa jadi jembatan yang menghubungkan perasaan senasib buat negara-negara dengan masalah yang sama: militerisme diktatorial. Pengalaman luka satu keluarga yang akan terwariskan karena tidak ada kejelasan tentang anggota keluarganya yang dihilangkan, atau dieksekusi secara tidak adil, oleh pemerintah adalah universal. Bahkan bagi masyarakat di negara-negara ‘demokrasi’ sekalipun.
Dalam film ini, akta kematian bapaknya keluar setelah istrinya berpuluh tahun berjuang. Pelakunya? Jelas tak tersentuh. Ah, cerita klasik.
Hanya saja… karena keluarganya ini tergolong keluarga menengah atas yang berprivilege, aku kurang bisa bersimpati dibanding seperti saat nonton film Istirahatlah Kata-Kata atau Autobiografi.
Tapi, yah, dibrengsekin negara sakitnya sama saja kalau dah menyangkut nyawa. Berapapun duit yang kita punya.
Ne Zha 2
Ne Zha yang pertama kalau ga salah banyak yang ngomongin. Ne Zha 2 ini lebih banyak lagi yang ngomongin. Jadi, aku ajak Rais buat nonton ini di Garut.
Dan benar kata orang-orang. Animasi dan ceritanya epic. Yah, meski untuk segi cerita banyak pengadeganan yang kurang pas. Kalau dari segi animasi, mantap banget. Kayaknya aku sudah bisa melihat gaya animasi China yang detail sekaligus stylized terdefinisikan dalam film ini.
Gilanya, animasi yang epic itu ga turun-turun kualitasnya sepanjang film. Seperti ga pake konsep ‘sakuga’ (ngebagusin animasi di beberapa adegan penting saja). Dan gitu terus selama 2 jam! Hollywood could never…
Mungkin aku agak rasis kalau ngomong gini, tapi kayaknya cuma negara dengan 1,5 miliar penduduk yang bisa mengimajinasikan pertempuran dua pasukan orang dan siluman berterbangan di langit bagaikan dua gumpalan partikel-partikel yang bertumbukan dan berhamburan.
Men… China udah jauh banget.
Btw, kalau ga salah, film ini jadi film terlaris sepanjang masa di China. Dan kalau ga salah, Nez Zha dan sahabat/rivalnya, Ao Bing, jadi semacam gay icon di sana.
Mobile Suit Gundam GQuuuuuuX
Mungkin bukan titik awal yang tepat buat mengenal Gundam. Film ini diawali dengan adegan yang sepertinya berasal dari potongan film/seri Gundam terdahulu. Belakangan aku baru tahu itu adalah semacam alternate timeline dari cerita aslinya. Berarti, mereka meremake beberapa adegan dengan visual dan musik gaya 80’an dan hasilnya oke juga.
Itu makan setengah durasi filmnya. Setengahnya lagi, adegan beberapa tahun setelahnya dengan visual dan musik gaya anime masa kini. Musiknya diisi oleh VTuber… Suisei kalau ga salah? Dan sebenarnya itu yang bikin Rais ngajak aku nonton ini. Kami berdua belum pernah nontoon Gundam sama sekali. Well… aku pernah lihat Witch from Mercury sih, sekilas.
Film ini sebenarnya episode pertama dari serial yang bakal dirilis beberapa minggu setelah filmnya. Jadi ini adalah semacam prolog, tapi setengah film ini habis oleh prolog dari prolog-nya ini.
Intinya sih, ini tuh tentang Gundam GQUUUUUUUUUX yang dibikin buat mencari Gundam Red (kalau ga salah itu namanya) milik Char-Aznabel (meski bukan fans Gundam, aku sering dengar nama itu). Dan gak tahu kenapa tapi aku ngerasa ada semacam ‘gay tension’ di antara kedua robot ini.
Jumbo
Berdasarkan pengalaman nonton Battle of Surabaya dan Si Juki The Movie yang pertama, kunci menikmati animasi lokal adalah ekspektasi. Aku berekspektasi tinggi saat BoS. Hasilnya kecewa berat. Aku gak punya ekspektasi apa-apa waktu nonton Si Juki. Hasilnya, film ini lebih berkesan daripada Star Wars yang aku tonton dalam waktu berdekatan.
Jadi, aku agak hati-hati dalam berekspektasi soal film ini. Memang aku sudah nunggu film ini sejak lama. Aku ngikutin update film ini dari Twitter sutradaranya, Ryan Adriandhy, dan secara teknis kelihatannya menjanjikan. Secara cerita, aku gak yakin. Memang film animasi ini katanya ingin jadi film animasi anak yang bisa dinikmati orang dewasa juga. Tapi, aku gak yakin.
Dan yah, hasilnya begitulah. Ada momen-momen menarik di filmnya, ada pacing yang kurang pas dan alur adegan yang kayaknya putus. Visualnya kadang terasa detail, tapi kadang gambar yang detail ada pada style yang tidak proporsional. Entah gimana jelasinnya. Kadang muka orang sampai keliatan pori-pori, kadang terasa flat dan low render. Aku kurang suka musiknya. Kurang pas dinyanyikan sama karakter-karakter anak di dalamnya. Tapi, aku bisa paham kalau lagu ini bisa populer.
Soal elemen magis yang kurang dijelaskan, kambing yang terlalu warna-warni, color grading yang kecoklatan, dan… yah, kayaknya kalau nitpicking kekurangan-kekurangannya, ga abis-abis. Salah sih nonton ini abis nonton Ne Zha. Lol.
Namun, tantang bagaimana anak-anak menghadapi kesedihan dan kehilangan, dan adegan SAP! SAP! SAP! juga… Panitia Datar? Aubrey Plaza/Daria-coded character di film animasi bocah? Film ini melebihi ekspektasi di satu sisi dan di bawah ekspektasi di sisi lain. Jadi yah, sesuai ekspektasi lah. Lol. Aku ga keberatan film ini jadi salah satu film lokal terlaris sepanjang masa, dan mungkin terlaris tahun ini.
Ya, film ini baru saja tembus rekor terlaris sepanjang masa.
Saat aku nonton di Chiwalk, antrean masuknya panjang banget (entah kenapa pintu dibukanya lama banget). Lalu ada 2 orang dewasa yang nyelak antrean buat masuk. 2 Om-om. Nyelak antrian. Buat nonton film anak. Adult animation fans are the worst. Lol.
Ah, tapi yang penting, penonton memberikan aplaus saat film berakhir. Ponakanku Kira nonton di waktu yang lain, dan katanya habis nonton orang-orang pada tepuk tangan juga.
Film animasi ini cukup pantas menjadi baseline untuk industri animasi lokal. Lucu juga. Di Indonesia dan China, film terlaris tahun ini adalah film animasi.
Pengepungan di Bukit Duri
Agak kecewa karena berharap lebih epic. Trailernya seperti menunjukkan kalau film ini bakal menampilkan banyak adegan pengepungan oleh massa yang rusuh ke sebuah sekolah. Ternyata yang mengepung cuma berandal-berandal SMA yang teradikalisasi oleh rumah tangga yang rusak dan masyarakat yang menormalisasi rasisme.
Well… sebenarnya gak teradikalisasipun anak-anak SMA itu berbahaya banget. Energi mereka di puncak, tapi otak mereka masih mangkrak.
Jokowi- eh, Joko Anwar bohong saat bilang ga bikin film horor. Film ini horor. Hantunya adalah remaja-remaja labil.
Namun, dia ga bohong waktu diwawancara dan bilang kalau film ini buat ngertiin plotnya ga perlu mikir. Ini memang lebih mudah dicerna dibanding film-film Joko Anwar yang pernah kutonton.
Secara umum masih bagus sih. Hanya saja, tema rasisme yang sepertinya tadinya mau dijadikan bahan pembicaraan, sepertinya jadi gimmick yang terpinggirkan. Dan, mengingat isu yang populer belakangan, aspek yang mencuat jadinya soal kenakalan remaja. Perlu nulis lebih panjang soal itu.
Intinya, sebagai film yang ingin membicarakan soal rasisme, film ini kurang berhasil. Memang sih, kita perlu membicarakan bagaimana rasisme ini mempengaruhi generasi muda kita. Namun, kayaknya kalau untuk menangkal rasisme, menampilkan bahwa orang keturunan Tionghoa sama-sama berjuang dan susah seperti orang ‘pribumi’ seperti di film Cek Toko Sebelah, itu lebih efektif. Setidaknya, bagiku yang sebenarnya agak rasis juga.
Dan kenapa kalau soal rasisme yang selalu dibahas adalah antara ‘pribumi’ dan keturunan Tionghoa? Memang sih, biasanya agamanya berbeda, gaya hidupnya berbeda, dan ada peristiwa traumatis yang menjadi talking point terkait rasisme terhadap mereka (Kerusuhan 98). Masyarakat kita sebenarnya rasis (atau mungkin lebih tepatnya xenofobik?) terhadap orang yang berbeda suku dan atau agama, apapun suku dan agamanya. Aku gak tahu peristiwa apa yang bisa diangkat untuk membahas itu, tapi kalau kita masih mau ‘memancing diskusi’ seperti Joko Anwar di film ini, semoga ada filmmaker yang berani mengangkat konflik laten antar suku dan antar agama di masyarakat kita yang masih terjadi.
Untuk yang terakhir ini tadinya mau curang dengan pilih tutorial super singkat; cuma ngilangin splash screen. Lagian lagi sibuk lebaran.
Tapi rasanya terlalu singkat dan ternyata ga ngilangin splash screen/pre-loader Godot Engine saat export HTML. Jadinya ngikutin tutorial splash screen manager ini.
Kelihatannya akan berguna kalau kita perlu nampilin banyak splash screen statis yang bisa di-skip pakai input keyboard (dan aku tambahin input mouse juga). Seenggaknya, tutorial ini nunjukin beberapa node yang jarang aku pakai dan fungsi-fungsi tween yang belum aku tahu.
Sedikit tambahan, fungsi _unhandled_input(event) hanya bisa deteksi input keyboard. Entah memang begitu perilakunya atau ada yang perlu di-setting. Kalau diganti jadi _input(event) kita bisa deteksi input tombol mouse.
Aku juga baru nyadar kalau gambarnya agak jagged atau pecah. Entah kenapa. Mungkin karena resize. Kemaren-kemaren rasanya dapat masalah yang sama, tapi rasanya masalahnya beda (dan lupa solusinya). Tapi, sudahlah.
Oke, ini hari terakhir. Lalu apa? Bikin proyek harian dalam kurun waktu seperti ini buatku sudah tidak asing, dan sejauh ini aku selalu berhasil melakukannya. Kurang lebih. Rasanya aku sudah meyakinkan diri bahwa aku bisa konsisten melakukan sesuatu yang rutin dalam jangka waktu tertentu. Mungkin kalau lebih lama lagi lain cerita.
Namun, tantangan yang jarang aku berhasil taklukkan adalah: konsisten menyelesaikan 1 proyek mengikuti timeline. Mungkin kedepannya itu yang harus aku lakukan. Seperti membuat target menyelesaikan game dalam 1 minggu atau 1 bulan dengan GDD dan sebagainya. Ya, sepertinya itu yang akan aku coba.
Akhir kata, taqbbalallahu minnaa wa minkum shiyaamanaa wa shiyaamakum. Semoga shaum kita sebulan terakhir ini diterima. Semoga tutorial-tutorial yang sudah dikerjakan ini tetap diterima di kepala (halah).
Tiba-tiba muncul tutorial buat plugin yang bisa bikin objek physics yang bouncy kayak jelly. Kalau ga salah ini bikinan developer game yang pake mekanik softbody gitu dan ngebagiin hasil kerjaannya sebagai plugin. Menarik sih. Seenggaknya ini bisa jadi tutorial pake plugin yang seharusnya bakal sering dilakukan dalam development game.
Hmm… agak sulit dibikin bagus. Yang pertama harus diperhatikan adalah tutorial ini ternyata agak jadul. Plugin SoftBody2D bisa didownload dari AssetLib di editor Godot dan sekarang sudah versi 1.7. Yang di tutorial masih versi 1.4. Jadi apa yang ditunjukin di tutorial kadang ga ngefek atau sesuai di prakteknya.
Beberapa hal yang saya temukan:
Texture hanya bisa pakai ImageTexture. Ga bisa pake Atlas. Btw exclude texture untuk bikin objek bolong memerlukan ImageTexture yang ukurannya sama dengan texture utama, tapi hanya menampilkan bagian yang dilubanginya saja. Usahakan ukuran sprite sudah sesuai dengan ukuran objek yang akan dipakai (jangan resize/rescale).
SoftBody ini pada dasarnya satu objek dipecah jadi beberapa segmen Rigidbody yang dihubungkan pakai berbagai joint (cek tutorial hari 13). Jadi seberapa bouncy objeknya dan seberapa bagus objeknya kalau bisa rusak/patah, tergantung dari jumlah segmen-segmen tersebut. Ini diatur di properti Vertex Interval di inspector node SoftBody; semakin besar nilainya, semakin sedikit jumlah segmennya, dan akan terlihat semakin padat. Perlu perhatikan juga ukuran objeknya. Btw sepertinya plugin ini lebih optimal pada objek berukuran kecil.
Fitur Pickable Rigidbody agak glitchy. Kalau mau pake, coba banyakin segmennya.
Tidak seperti yang disebut tutorial, Breakable Object tidak pakai material, tapi dengan ubah properti SoftBody2D > Joint > Break Distance Ratio. Atur-atur biar terlihat bagus.
Ngubah nama node bikin error. Seperti segmennya kehilangan reference ke parent node. Setiap ubah nama, coba ubah nilai Vertex Interval.
Untuk bikin platform polygon seperti di tutorial, bikin StaticBody2D, lalu kasih child CollisionPolygon2D dan kasih child Polygon 2D. Gambar platformnya di Polygon2D. Kalau sudah, cek inspector di node Polygon2D > Data > Polygon. Klik kanan di nama properti tersebut dan pilih ‘copy value’. Pilih node CollisionPolygon2D, di inspektor bagian Polygon, klik kanan, dan pilih paste value. Harusnya collision yang bentuknya sama .
Selebihnya sih, mending ikutin tutorial di sini: Getting Started | SoftBody2D .. yang baru aku temukan pas lagi ngetik ini.
Yah, ini kasus salah pilih tutorial tapi nanggung udah ngerjain.