2 puan yazan GN⁺ 2026-02-16 | 1 yorum | WhatsApp'ta paylaş
  • Yaklaşık 2KB boyutunda çalışan hafif bir satranç motoru olup, sınırlı kurallar dahilinde tam bir oyun oynanmasına olanak tanır
  • 120 hücreli mailbox tahta, negamax araması, alpha-beta budama gibi temel algoritmaları içerir
  • Taş değeri tabanlı değerlendirme (material-only eval) ve yakalama öncelikli hamle sıralaması (move ordering) kullanır
  • Rok, en passant, terfi, tekrar ve 50 hamle kuralı gibi özellikler henüz uygulanmamıştır
  • Yaklaşık 1170~1200 Elo seviyesinde performans gösterir ve 2KB'nin altında kodla yazılmış bir satranç motoru örneği olarak dikkat çeker

Proje genel bakışı

  • Sameshi, sınırlı kuralları destekleyen minimal bir satranç motorudur ve toplam kod boyutu yalnızca yaklaşık 1.95KB'dir
    • Ana dosya sameshi.h olup, daha okunabilir sürüm readable/sameshi.h içinde yer alır
    • GitHub deposunda ayrıca main.c, Makefile, .gitignore gibi dosyalar da bulunur
  • Demo videosu YouTube'da yayımlanmıştır ve gerçek çalışması görülebilir

Temel yapı (core)

  • Motor aşağıdaki altı ana bileşenden oluşur
    1. 120 hücreli mailbox tahta yapısı
    2. Negamax arama algoritması
    3. Alpha-Beta budama
    4. Taş değeri tabanlı değerlendirme (material-only evaluation)
    5. Yakalama öncelikli hamle sıralaması (move ordering)
    6. Şah, mat ve pat dahil tam yasal hamle doğrulaması
  • Uygulanmamış özellikler olarak rok, en passant, terfi, tekrar ve 50 hamle kuralı açıkça belirtilmiştir

Performans (strength)

  • Yaklaşık 1170 Elo seviyesinde değerlendirilir; %95 güven aralığı 1110~1225 Elo'dur
  • Ölçüm, Stockfish (1320~1600 seviye) ile yapılan 240 oyunluk maç sonuçlarına dayanır
  • Testler derinlik 5 (fixed depth 5), azami 60 ply ve sınırlı kurallar koşullarında yapılmıştır

Teknik özellikler

  • Toplam kod boyutu 2KB'nin altındadır; bileşim C dili %98.6 ve Makefile %1.4 şeklindedir
  • Hafiflik ve algoritmik verimlilik en üst düzeye çıkarılarak, minimum kodla satranç mantığı uygulanmıştır
  • chess-engine, chess ve demoscene ile ilgili bir proje olarak sınıflandırılır

Depo durumu

  • GitHub'da 143 yıldız ve 5 fork kaydetmiştir
  • Issues, Pull requests, Projects ve Security bölümlerinin tamamı boştur
  • Depo açıklaması, “a ~1200 Elo chess engine that fits within 2KB” şeklinde özetlenir

1 yorum

 
GN⁺ 2026-02-16
Hacker News yorumları
  • Gerçekten harika bir proje. Pat özelliğinin olması güzel ama tüm kuralları uygulamak için ne kadar alana ihtiyaç olduğunu merak ediyorum
    Yazarın belirttiği gibi rok, en passant, terfi, tekrar ve 50 hamle kuralı eksikse buna modern satranç demek zor diye düşünüyorum
    Küçük bir motorda tekrar ve 50 hamle kuralı atlanabilir ama rok, en passant ve terfi bence zorunlu
    1980 tarihli Video Chess 4KB içinde tüm kuralları destekliyordu
    O yüzden şu anda en küçük UCI uyumlu motorun hangisi olduğunu merak ediyorum. Bunu aşan ultra küçük, tam kurallı bir motor yapmak eğlenceli bir hedef olabilir
    Bu arada, 1980'lerin başında kullandığım Fidelity CC3 da rok ve en passant destekliyordu

    • ToledoChess için çeşitli dillerde yazılmış sürümler var
      2KB'lık JavaScript sürümü rok, en passant, terfi, arama ve GUI içeriyor
      326 baytlık assembly sürümünde ise özel kurallar yok
      UCI uyumlu bir sürüm yok ama GUI'den daha kolay uygulanabilir gibi duruyor. JS sürümünün bazı fork'ları bu özelliği eklemiş olabilir
  • Güzel bir proje. GNU Chess'in frontend'ini kullanarak kod satırı sayısını azaltıp yalnızca backend'i yazmak mümkün olabilir gibi görünüyor
    Bir hata raporu olarak, piyon bir kare ilerledikten sonra iki kare gidemez ama b6b4 hamlesine izin verildiğini fark ettim

    • Buna dikkat çektiğim için teşekkür eden bir yanıt aldım. Hemen yama yapmayı deneyeceğini söyledi
  • Satranç motoru geliştiricilerinin ELO tahmini için en sık kullandığı araç cutechess. Arka planda SPRT kullanıyor
    Bir diğer araç da Ordo ama onu bizzat kullanmadım

  • Bayt başına 1 ELO elde etmek mümkün mü diye merak ediyorum. Daha da küçültülebilir ama daha az akıllı hale de gelebilir

    • Bunun gerçekten harika bir code golf meydan okuması olduğunu düşünüyorum
    • Çok düşük rating aralıklarında mümkün olabilir ama pratik düzeyde kısa sürede sınıra dayanır gibi geliyor
  • Bu, satrançtan çok satranç taşlarını hareket ettirebilen bir program gibi. Çünkü rok, en passant, terfi, tekrar ve 50 hamle kuralı yok

    • Uzun zamandır bilgisayar satrancı ile uğraşıyorum; bu tür “satranç implementasyonu” iddialarına alışkınım
      Bazen son derece küçük boyutta satranç uyguladıklarını iddia ediyorlar ama gerçekte önemli kuralları atlıyorlar
      Gerçekten küçük ve güçlü bir motor arıyorsanız, x86 assembly ile yazılmış asmFish'i (yaklaşık 130KiB), yaklaşık 1000 satırlık OliThink'i ve basit C koduyla güçlü performans veren Xiphos'u öneririm
      TCEC'de görülen 4KB motorlar da var ama bence bu iddiaların yanına bir yıldız işareti(*) koymak gerekir
  • Toledo küçük ama oldukça güçlü satranç programları ailesinden biri

  • Ben de yakın zamanda yaklaşık 400 satırlık okunabilir kodla tüm kuralları içeren bir satranç motoru yazdım
    Önce Java ile yaptım, sonra kendi dilim olan Bau'ya taşıdım
    Terminal UI da var; ELO hâlâ ölçülüyor ama ben onu yenemedim
    Özellikle rok implementasyonu zorluydu ama meydan okumanın kendisi keyifliydi
    Bau dilindeki satranç koduna bakabilirsiniz

    • Bau'da neden unsigned sayı türleri olmadığına dair bir soru da soruldu
  • Stockfish'in rok yapmak istediği oyunları nasıl ele aldığını merak ediyorum. Rok çok sık görülen bir hamle olduğu için, bunu desteklemeyen bir motorun gücünü değerlendirmek zor bence

    • Rok yüzünden elenen oyun olmadı. Bunun yerine Stockfish'in rok, en passant ve terfi yapamaması için yasal hamle filtreleme uygulandı
      Böylece bütün oyunlar aynı “roksuz varyant satranç” olarak oynandı
      Bu değerlendirme tam satranç için değil, o kısıtlı varyant içindi
  • Gerçekten çok hoş! Bu projeyi HN Arcade'e ekledim
    HN Arcade bağlantısı