2 poin oleh GN⁺ 2026-02-16 | 1 komentar | Bagikan ke WhatsApp
  • 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
    1. Struktur papan mailbox 120 sel
    2. Algoritme pencarian Negamax
    3. Alpha-Beta pruning
    4. Evaluasi berbasis nilai bidak (material-only evaluation)
    5. Prioritas tangkapan (move ordering)
    6. 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

 
GN⁺ 2026-02-16
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

    • ToledoChess memiliki versi yang diimplementasikan dalam beberapa bahasa
      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 b6b4 diizinkan

    • Ada balasan yang mengucapkan terima kasih atas laporannya. Katanya akan langsung mencoba membuat patch
  • Alat 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

    • Menurut saya ini benar-benar tantangan code golf yang keren
    • Mungkin mungkin saja di rentang rating yang sangat rendah, tetapi pada tingkat yang praktis rasanya akan cepat mentok
  • 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

    • Saya sudah lama berkecimpung di computer chess, jadi saya sudah terbiasa dengan klaim “implementasi catur” seperti ini
      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

    • Ada pertanyaan yang menanyakan mengapa Bau tidak memiliki tipe bilangan unsigned
  • 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

    • Tidak ada game yang dibuang karena castling. Sebagai gantinya, diterapkan penyaringan langkah legal agar Stockfish tidak bisa melakukan castling, en passant, atau promosi
      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