Mode Cepat dan dadu ketiga
Cara bermain yang lebih cepat dan lebih santai — giliran lebih singkat, membangun di mana saja, dan dadu ketiga yang bisa berteleportasi membawamu melintasi papan.

Dengan bahasa sederhana
Waktu mepet tapi tetap ingin permainan utuh? Mode Cepat jawabannya. Giliran berjalan dengan jam yang lebih ketat — sekitar 45 detik tiap giliran — jadi satu pertandingan penuh selesai jauh lebih cepat, dan tekanannya membuat semua orang tetap waspada.
Membangun pun lebih bebas. Dalam permainan klasik, kamu harus menyebar rumah secara merata di satu grup warna, satu per giliran. Di Mode Cepat, kamu bisa menuangkan semuanya ke satu jalan dan membangun sebanyak yang sanggup kamu bayar sekaligus. Dan jika kamu menggadaikan sebuah properti, sebuah penghitung waktu mulai berjalan mundur: tebus tepat waktu atau ia kembali ke bank.
Fitur utamanya adalah dadu ketiga, yang ikut dilempar mulai ronde 7. Ia mengubah cara kamu bergerak di papan:
- Sebuah angka menambah lemparanmu — dua dadu putih ditambah yang ketiga, jadi kamu melangkah lebih jauh.
- Sebuah Bus membuatmu bisa memilih langkahmu: ambil jumlah penuhnya, atau cukup salah satu dadu putih.
- An "X" (Mr. Monopoly) mengirimmu ke properti kosong terdekat, atau ke lawan terdekat yang harus kamu bayar.
- Sebuah tripel — ketiga dadu sama — memungkinkanmu berteleportasi ke kotak mana pun di papan, lalu melempar lagi.
Untuk yang ingin tahu teknisnya
Semua mode berbagi satu mesin. Sebuah modes.ts baru menyimpan MODE_CONFIGS — per mode: uang awal, pengatur waktu giliran, batas ronde, waktu pajak, dan apakah pembangunan tidak merata diizinkan — dan daemon membaca mode permainan saat mulai, memilih konfigurasinya, lalu memberikannya ke initializeGame. Tenggat per giliran memakai turnSeconds dari mode tersebut; Klasik tetap memakai nilai dasar yang dapat disetel admin.
// packages/game-engine/src/modes.ts
export const MODE_CONFIGS: Record<GameMode, ModeConfig> = {
classic: { startingCash: 15000, unevenBuild: false, turnSeconds: 90 },
speed: {
startingCash: 30000,
unevenBuild: true, // build any property, multiple per turn
turnSeconds: 45,
speedDie: true,
speedDieFromRound: 7,
},
// ...
};Dadu ketiga diisolasi di speed-die.ts — tipe SpeedFace, rollSpeedDie, busOptions, isSpeedTriple, dan pembantu properti terdekat — dan BUKAN sebuah fork. Reducer bersama hanya memanggilnya saat state.mode === "speed", dengan memakai ulang kode gerak dan pendaratan biasa, sehingga Klasik tak tersentuh dan semua tes mesin sebelumnya tetap hijau.
Tidak ada migrasi basis data yang diperlukan untuk dadu ini: keadaan baru (sisi cepat terakhir, bus / teleportasi / lempar-ulang yang tertunda) tersimpan dalam JSON engine_state, dan nilai dadu menumpang pada bidang payload opsional dice_rolled.speedDie — tanpa jenis peristiwa baru. Migrasi 0024 hanya melonggarkan create_game agar menerima mode "speed"; enum dan kolomnya sudah ada sebelumnya.
