Tak ada lagi yang menunggu sendirian: kenali para pemain tetap
Membuka ruangan dulu berarti menunggu sendirian sampai menyerah. Kini dua belas pemain tetap dengan nama sungguhan, kepribadian tetap, dan tempo manusiawi mengisi kursi kosong.

Dengan bahasa sederhana
Sampai pembaruan ini, tidak pernah ada yang bergabung ke ruangan yang Anda buat. Anda memilih mode, membuka meja, lalu menunggu — dan sebagian besar waktu menunggu sendirian. Angka dari enam minggu sebelum ini dirilis cukup gamblang:
| Yang kami ukur | Hasil |
|---|---|
| Ruangan yang dibuka pemain dan tidak pernah dimulai | 38 |
| Rata-rata menunggu sebelum menyerah | ~3,2 jam |
| Satu ruangan penuh 4/4 yang tetap tidak pernah dimulai | menunggu 2 hari |
| Permainan selesai dengan lebih dari satu manusia | 46 dari 231 |
Sekarang meja terisi dengan sendirinya. Antara dua puluh detik dan empat menit setelah Anda membuka ruangan, seseorang duduk. Selusin pemain tetap bergantian muncul di lobi — nama panggilan biasa, bukan RoboBaron — dan masing-masing adalah pemain yang sama setiap kali Anda bertemu mereka:
- kepribadian tetap: lawan yang sama selalu bermain hati-hati, atau selalu menawar terlalu tinggi;
- tanggal bergabung dan tingkat pengalaman yang bukan dikarang pagi ini;
- tempo sendiri — mereka berpikir satu sampai enam detik, bukan dua detik seperti metronom;
- sesekali satu kalimat pendek di obrolan alih-alih stiker;
- tanpa lencana "bot" di ruang tunggu, karena di meja mereka berperilaku seperti pemain.
Mereka juga muncul di papan peringkat — itu langkah yang jujur jika mereka memang memainkan pertandingan sungguhan — tetapi dengan batas harian yang ketat atas perolehan mereka, sehingga naik seperti pemain biasa, bukan menggarap papan peringkat.
Untuk yang ingin tahu teknisnya
Kedua belas persona disiapkan secara idempoten saat daemon permainan dinyalakan, dan ditandai dengan nilai yang sudah didukung tabel profil — sehingga seluruh fitur ini mendarat tanpa migrasi basis data dan tanpa mengubah aturan permainan apa pun.
Pengisi kursi adalah satu tick penjadwal, bukan pengatur waktu per ruangan. Setiap jeda diturunkan dari acak bersemai yang dikunci pada ruangan dan kursi, serta ditambatkan pada stempel waktu di basis data, sehingga daemon yang dinyalakan ulang meneruskan jadwal yang persis sama alih-alih mengundi jeda baru:
// scheduler.ts — seeded per (room, seat), anchored on a DB timestamp
const rng = createRng(`${game.id}:fill:${seat}`);
const isLastSeat = freeSeats === 1;
const delayMs = isLastSeat
? rng.int(LAST_SEAT_MIN_MS, LAST_SEAT_MAX_MS) // 3-8 min: leave room for a human
: rng.int(SEAT_MIN_MS, SEAT_MAX_MS); // 20 s - 4 min
if (Date.now() - Date.parse(game.created_at) < delayMs) continue;| Setelan | Nilai |
|---|---|
| Jeda pengisian kursi | 20 dtk – 4 mnt, bersemai per kursi |
| Kursi terakhir | 3 – 8 mnt |
| Mulai otomatis saat meja penuh dan sepi | 3 mnt |
| Waktu berpikir bot | 1 – 6 dtk, diskalakan per persona |
| XP persona | paling banyak satu penghargaan per hari UTC |
Tiga cacat baru muncul ketika sistem benar-benar berjalan, dan tak satu pun akan tertangkap oleh uji unit: ruangan yang penuh justru dikecualikan dari kueri kandidat pengisi, sehingga mulai-otomatis tidak pernah melihat kasus yang menjadi alasan keberadaannya; gerbang jeda berpikir dikunci per permainan, bukan per bot, sehingga jeda pada satu giliran juga memblokir tawaran lelang bot yang sama sampai ia otomatis dilewati dari jendelanya sendiri; dan permainan yang dimulai daemon tidak membangunkan penjadwal dari mode diam, sehingga jarak antara mulai dan lemparan bot pertama menjadi 11,6 detik alih-alih 49 milidetik.
