- 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
- 120 hücreli mailbox tahta yapısı
- Negamax arama algoritması
- Alpha-Beta budama
- Taş değeri tabanlı değerlendirme (material-only evaluation)
- Yakalama öncelikli hamle sıralaması (move ordering)
- Ş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
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
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
b6b4hamlesine izin verildiğini fark ettimSatranç 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
Bu, satrançtan çok satranç taşlarını hareket ettirebilen bir program gibi. Çünkü rok, en passant, terfi, tekrar ve 50 hamle kuralı yok
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
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
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ı