Mode Cepat dan dadu ketiga
Cara bermain yang lebih cepat dan santai — giliran lebih singkat, membangun di mana saja, dan dadu ketiga yang bisa membuat Anda berteleportasi 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, Anda harus menyebar rumah secara merata di satu grup warna, satu per giliran. Di Mode Cepat, Anda bisa menuangkan semuanya ke satu jalan, satu tingkat per petak per giliran. Dan jika Anda 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 Anda bergerak di papan:
- Sebuah angka menambah lemparan Anda — dua dadu putih ditambah yang ketiga, jadi Anda melangkah lebih jauh.
- Sebuah Bus memungkinkan Anda memilih langkah: ambil jumlah penuhnya, atau cukup salah satu dadu putih.
- Sisi "X" (Mr. Monopoly) mengirim Anda ke properti kosong terdekat, atau ke lawan terdekat yang harus Anda bayar.
- Sebuah tripel — ketiga dadu sama — memungkinkan Anda berteleportasi ke petak mana pun di papan, lalu melempar lagi.
| Klasik | Cepat | |
|---|---|---|
| Pengatur waktu giliran | ~90s | ~45s |
| Membangun | Merata, satu per giliran | Di mana saja, banyak per giliran |
| Dadu ketiga | Tidak | Mulai ronde 7 |
| Gadai | Permanen | Lepas otomatis lewat penghitung waktu |
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.
