- लगभग 2KB आकार में चलने वाला हल्का chess engine, जो सीमित नियमों के भीतर पूरा गेम खेल सकता है
- इसमें 120-cell mailbox board, Negamax search, Alpha-Beta pruning जैसे मुख्य algorithm शामिल हैं
- यह material-only eval और capture-first move ordering का उपयोग करता है
- castling, en passant, promotion, repetition, और 50-move rule अभी implement नहीं किए गए हैं
- लगभग 1170~1200 Elo स्तर का प्रदर्शन दिखाता है, और 2KB से कम code में chess engine लागू करने के उदाहरण के रूप में ध्यान खींचता है
प्रोजेक्ट अवलोकन
- Sameshi एक न्यूनतम chess engine है जो सीमित नियमों को support करता है, और पूरे code का आकार केवल लगभग 1.95KB है
- मुख्य फ़ाइल
sameshi.h है, और पढ़ने में आसान version readable/sameshi.h में शामिल है
- GitHub repository में
main.c, Makefile, .gitignore आदि भी दिए गए हैं
- demo video YouTube पर उपलब्ध है, जहाँ इसका वास्तविक कामकाज देखा जा सकता है
मुख्य संरचना (core)
- engine निम्न छह प्रमुख components से बना है
- 120-cell mailbox board structure
- Negamax search algorithm
- Alpha-Beta pruning
- material-only evaluation
- capture-first move ordering
- check, checkmate, और stalemate सहित पूर्ण legal move validation
- अभी implement न किए गए features में castling, en passant, promotion, repetition, और 50-move rule स्पष्ट रूप से शामिल हैं
प्रदर्शन (strength)
- इसे लगभग 1170 Elo स्तर का आँका गया है, और 95% confidence interval 1110~1225 Elo है
- माप Stockfish (1320~1600 level) के खिलाफ 240 games के परिणामों के आधार पर किया गया
- test depth 5 (fixed depth 5), maximum 60 ply, और सीमित नियमों की शर्तों में किया गया
तकनीकी विशेषताएँ
- पूरे code का आकार 2KB से कम है, जिसमें C 98.6% और Makefile 1.4% है
- हल्केपन और algorithm efficiency को अधिकतम करते हुए, न्यूनतम code में chess logic लागू किया गया है
- इसे chess-engine, chess, और demoscene विषयों से वर्गीकृत किया गया है
repository की स्थिति
- GitHub पर इसे 143 stars और 5 forks मिले हैं
- Issues, Pull requests, Projects, और Security सेक्शन सभी खाली हैं
- repository का विवरण “a ~1200 Elo chess engine that fits within 2KB” के रूप में संक्षेपित है
1 टिप्पणियां
Hacker News की राय
यह वाकई शानदार प्रोजेक्ट है। stalemate फीचर होना भी अच्छा है, लेकिन पूरे नियम लागू करने के लिए कितनी जगह चाहिए होगी, यह जानने की उत्सुकता है
जैसा कि लेखक ने बताया, अगर castling, en passant, promotion, repetition, और 50-move rule नहीं हैं, तो इसे आधुनिक chess कहना मुश्किल है
छोटे engine में repetition और 50-move rule छोड़े जा सकते हैं, लेकिन castling, en passant, और promotion तो ज़रूरी लगते हैं
1980 का Video Chess 4KB के भीतर पूरे rules को support करता था
इसलिए यह जानने की जिज्ञासा है कि अभी सबसे छोटा UCI-compatible engine कौन-सा है। उसे पीछे छोड़ने वाला ultra-compact full-rules engine बनाना एक मज़ेदार लक्ष्य हो सकता है
संदर्भ के लिए, 1980 के शुरुआती दौर में मेरे पास जो Fidelity CC3 था, वह भी castling और en passant support करता था
2KB वाले JavaScript version में castling, en passant, promotion, search, और GUI तक शामिल हैं
326-byte वाले assembly version में special rules नहीं हैं
UCI-compatible version नहीं है, लेकिन GUI की तुलना में उसे implement करना आसान लगेगा। JS version के कुछ forks ने शायद यह फीचर जोड़ा भी हो
शानदार प्रोजेक्ट है। GNU Chess frontend का उपयोग करके code lines कम की जा सकती हैं और सिर्फ backend implement किया जा सकता है
bug report के रूप में, मैंने पाया कि pawn एक बार एक घर चलने के बाद दो घर आगे नहीं जा सकता, लेकिन
b6b4को अनुमति मिल रही हैchess engine developers ELO estimation के लिए सबसे ज़्यादा cutechess का उपयोग करते हैं। यह अंदरूनी तौर पर SPRT इस्तेमाल करता है
एक और tool Ordo है, लेकिन मैंने खुद उसे नहीं आज़माया है
सोच रहा हूँ कि क्या 1 byte पर 1 ELO हासिल किया जा सकता है। इसे और छोटा बनाया जा सकता है, लेकिन तब शायद यह कम स्मार्ट हो जाएगा
यह chess से ज़्यादा ऐसा प्रोग्राम लगता है जो chess pieces को चला सकता है। क्योंकि इसमें castling, en passant, promotion, repetition, और 50-move rule नहीं हैं
लोग अक्सर दावा करते हैं कि उन्होंने बहुत छोटे आकार में chess implement कर दिया, लेकिन वास्तव में वे महत्वपूर्ण rules छोड़ देते हैं
अगर सच में छोटा और मजबूत engine चाहिए, तो x86 assembly में लिखा asmFish (लगभग 130KiB), लगभग 1000 lines वाला OliThink, और simple C code के साथ मजबूत प्रदर्शन देने वाला Xiphos देखना चाहिए
TCEC में आए 4KB engines भी हैं, लेकिन मुझे लगता है कि उन दावों पर एक asterisk (*) लगना चाहिए
Toledo छोटे लेकिन काफ़ी मजबूत chess programs की एक श्रृंखला है
मैंने भी हाल में लगभग 400 lines के readable code में सभी rules वाला chess engine implement किया
पहले इसे Java में बनाया, फिर बाद में अपनी भाषा Bau में port किया
इसमें terminal UI भी शामिल है, और अभी ELO मापा जा रहा है, लेकिन मैं इसे हरा नहीं पाया
खासकर castling implementation मुश्किल था, लेकिन चुनौती अपने आप में मज़ेदार थी
Bau भाषा का chess code देखें
सोच रहा हूँ कि Stockfish ने उन games को कैसे संभाला जिनमें वह castling करना चाहता था। castling इतनी आम चाल है कि अगर उसे support न किया जाए, तो engine की strength का आकलन करना कठिन लगता है
इसलिए सभी games एक ही “castling-रहित variant chess” के रूप में खेले गए
यह मूल्यांकन पूरे chess के लिए नहीं, बल्कि उसी सीमित variant के लिए है
वाकई शानदार! मैंने इस प्रोजेक्ट को HN Arcade में जोड़ दिया है
HN Arcade लिंक