2 ポイント 投稿者 GN⁺ 2026-02-16 | 1件のコメント | WhatsAppで共有
  • 2KBサイズで動作する 軽量チェスエンジン で、制限されたルール内で完全なゲーム進行が可能
  • 120セルのメールボックス盤面ネガマックス探索アルファベータ枝刈り などの中核アルゴリズムを含む
  • 駒価値ベース評価(material-only eval)キャプチャ優先(move ordering) 方式を使用
  • キャスリング、アンパッサン、昇格、反復、50手ルールなどは 未実装
  • 1170〜1200 Elo水準の性能 を示し、2KB以下のコードでチェスエンジンを実装した事例 として注目される

プロジェクト概要

  • Sameshi は 制限されたルールをサポートする極小チェスエンジン で、コード全体のサイズは約 1.95KB にすぎない
    • 主要ファイルは sameshi.h で、読みやすい版は readable/sameshi.h に含まれる
    • GitHub リポジトリには main.cMakefile.gitignore なども併せて提供されている
  • デモ動画 が YouTube に公開されており、実際の動作を確認できる

中核構造 (core)

  • エンジンは次の6つの主要構成要素から成る
    1. 120セルのメールボックス盤面構造
    2. Negamax 探索アルゴリズム
    3. Alpha-Beta 枝刈り
    4. 駒価値ベース評価(material-only evaluation)
    5. キャプチャ優先(move ordering)
    6. チェック・チェックメイト・ステイルメイトを含む完全な合法手検証
  • 未実装機能 として、キャスリング、アンパッサン、昇格、反復、50手ルールが明記されている

性能 (strength)

  • 1170 Elo 水準と評価され、95%信頼区間は 1110〜1225 Elo
  • Stockfish (1320〜1600 レベル) との240局の対戦結果を基に測定
  • 深さ5(fixed depth 5)最大60プライ制限ルール 条件でテストされた

技術的特徴

  • コード全体のサイズは 2KB未満 で、C言語 98.6%Makefile 1.4% で構成される
  • 軽量化とアルゴリズム効率 を極限まで高め、最小限のコードでチェスロジックを実装している
  • チェスエンジン(chess-engine)チェス(chess)デモシーン(demoscene) 関連トピックに分類される

リポジトリの現況

  • GitHub で スター143件フォーク5件 を記録
  • Issues、Pull requests、Projects、Security の各項目はすべて空
  • リポジトリの説明は「a ~1200 Elo chess engine that fits within 2KB」と要約されている

1件のコメント

 
GN⁺ 2026-02-16
Hacker Newsのコメント
  • 本当に素晴らしいプロジェクト。ステイルメイト機能があるのも良いが、ルール全体を実装するにはどれくらいの容量が必要なのか気になる
    作者が述べているように、キャスリング、アンパッサン、プロモーション、反復、50手ルールが欠けているなら、現代チェスと呼ぶのは難しいと思う
    小さなエンジンなら反復と50手ルールは省略できるかもしれないが、キャスリング、アンパッサン、プロモーションは必須だと思う
    1980年の Video Chess は4KB以内で完全なルールをサポートしていた
    なので、現在最小の UCI互換エンジン が何なのか気になる。それを上回る超小型の完全ルール対応エンジンを作るのは面白い目標になりそうだ
    ちなみに、1980年代初頭に私が使っていた Fidelity CC3 もキャスリングとアンパッサンをサポートしていた

    • ToledoChess には複数の言語で実装されたバージョンがある
      2KBのJavaScript版はキャスリング、アンパッサン、プロモーション、探索、GUIまで含んでおり
      326バイトのアセンブリ版には特殊ルールが欠けている
      UCI互換版はないが、GUIより実装は簡単そうだ。JS版のフォークの一部がその機能を追加しているかもしれない
  • 素晴らしいプロジェクト。GNU Chessのフロントエンドを活用すればコード行数を減らしてバックエンドだけ実装することもできそうだ
    バグ報告として、ポーンはすでに1マス動いた後は2マス前進できないのに b6b4 が許可される問題を見つけた

    • 指摘してくれてありがとうという返信をもらった。すぐにパッチを試す予定とのこと
  • チェスエンジン開発者が ELO推定 に最もよく使うツールは cutechess だ。内部的には SPRT を使っている
    別のツールとして Ordo もあるが、自分では使ったことがない

  • 1バイトあたり1 ELOを達成できるのか気になる。もっと小さくはできても、その分賢さは落ちるかもしれない

    • 本当に素晴らしい コードゴルフチャレンジ だと思う
    • かなり低いレーティング帯なら可能かもしれないが、実用的な水準ではすぐ限界にぶつかりそうだ
  • これはチェスというより チェスの駒を動かせるプログラム に近い。キャスリング、アンパッサン、プロモーション、反復、50手ルールが欠けているからだ

    • 長年 コンピュータチェス をやってきたので、こういう「チェス実装」という主張には慣れている
      ときどき極端に小さいサイズでチェスを実装したと主張するものがあるが、実際には重要なルールを省いている場合が多い
      本当に小さくて強いエンジンを探しているなら、x86アセンブリで書かれた asmFish(約130KiB)や、1000行程度の OliThink、そしてシンプルなCコードで強力な性能を出す Xiphos を勧める
      TCECに登場した4KBエンジンもあるが、その主張には脚注(*)が付きそうな部分があると思う
  • Toledo小さいがかなり強いチェスプログラム の系統だ

  • 私も最近、約400行の読みやすいコードで すべてのルールを含むチェスエンジン を実装した
    最初はJavaで作り、その後自作言語の Bau に移植した
    ターミナルUIまで含まれており、まだELOは測定中だが私は勝てなかった
    特に キャスリングの実装 が厄介だったが、挑戦そのものが楽しかった
    Bau言語のチェスコード を参照

    • なぜBauには unsigned数値型 がないのか気になるという質問があった
  • Stockfishがキャスリングをしようとする対局をどう扱ったのか気になる。キャスリングは非常によく出る手なので、それをサポートしないとエンジンの強さを評価するのは難しいと思う

    • キャスリングのせいで捨てた対局はなかった。代わりに、Stockfishがキャスリング、アンパッサン、プロモーションをできないよう 合法手フィルタリング を適用した
      そのため、すべての対局は同じ「キャスリングなしの変則チェス」として進行した
      この評価は完全なチェスではなく、その制限付きバリアントに対するものだ
  • 本当に素晴らしい! このプロジェクトを HN Arcade に追加した
    HN Arcadeリンク