- Mesin catur ringan yang berjalan dalam ukuran sekitar 2KB, dan mampu memainkan permainan lengkap di bawah aturan yang terbatas
- Mencakup algoritme inti seperti papan mailbox 120 sel, pencarian negamax, dan alpha-beta pruning
- Menggunakan evaluasi berbasis nilai bidak (material-only eval) dan pendekatan prioritas tangkapan (move ordering)
- Castling, en passant, promosi, pengulangan, dan aturan 50 langkah masih belum diimplementasikan
- Menunjukkan performa sekitar 1170~1200 Elo, dan menarik perhatian sebagai contoh implementasi mesin catur di bawah 2KB
Gambaran proyek
- Sameshi adalah mesin catur minimalis yang mendukung aturan terbatas, dengan ukuran total kode hanya sekitar 1.95KB
- File utamanya adalah
sameshi.h, dan versi yang lebih mudah dibaca tersedia di readable/sameshi.h
- Repositori GitHub juga menyediakan
main.c, Makefile, .gitignore, dan lainnya
- Video demo telah dipublikasikan di YouTube, sehingga cara kerjanya bisa dilihat secara langsung
Struktur inti (core)
- Mesin ini terdiri dari enam komponen utama berikut
- Struktur papan mailbox 120 sel
- Algoritme pencarian Negamax
- Alpha-Beta pruning
- Evaluasi berbasis nilai bidak (material-only evaluation)
- Prioritas tangkapan (move ordering)
- Validasi langkah legal lengkap, termasuk check, checkmate, dan stalemate
- Fitur yang belum diimplementasikan secara eksplisit adalah castling, en passant, promosi, pengulangan, dan aturan 50 langkah
Kekuatan (strength)
- Dinilai berada di kisaran 1170 Elo, dengan interval kepercayaan 95% sebesar 1110~1225 Elo
- Diukur berdasarkan hasil 240 pertandingan melawan Stockfish (level 1320~1600)
- Diuji pada kondisi kedalaman tetap 5 (fixed depth 5), maksimum 60 ply, dan aturan terbatas
Karakteristik teknis
- Ukuran total kode kurang dari 2KB, dengan komposisi bahasa C 98.6% dan Makefile 1.4%
- Memaksimalkan peringkasan kode dan efisiensi algoritme untuk mengimplementasikan logika catur dengan kode seminimal mungkin
- Diklasifikasikan dalam topik chess-engine, chess, dan demoscene
Status repositori
- Mencatat 143 stars dan 5 forks di GitHub
- Bagian Issues, Pull requests, Projects, dan Security semuanya kosong
- Deskripsi repositorinya diringkas sebagai “a ~1200 Elo chess engine that fits within 2KB”
1 komentar
Komentar Hacker News
Proyek yang sangat keren. Menarik juga karena ada fitur stalemate, tetapi saya penasaran berapa banyak ruang yang dibutuhkan untuk mengimplementasikan seluruh aturan permainan
Seperti yang disebut penulis, jika castling, en passant, promosi, pengulangan, dan aturan 50-langkah tidak ada, menurut saya sulit menyebutnya catur modern
Untuk engine kecil, pengulangan dan aturan 50-langkah mungkin bisa dihilangkan, tetapi castling, en passant, dan promosi menurut saya wajib ada
Video Chess pada 1980 mendukung aturan lengkap dalam 4KB
Jadi saya penasaran apa engine kompatibel UCI terkecil saat ini. Akan jadi target yang menarik untuk membuat engine aturan lengkap yang sangat kecil dan melampaui itu
Sebagai catatan, Fidelity CC3 yang saya pakai pada awal 1980-an juga mendukung castling dan en passant
Versi JavaScript 2KB mencakup castling, en passant, promosi, pencarian, bahkan GUI
Versi assembly 326-byte tidak memiliki aturan khusus
Tidak ada versi yang kompatibel dengan UCI, tetapi tampaknya itu akan lebih mudah diimplementasikan daripada GUI. Mungkin beberapa fork dari versi JS sudah menambahkan fitur tersebut
Proyek yang keren. Dengan memanfaatkan frontend GNU Chess, sepertinya jumlah baris kode bisa dikurangi dan hanya backend-nya saja yang perlu diimplementasikan
Sebagai laporan bug, saya menemukan masalah bahwa pion tidak boleh bisa maju dua kotak setelah sudah bergerak satu kotak sebelumnya, tetapi
b6b4diizinkanAlat yang paling sering dipakai para pengembang engine catur untuk estimasi ELO adalah cutechess. Di dalamnya digunakan SPRT
Alat lain adalah Ordo, tetapi saya sendiri belum pernah memakainya
Saya penasaran apakah mungkin mencapai 1 ELO per byte. Bisa saja dibuat lebih kecil, tetapi mungkin juga jadi kurang pintar
Ini terasa lebih seperti program yang bisa menggerakkan bidak catur daripada catur itu sendiri. Karena castling, en passant, promosi, pengulangan, dan aturan 50-langkah tidak ada
Kadang ada yang mengklaim berhasil mengimplementasikan catur dalam ukuran yang sangat kecil, tetapi kenyataannya sering ada aturan penting yang dihilangkan
Jika mencari engine yang benar-benar kecil dan kuat, saya merekomendasikan asmFish (sekitar 130KiB) yang ditulis dalam assembly x86, OliThink yang panjangnya sekitar 1000 baris, dan Xiphos yang memberikan performa kuat dengan kode C sederhana
Ada juga engine 4KB yang pernah muncul di TCEC, tetapi menurut saya klaim itu layak diberi tanda bintang (*)
Toledo adalah keluarga program catur yang kecil tetapi cukup kuat
Saya juga baru-baru ini mengimplementasikan engine catur dengan semua aturan lengkap dalam sekitar 400 baris kode yang mudah dibaca
Awalnya saya membuatnya dalam Java, lalu mem-porting-nya ke bahasa buatan saya, Bau
Bahkan sudah mencakup UI terminal, dan ELO-nya masih sedang diukur, tetapi saya belum bisa mengalahkannya
Implementasi castling khususnya cukup rumit, tetapi tantangannya sendiri menyenangkan
Lihat kode catur dalam bahasa Bau
Saya penasaran bagaimana game yang Stockfish ingin melakukan castling ditangani. Karena castling adalah langkah yang sangat sering muncul, saya rasa sulit menilai kekuatan engine jika itu tidak didukung
Jadi semua game dimainkan sebagai “varian catur tanpa castling” yang sama
Penilaian ini bukan untuk catur secara penuh, melainkan untuk varian terbatas tersebut
Benar-benar keren! Saya menambahkan proyek ini ke HN Arcade
Tautan HN Arcade