Catatan permainan berhenti menarasikan segalanya
Dulu satu lemparan dadu mencetak lima baris, dua di antaranya menyebut kotak yang sama. Sekarang umpan itu terbaca seperti komentar, bukan notulen — dan tidak ada yang dihapus untuk itu.
Dengan bahasa sederhana
Panel di samping papan mencatat benar-benar semua yang dilakukan permainan. Satu lemparan biasa menghasilkan lima baris terpisah — melempar, bergerak, mendarat, mengakhiri giliran, dan sering satu lagi — dua di antaranya menyebut kotak yang sama. Kalikan dengan empat pemain dan tiga puluh ronde, dan umpan itu berubah jadi tembok yang berhenti kamu baca — sayang sekali, karena dua atau tiga baris yang benar-benar penting ada di dalamnya.
Sekarang satu lemparan dan segala akibatnya menjadi satu baris. Mendarat di kotak, mengakhiri giliran, mengumumkan utang sebelum dibayar, menolak membeli sebelum lelang dibuka — semua itu tak lagi diucapkan, karena papan atau baris berikutnya sudah mengatakannya. Rentetan pembangunan di satu petak menyusut jadi satu baris, lelang tanpa pesaing berhenti menyebut jumlah yang sama dua kali, dan di Speed hitung mundur gadai baru bersuara ketika tersisa dua ronde untuk bertindak.
Pesan obrolanmu juga tidak lagi terdorong keluar layar. Panel dulu menyimpan satu jendela riwayat untuk segalanya, jadi papan yang ramai bisa diam-diam mengusir apa yang diketik seseorang. Kini aktivitas dan obrolan disimpan terpisah, dan sebanyak apa pun dadu bergulir, pesan yang benar-benar ditulis orang tidak akan terkubur.
Untuk yang ingin tahu teknisnya
Menyaring di sumbernya tidak pernah jadi pilihan. Memutar ulang partai berarti melipat seluruh catatan peristiwa kembali menjadi sebuah keadaan, dan begitulah cara kerja muat ulang halaman, mode penonton, tampilan tayangan ulang, dan perender klip. Buang satu peristiwa demi umpan yang lebih rapi, dan semuanya rusak. Maka catatannya tetap utuh dan pemadatan hanya urusan render, di satu pembangun bersama yang dipakai papan langsung, tampilan penonton, tayangan ulang, klip, dan build luring.
Apa yang dilakukan tiap peristiwa terhadap umpan adalah switch menyeluruh atas semua jenis peristiwa mesin permainan, artinya jenis baru tidak akan terkompilasi sebelum ada yang memutuskan bagaimana ia harus dibaca:
// lib/game/feedDigest.ts — an exhaustive switch over every engine event
case 'dice_rolled':
return 'move'; // the roll opens a line
case 'moved':
case 'passed_start':
case 'jail_attempt_failed':
return 'absorb'; // …and what it caused folds into that line
case 'landed': // names the cell 'moved' just named
case 'turn_ended': // the board already shows whose turn it is (14% of events)
case 'payment_due': // the intent; 'debt_paid' is the settlement, with the amount
case 'buy_declined': // always followed by 'auction_started', which says it better
case 'auction_passed':// carries no information, and outnumbers real bids 2:1
return 'hidden';Muncul dua bug yang takkan ditemukan tes mana pun, karena keduanya soal bagaimana keluarannya terbaca, bukan soal isinya. Lelang tanpa pesaing menyebut angka yang sama dua kali — "P1 menawar 2600k", lalu "P1 memenangkannya seharga 2600k" — jadi tawaran penutup kini ditelan, dan hanya yang itu, supaya perang tawaran sungguhan tetap terbaca sebagai persaingan. Lalu sebuah peristiwa yang berada di tengah lemparan mengakhiri setiap baris pergerakan terlalu dini, sampai pembangunnya diajari melangkahinya.
