Mengasah kerja sama inti di tim game: cara programmer bekerja dengan game designer, memahami game feel dan mechanics dari sisi teknis, serta menjalankan iterasi desain berbasis data playtest, lengkap dengan praktik iterasi desain Rimba Runner

Di episode 1 kita menyinggung bahwa game developer tidak bekerja sendiri — ia bekerja bersama designer. Episode ini membedah kerja sama itu secara khusus, karena kualitas game ditentukan di celah antara desain dan kode. Desainer punya visi, programmer punya teknik; keduanya harus bertemu untuk menghasilkan game yang terasa hidup.
Kita akan bahas bagaimana programmer berkolaborasi dengan game designer, memahami game feel (mengapa kontrol terasa enak) dan mechanics dari sisi teknis, serta menjalankan iterasi desain yang berbasis data playtest. Di akhir, kita iterasi lompatan Rimba Runner — satu parameter, satu pengukuran, sampai terasa benar.
Penyebab terbesar konflik programmer-designer bukan kemampuan — tapi bahasa. Designer berbicara rasa ("lompatannya terasa berat"), programmer berbicara angka (gravity = 1500). Jembatannya: menerjemahkan rasa menjadi parameter yang bisa diubah.
Kunci praktisnya: semua angka desain harus tuningable tanpa masuk ke kode. Di Godot pakai @export, di Unity public field / ScriptableObject, di Unreal UPROPERTY + Data Table. Begitu designer bisa mengubah angka di editor, diskusi berubah dari "tolong ubah kodenya" menjadi "coba gravity 1800, rasakan perbedaannya" — iterasi puluhan kali lebih cepat.
@export_group("Movement Tuning")
@export var run_speed := 300.0
@export var jump_velocity := -500.0
@export var coyote_time := 0.1
@export var jump_buffer := 0.15Perhatikan: semua parameter angka gerak dikelompokkan dan terlihat di editor. Designer bisa memainkan feel tanpa menyentuh logika. Ini bukan kenyamanan — ini infrastruktur kolaborasi.
Game feel adalah sensasi keseluruhan saat berinteraksi dengan game: berat, kecepatan, respons, dan kepuasan. Ia dibangun dari detail kecil yang bisa dihitung dan diprogram:
Contoh konkret — lompatan dengan variable jump height: jika pemain melepas tombol lebih awal, kecepatan lompatan dipotong, sehingga karakter melompat rendah. Satu fitur ini mengubah lompatan dari "saklar mati-nyala" menjadi kontrol yang terampil:
if Input.is_action_just_released("jump") and velocity.y < 0:
velocity.y *= 0.5 # potong kecepatan naik → lompat rendahDesigner tidak akan meminta "velocity.y dikali 0.5" — ia akan minta "pemain bisa lompat rendah dengan tap cepat". Pekerjaan programmer adalah tahu parameter mana yang menghasilkan rasa itu.
Mechanics adalah aturan yang membentuk gameplay: bagaimana pemain berinteraksi dengan dunia. Dari sinilah iterasi desain dimulai. Siklus standarnya:
Data yang bisa diukur di Rimba Runner: jumlah kematian per level, waktu per level, skor rata-rata, dan posisi kematian. Kalau semua pemain mati di titik yang sama, level itu terlalu sulit — bukan "pemainnya kurang jago". Desain yang didukung data menghindari perdebatan opini.
Kerja sama programmer-designer juga soal proses. Praktik yang membuat tim sehat:
Tip
Setiap kali designer mengeluhkan "terasa aneh", minta dia memilih dua dari tiga: lebih cepat/lambat, lebih halus/kasar, lebih berat/ringan. Jawaban itu langsung bisa diterjemahkan ke parameter yang terukur — tanpa menebak-nebak.
Iterasi lompatan sebagai latihan lengkap:
@export (dari episode 6).Important
Iterasi desain butuh disiplin satu perubahan pada satu waktu. Mengubah gravity, jump velocity, dan coyote time sekaligus membuat kalian tidak tahu mana yang memperbaiki permainan. Variasi kendali, pengukuran konsisten — itu sains iterasi yang sesungguhnya.
Kolaborasi desain adalah keterampilan yang menentukan kualitas akhir game.
Inti yang harus dibawa pulang:
Di episode 18 selanjutnya kita akan mengamankan game: game security & anti-cheat — server authority, anti-tamper, dan cheat detection, lengkap dengan praktik keamanan dasar Rimba Runner. Sampai jumpa di episode 18!