Adversarial vs Sandbox Sims: Memodelkan Kota NIMBY
Adversarial vs sandbox sims: city-builder yang kotanya melawan balik menjadikan penolakan NIMBY sebagai mekanik. Mana yang cocok dan kapan sebaiknya dipakai.

Ada yang membuat city-builder di mana kamu memerankan developer perumahan di San Francisco, dan kotanya sendiri adalah bos terakhirnya. Kamu mencoba membangun apartemen; kode zonasi, komisi perencanaan, tetangga, dan proses banding terus berusaha menghentikanmu. Salah satu pemain melaporkan berhasil membangun 4.147 rumah selama enam belas tahun simulasi, setelah melewati 16 sidang, 3 banding, dan 4 gugatan hukum, dan mendapat predikat “Builder of Some Things”, sementara kota itu butuh lebih dari 82.000. Sebagai satire politik, ini sangat lucu. Sebagai desain simulasi, ini juga menarik, karena membalik asumsi yang melekat di setiap city-builder sejak SimCity: bahwa pemain adalah walikota yang mahakuasa dan simulasinya ada untuk dioptimalkan. Di sini, simulasinya adalah lawanmu.
Model walikota mahakuasa: SimCity dan turunannya
City-builder klasik adalah sandbox sims. Kamu melakukan zonasi, memungut pajak, membangun jalan, dan warga simulasi kecil merespons keputusanmu. Yang menarik, model di balik layarnya konsisten luar biasa selama empat dekade genre ini: nilai tanah, polusi, arus lalu lintas, dan cakupan layanan adalah field di atas grid, dan agen (sim) membuat keputusan sederhana berdasarkan field tersebut. Cities: Skylines II, yang saat ini paling besar, mensimulasikan rumah tangga individu dengan siklus hidup, tempat kerja, dan perjalanan komuter, tapi mereka tidak pernah menggugatmu. Mereka tidak bisa. Peran mereka dalam sistem adalah terdampak, bukan bertindak.
Pilihan desain ini diam-diam menyimpan filosofi politik. Di SimCity, kalau kamu ingin membangun jalan tol melewati suatu lingkungan, ya tinggal dibangun. Warga lingkungan itu paling-paling hanya terwakili sebagai penurunan di meteran kebahagiaan. Umpan balik dalam game ini memberi hadiah untuk throughput: lebih banyak zona, lebih banyak penduduk, lebih banyak basis pajak. Siapa pun yang sudah main game seperti ini ratusan jam pasti sudah menginternalisasi pandangan dunia bahwa penghalang urbanisme yang baik adalah kurangnya visi sang pemain sendiri. Padahal, justru itulah yang diperdebatkan dalam kebijakan tata kota yang nyata. Game ini mengajarimu berpikir seperti Robert Moses, lalu kota-kota sungguhan mengingatkanmu bahwa Robert Moses adalah alasan kita punya aturan seperti sekarang.
Bukan berarti saya menjelek-jelekkan genre ini. Sandbox sims sangat bagus untuk tujuan utamanya: melatih intuisi sistem tentang infrastruktur, tata guna lahan, dan efek orde kedua dari zonasi. Menaruh industri berdampingan dengan permukiman akan menurunkan nilai tanah. Kemacetan muncul dari hierarki jalan, bukan dari lebar jalan. Pelajaran-pelajaran itu nyata. Tapi model sandbox punya titik buta sebesar gedung dinas perencanaan: ia memperlakukan gesekan tata kelola sebagai noise, bukan sebagai bagian dari sistem itu sendiri.
Model adversarial: kota sebagai lawan
City-builder NIMBY membalik semua itu. Kamu adalah developer dengan modal, waktu, dan kesabaran investor sebagai sumber dayamu. Lawannya adalah birokrasi prosedural: sidang tinjauan diskresioner, kajian lingkungan, banding dari warga, dan ancaman litigasi yang selalu ada. Tugasmu bukan memaksimalkan kebahagiaan kota, tapi mendapatkan izin dan membangun unit sebelum dana habis atau investormu kehilangan kepercayaan. Setiap gerbang persetujuan adalah lemparan dadu yang bobotnya ditentukan oleh karakter politik distrik tempatmu membangun.
Secara mekanik, ini lebih mirip roguelike daripada city-builder. Kamu punya satu run. Run berakhir ketika modal atau kesabaran habis. Konten prosedural di sini bukan terrain, melainkan proses. Dan inilah wawasan yang layak dicuri: birokrasi adalah sistem yang bisa dibaca dan dimekanisasi. Sidang punya antrean. Banding punya timer. Setiap gerbang punya throughput dan tingkat kegagalan. Kalau dipikir-pikir, pipeline perizinan itu persis seperti request yang melewati serangkaian layanan kelebihan beban, dengan retry, backpressure, dan sesekali paket hilang yang membuatmu kehilangan sebelas bulan. Setiap backend engineer yang membaca ini pasti sudah pernah membangun sistem seperti ini di kantor, hanya dengan niat yang lebih baik.
Ada mod Factorio yang sering jadi bahan candaan, yang menambahkan pemrosesan dokumen sebagai recipe tree: assembler berhenti kalau kamu tidak membersihkan tumpukan birokrasi, dan biter antre untuk menyerahkan formulir keluhan kepadamu. Ini lelucon yang kena karena hampir bukan lelucon. Alasan adversarial process sims terasa sangat berbeda saat dimainkan adalah karena mereka menjadikan menunggu sebagai masalah sumber daya utama. Di sandbox sims, waktu hampir gratis; kamu tinggal mempercepat. Di adversarial sim, waktu adalah hal yang ingin direbut lawanmu, karena penundaan adalah mekanisme pembunuh paling andal yang dimiliki titik veto. Ini bukan abstraksi game. Ini memang cara kerja politik perumahan: kamu jarang mengalahkan sebuah proyek secara langsung, kamu hanya membuatnya menunggu sampai mati.
Apa yang sebenarnya ditangkap masing-masing model
Inilah perbandingan jujurnya. Tidak ada model yang merupakan “kebenaran” tentang kota; masing-masing menangkap lapisan kausal yang berbeda, dan keduanya gagal ke arah yang berlawanan.
- Sandbox sims menangkap sistem fisik dengan baik. Lalu lintas, polusi, nilai tanah, cakupan layanan, efek jaringan dari kepadatan. Ini adalah field dan aliran yang kontinu, dan agent-based model di atas grid benar-benar bisa mereproduksi fenomena emergen seperti kolaps kemacetan dan tekanan gentrifikasi.
- Sandbox sims menangkap sistem politik dengan sangat buruk. Mereduksi oposisi menjadi angka kebahagiaan bukanlah model kekuasaan. Ia tidak bisa menyatakan bahwa minoritas kecil yang terorganisir dan sudah lama tinggal di sana bisa mendominasi mayoritas yang tersebar dan sibuk, padahal itulah fakta terpenting dalam politik tata guna lahan lokal.
- Adversarial sims menangkap titik veto dengan baik. Tinjauan diskresioner, banding, risiko litigasi, dan penundaan sebagai senjata itu diskrit, stateful, dan bisa diakali, sehingga sangat cocok untuk mekanik. Game ini mereproduksi hasil empiris dengan tepat: ketika setiap proyek adalah negosiasi, hanya developer besar dengan pengacara yang bertahan, sehingga perumahan yang dibangun makin sedikit dan proyeknya makin besar.
- Adversarial sims menangkap sistem fisik dengan sangat buruk. Begitu unit sudah dibangun, sim tidak peduli apakah lingkungan itu benar-benar berfungsi. Lalu lintas, sekolah, saluran air, semuanya diabstraksikan atau diabaikan. Kamu bisa memenangkan game dan tetap membangun sesuatu yang tidak berfungsi.
- Keduanya gagal pada counterfactual. Tidak satu pun bisa menunjukkan kota yang akan ada di bawah aturan yang berbeda, dan itulah pertanyaan yang sebenarnya diperdebatkan para pembuat kebijakan.
Poin terakhir ini layak ditekankan karena di sinilah perbandingan ini berhenti membahas game. Orang-orang yang berdebat soal aturan upzoning, misalnya gelombang RUU preemption tingkat negara bagian di California yang mencabut kewenangan lokal di dekat transit, sebenarnya sedang berdebat tentang simulasi counterfactual. Kedua pihak menjalankan model mental: satu pihak memodelkan kota di mana menghapus titik veto akan melepaskan pasokan; pihak lain memodelkan kota di mana menghapusnya justru merusak karakter lingkungan tanpa menurunkan harga. Game yang membuat lapisan titik veto bisa dimainkan adalah kontribusi yang sangat berguna untuk perdebatan itu, karena memaksamu berinteraksi dengan mekanismenya, bukan sekadar perasaan. Ketika seorang pemain menyelesaikan run dengan 4.000 dari 82.000 rumah yang dibutuhkan, pelajarannya bukan “developer itu serakah” atau “tetangga itu egois”, melainkan bahwa throughput adalah sifat dari prosesnya, bukan dari niat siapa pun.

Rekayasa untuk memodelkan oposisi
Dari sudut pandang simulation engineering, model adversarial menarik karena oposisi adalah agensi heterogen. Tetangga bukan field; mereka adalah aktor dengan memori, tingkat kepentingan, dan motivasi yang tidak simetris. Memodelkan mereka dengan baik berarti meminjam bagian lain dari toolbox AI yang biasanya tidak dipakai city-builder. Beberapa pola yang muncul:
- Ambang aktivasi dengan histeresis. Kebanyakan warga tidak pernah ikut campur dalam permohonan izin. Oposisi aktif ketika dampak yang dirasakan melewati ambang batas, dan setelah aktif, ia tidak mati lagi meskipun kondisinya membaik. Asimetri ini mudah dimodelkan dan sudah mengerjakan sebagian besar pekerjaan untuk mereproduksi dinamika nyata.
- Gerbang proses berbasis antrean. Setiap tahap tinjauan adalah antrean dengan laju layanan. Penundaan muncul dari beban, bukan dari niat jahat, dan ini sekaligus sesuai dengan kenyataan dan menjadi sumber ketegangan utama game ini. Kamu bisa memodelkan seluruh dinas perencanaan sebagai beberapa antrean
M/M/1dan mendapatkan perilaku yang terasa akurat secara mengerikan. - Penundaan sebagai damage-over-time. Biaya tanggungan terakumulasi tiap bulan. Mekanik tunggal ini mengubah penundaan prosedural menjadi tekanan yang terlihat oleh pemain dan menghasilkan adaptasi strategi yang tepat: developer membayar lebih untuk lokasi yang langsung bisa dibangun dan menghindari distrik dengan tinjauan diskresioner sama sekali.
- Kejutan acak dengan memori. Gugatan hukum tidak hanya memakan uang; ia mengubah kondisi politik distrik. State distrik yang persisten mengubah kejadian sekali-pakai menjadi path dependence.
Sketsa minimal dari loop inti mungkin terlihat seperti ini:
class Project:
def __init__(self, units, district):
self.units = units
self.district = district # has: opposition_level, backlog, discretion
self.stage = "application"
self.months_in_process = 0
def tick(self, month):
self.months_in_process += 1
# carrying costs: land, loans, staff. delay is the killer.
burn = self.units * 900 # $/unit/month while entitled is pending
if self.stage == "application":
if self.district.backlog < self.district.staff_capacity:
self.stage = "hearing"
self.district.backlog += 1
elif self.stage == "hearing":
self.district.backlog -= 1
p_appeal = min(0.85, self.district.opposition_level
* (1 + self.district.past_appeals * 0.2))
self.stage = "appeal" if random.random() < p_appeal else "entitled"
elif self.stage == "appeal":
if self.months_in_process % 6 == 0: # appeals resolve slowly
self.stage = "entitled" if random.random() < 0.5 else "lawsuit"
return burn
Itu hanya empat puluh baris, dan sudah mereproduksi hasil khas genre ini: distrik dengan oposisi tinggi tidak membangun apa pun meskipun permintaannya ada, developer berkumpul di distrik dengan gesekan rendah, dan waktu menuju persetujuan mendominasi ekonomi proyek. Jarak antara spesifikasi dan perilaku emergennya adalah hal yang sudah kami bahas dalam celah antara spesifikasi dan implementasi. Tidak ada yang menulis “menghasilkan kekurangan perumahan” di kode zonasi, tapi kekurangan itu tetap muncul dari aturannya.
Perilaku emergen vs kesulitan yang di-script
Ada satu percabangan desain yang sangat penting di sini: apakah oposisinya di-script, atau dibiarkan muncul sendiri? Kesulitan yang di-script, misalnya kota yang makin menghalangi di setiap level, lebih mudah diseimbangkan tapi mengajarkan pelajaran yang salah. Ia memberi tahu pemain bahwa sistemnya “diatur dengan sengaja”. Oposisi emergen, yang dibangun dari antrean, ambang, dan biaya tanggungan, mengajarkan sesuatu yang lebih dekat dengan kebenaran dan jauh lebih tidak nyaman: sistem menghasilkan hasil-hasil ini walaupun setiap aktor individu berperilaku wajar. Perencana dengan backlog sembilan bulan bukan tokoh jahat; dia kekurangan staf. Tetangga yang mengajukan banding atas proyekmu bukan karikatur NIMBY; dia punya satu rumah, itu seluruh kekayaannya, dan game memberinya tuas, jadi dia menariknya. Seperti yang kami bahas dalam tulisan kami tentang defensive engineering, sistem mendapatkan perilaku yang diizinkan oleh insentifnya, bukan perilaku yang diharapkan desainernya.
Emergence juga membuat game ini mudah dipahami oleh pihak lain dalam perdebatan. Seorang YIMBY yang memainkannya belajar secara langsung mengapa reformasi proses lebih penting daripada proyek tunggal mana pun. Seorang pelestari yang memainkannya belajar bahwa titik veto tidak secara selektif menghentikan proyek buruk; mereka menghentikan semua hal yang punya timeline cukup panjang, dan itu tidak pandang bulu. Ini jauh lebih sulit disampaikan dalam opini tertulis dibanding dalam game berbasis run di mana kamu melihat biaya tanggunganmu terkuras di giliran keempat puluh.
Penundaan adalah mekanisme pembunuh paling andal yang dimiliki titik veto. Kamu jarang mengalahkan sebuah proyek secara langsung; kamu hanya membuatnya menunggu sampai mati.
Serious games vs satire: kapan masing-masing menang
Perbandingan yang sebenarnya dipaksakan genre ini bukanlah sandbox vs adversarial, melainkan satire vs pemodelan serius. Game NIMBY adalah satire: parameternya disetel untuk komedi dan keputusasaan, bukan dikalibrasi dengan timeline perizinan empiris. Versi serius, yang pernah disebut seorang anggota dewan kota sebagai alat latihan yang ingin ia pakai, akan mengkalibrasi throughput gerbang, probabilitas banding, dan biaya tanggungan berdasarkan data perizinan sungguhan. Beberapa dinas perencanaan dan peneliti memang menjalankan simulasi partisipatif dan serious games untuk tujuan ini, meski biasanya dengan kualitas produksi setingkat presentasi PowerPoint.
Satire menang ketika tujuannya adalah perhatian dan intuisi. Tidak ada yang membagikan model perencanaan yang terkalibrasi di media sosial; game browser yang memperlihatkan San Francisco menguburmu dalam birokrasi justru dibagikan karena dilebih-lebihkan dan itulah yang membawa argumennya. Satire juga punya standar kebenaran yang rendah, karena ia membuat klaim tentang arah, bukan besaran. Tapi satire kalah ketika pertanyaannya berubah menjadi “apa yang harus kita ubah?” Untuk itu kamu butuh versi yang membosankan: aturan berparameter yang bisa kamu nyalakan dan matikan. Hapus tinjauan diskresioner di model dan lihat throughput-nya. Gandakan staf perencanaan dan lihat backlog-nya menyusut. Loop toggle-and-observe inilah tempat sebuah game berhenti menjadi komentar dan mulai menjadi instrumen kebijakan. Versi terkuat dari genre ini akan merilis kedua mode dan membiarkan pemain berpindah di antaranya: rasakan keputusasaannya, lalu perbaiki mesinnya.
Mengapa game lebih baik dalam berargumen daripada opini tertulis
Ada pelajaran yang lebih luas di sini untuk siapa pun yang membangun sistem penjelas. Opini tertulis menegaskan sebuah mekanisme; model yang bisa dimainkan mendemonstrasikannya, dan membiarkan pengguna memalsukannya. Ketika model mentalmu tentang politik perumahan adalah “seseorang seharusnya membangun lebih banyak”, tiga puluh menit dengan adversarial sim akan mengubahnya lebih efektif daripada grafik tentang jumlah unit yang diizinkan per tahun. Inilah alasan yang sama mengapa membangun shell mengajarimu lebih banyak tentang Unix dibanding membaca man page: mengoperasikan sebuah sistem, meskipun hanya mainan, memaksa abstraksi menjadi konkret. Komentar Hacker News tentang game ini juga menarik: orang-orang langsung mengusulkan versi untuk kota mereka sendiri, untuk kereta cepat dengan kewajiban mitigasi satwa liar, untuk pusat data. Polanya bisa digeneralisasi karena arsitektur titik veto memang bisa digeneralisasi. Di mana pun ada gerbang persetujuan berurutan, motivasi yang tidak simetris, dan penundaan sebagai biaya, di situlah game ini berlaku.
Saya bahkan lebih jauh lagi: adversarial sim adalah genre yang kurang dimanfaatkan untuk komunikasi engineering secara umum. Bayangkan onboarding engineer ke proses change-management organisasimu dengan meminta mereka memainkannya. Deploy sebuah perubahan; lihat ia mengantre di belakang tinjauan CAB, sign-off keamanan, dan jendela release yang dibekukan; rasakan antusiasmemu berubah menjadi pemahaman mengapa orang-orang akhirnya beralih ke shadow IT. Kalau terdengar familiar, itu adalah insting yang sama di balik argumen kami bahwa setiap lapisan review membuat tim makin lambat. Gesekannya tidak terlihat sampai seseorang harus mendorong sesuatu melewatinya.
Rekomendasinya
Jadi: sandbox sim atau adversarial sim? Mainkan keduanya, tapi kalau kamu membangun sesuatu, bangunlah yang adversarial. Genre sandbox sudah matang, dilayani dengan baik oleh judul komersial, dan pelajarannya (kepadatan, jaringan, eksternalitas) sudah ada di budaya kita. Genre adversarial adalah tempat ruang desain yang belum dijelajahi dan nilai penjelasan yang sesungguhnya berada. Kalau kamu developer yang mencari side project dengan gigi, modelkan lapisan proses dari sesuatu yang kamu kenal baik: pipeline perizinan kotamu, prosedur pengadaan perusahaanmu, sistem visa. Gunakan antrean, ambang dengan histeresis, dan biaya tanggungan; jadikan penundaan sebagai antagonis; biarkan hasilnya muncul sendiri alih-alih di-script. Jaga angkanya tetap bisa diatur agar skeptis bisa menguji asumsi mereka sendiri. Kamu akan belajar lebih banyak tentang sistem ini dari membangun versi mainannya daripada dari bertahun-tahun berdebat tentangnya, dan siapa pun yang memainkan versimu juga akan belajar begitu. Itulah trik sebenarnya dari game kecil ini: ia mengambil debat yang biasanya hanya menghasilkan panas dan mengubahnya menjadi mesin yang bisa kamu utak-atik. Lebih banyak argumen kami layak dijadikan mesin.


