Arsitektur Algoritma Permainan Mahjong Modern
Mahjong modern tidak lagi hanya soal ubin, intuisi, dan keberuntungan. Di balik layar, banyak gim Mahjong digital dibangun di atas arsitektur algoritma yang rapi: mulai dari representasi data ubin, mesin aturan (rules engine), sampai modul kecerdasan buatan yang menilai risiko dan peluang. Menariknya, “arsitektur algoritma” di Mahjong biasanya tidak disusun seperti game aksi yang mengandalkan fisika atau rendering kompleks, melainkan seperti sistem keputusan berlapis yang bekerja cepat, deterministik, dan mudah diaudit.
Peta Data: Ubin sebagai Objek, Bukan Gambar
Fondasi arsitektur dimulai dari cara ubin dimodelkan. Mahjong modern umumnya memakai struktur data yang memisahkan “identitas ubin” dari “tampilan ubin”. Identitas mencakup jenis (bamboo, character, dot, honor), nilai (1–9 atau wind/dragon), serta atribut tambahan seperti red fives (aka dora) pada varian tertentu. Dengan pemisahan ini, logika permainan tetap konsisten walau tema visual berubah, dan pengembang bisa menguji aturan tanpa bergantung pada aset grafis.
Di lapisan yang sama, “dinding” (wall) dan “tumpukan buangan” (discard pile) direpresentasikan sebagai koleksi terurut. Banyak implementasi memakai array/list untuk efisiensi, sementara metadata seperti indeks pengambilan (draw pointer) membantu menghindari operasi mahal. Pada Mahjong online, data ini sering dibuat deterministik lewat seed RNG agar replay bisa diputar ulang secara identik untuk keperluan audit atau anti-kecurangan.
Mesin Aturan: Compiler Mini untuk Kombinasi Tangan
Alih-alih hardcode aturan di banyak tempat, arsitektur modern cenderung memakai rules engine: modul yang menguji apakah sebuah aksi legal (chi/pon/kan/ron/tsumo), serta apakah tangan memenuhi pola menang. Untuk mendeteksi “hand completion”, pendekatan umum adalah algoritma pencarian kombinasi (backtracking) atau dynamic programming yang memecah tangan menjadi set (mentsu), pasangan (pair), dan variasi khusus seperti seven pairs.
Yang menarik, beberapa gim menyusun aturan seperti “bahasa kecil” (domain-specific rules): setiap yaku atau pola diberi definisi terpisah, lengkap dengan prasyarat (misalnya closed hand) dan perhitungan nilai. Dengan skema ini, menambah varian—Riichi, Hong Kong, atau ruleset rumah—lebih mirip menambah modul, bukan merombak keseluruhan sistem.
Generator Aksi: Dari Kondisi ke Menu Pilihan Pemain
Setelah data dan aturan ada, gim perlu “action generator” yang menyusun pilihan aksi legal pada setiap state. Modul ini membaca state (tangan pemain, ubin terakhir, status riichi, sisa wall, deklarasi sebelumnya) lalu mengeluarkan daftar aksi yang mungkin. Di Mahjong modern, daftar ini bukan sekadar valid/invalid; sering kali dilengkapi prioritas dan konflik, misalnya siapa yang berhak ron terlebih dahulu atau bagaimana menangani multiple claims pada discard yang sama.
Desain yang rapi biasanya memisahkan “validasi” dan “resolusi konflik”. Validasi menjawab “boleh atau tidak”, sedangkan resolusi konflik menjawab “siapa yang didahulukan” berdasarkan aturan varian. Pemisahan ini membuat sistem lebih mudah diuji unit test dan lebih aman saat pembaruan.
AI dan Evaluasi Risiko: Skor, Probabilitas, dan Memori Lawan
AI Mahjong modern jarang murni mengandalkan pencarian game tree seperti catur, karena ruang kemungkinan sangat besar dan informasi tidak sempurna. Sebagai gantinya, AI memakai heuristik: menghitung shanten (jarak dari tenpai), estimasi nilai tangan, dan probabilitas peningkatan lewat ubin yang tersisa. Banyak bot juga menyimpan “model lawan” sederhana dari pola buangan untuk menilai bahaya (tile safety), misalnya suji atau kabe pada Riichi.
Arsitekturnya biasanya dibagi menjadi evaluator (menilai setiap discard), simulator ringan (Monte Carlo terbatas), dan policy layer (memilih langkah). Policy ini sering dikaitkan dengan gaya bermain: agresif mengejar nilai besar, atau defensif menjaga poin. Dengan memisah modul, pengembang bisa mengubah karakter bot tanpa merusak mesin aturan inti.
Sinkronisasi Online: Event Log sebagai Sumber Kebenaran
Pada Mahjong multiplayer, arsitektur algoritma lebih aman jika berbasis event log. Alih-alih mengirim state penuh tiap detik, server mengirim rangkaian event: draw, discard, call, kan, riichi, win. Klien membangun state dari event yang sama, sehingga lebih sulit dimanipulasi. Bila terjadi desinkronisasi, event log memudahkan verifikasi langkah mana yang menyimpang.
Untuk anti-cheat, server menjadi otoritas tunggal: RNG dijalankan di server, dan klien hanya menerima ubin yang memang boleh dilihat. Pada beberapa sistem, seed dan hash event disimpan agar pertandingan bisa diputar ulang, termasuk untuk moderasi saat ada laporan kecurangan.
Skema “Tidak Biasa”: Mahjong sebagai Tiga Jalur Paralel
Jika biasanya arsitektur game digambarkan berlapis (data → rules → UI), Mahjong modern sering lebih enak dipetakan sebagai tiga jalur paralel yang bertemu di state manager. Jalur pertama adalah “Jalur Kepastian” (deterministik): aturan legalitas, resolusi klaim, dan perhitungan menang. Jalur kedua adalah “Jalur Ketidakpastian” (probabilistik): estimasi sisa ubin, evaluasi risiko, dan prediksi lawan. Jalur ketiga adalah “Jalur Narasi” (presentasi): animasi, efek suara, dan penjelasan keputusan kepada pemain.
State manager menjadi simpul yang menjaga semuanya sinkron. Saat event baru masuk, jalur kepastian memastikan aksi sah, jalur ketidakpastian memperbarui estimasi, dan jalur narasi memilih bagaimana momen itu ditampilkan. Skema ini membuat Mahjong terasa responsif sekaligus “adil” di mata pemain, karena inti keputusan selalu berasal dari jalur kepastian yang dapat diuji, sementara kecerdasan dan gaya permainan hidup di jalur ketidakpastian yang dapat diganti-ganti tanpa mengganggu stabilitas.
Home
Bookmark
Bagikan
About
Chat