カテゴリー
ゲーム

Human Chess – コンピューターの最善手を打ったら負けという独自ルールのチェス

Human Chess(人間のチェス)は、チェスのボードとルールと、チェスを打てるコンピューターを組み合わせた新しい亜種ルールの提案です。

そのルールとは「トップエンジン(コンピューターによる強いプレイヤー)の評価する最善の手を打ったら負け」というもの。実際には、対戦相手の打った手を「最善手では?」とチャレンジし、その手が本当にコンピューターが最も評価する手であれば相手の負け、チャレンジが間違っていたらチャレンジした側の負け、というもの。

提案ページにある2つの棋譜を見ると、1局目はほんの5手で終わっています。白がクイーンによって相手のキングを強襲し、キングがクイーンを取る以外に逃れる方法がないために、クイーンを取る手が最善手となってしまって決着、ということですね。

普通のチェスのルールであれば無謀な特攻にしか見えませんが、コンピューターの考える最善手を避け、相手に最善手を取るしかない状況に追い込むというまったく違った展開のゲームとなるようです。また、チェックメイトは最善手なので、チェックメイトを掛けた瞬間に相手にチャレンジされたら負けとなりますね。

あとは「双方の初手は例外(=トップエンジンの指し手と一致しても負けにならない」のと、「トップエンジンが二つ以上の手を最善と評価していた場合は、どの手であっても負け」というルールがあります。

チェスが強い人はコンピューターの最善手も当てられることが多いでしょうし、強い人が有利なことには変わりはないのかなとも思います。

via Hacker News

カテゴリー
技術

1978年のチェスアプリSargonを現代に蘇らせるプロジェクト

billforsternz/retro-sargon は、Intel 8080/Zailog Z80 で1978年に書かれた Sargon というチェスプログラムを、x86 に移植するという個人プロジェクトです。

参考までに、こちらは1983年に発売されたCommodore 64版 Sargon 2 の画像。

Z80のエミュレーターで動かすのではなく、Z80ベースのプログラムをx86(32bit)に変換しています。

x86 に移植された Sargon は、Chess GUI にこのエンジンをセットすることで対戦できるということです。作者おすすめのTarrasch Chess GUI を使って対戦してみました。

チェスでは人間が遊んだりコンピューター同士の対戦を表示するためのGUI部分が規格化(UCI)されているのですね。エンジンとGUIを別々にいろいろな人が開発していて、組み合わせて対戦させたり、人間が遊んだりできる。

オリジナルのSargon では探索の深さが最大で6に決められていたそうですが、移植後は最大で20階層に、状況に応じて読みの深さを自動で調整するようにしたとのこと。CPUの速さや使えるメモリ量が、昔のコードそのままでもずっと強いプログラムに変化させたわけです。

作者の @billforsternz 氏は、8080→x86のコンバーターと、8080→Z80→x86のコンバーターの二つを作り、変換結果が等しくなることを確認もしているということ。オリジナルの8080のコードに対する不満点から、Z80 に変換したものを起点としたいようなことも書かれています。当時のCPUの解説の中ではNECのV20などにも言及されています。

Readme に書かれた詳細がとにかく細かく、作者のこだわりが感じられます。Sargon はアセンブラ的にもメモリ利用の点でも変換しやすい作りだということ。他の色々な8080/Z80のプログラムが同様に移行できるわけではないかもしれませんが、愛着のある昔のプログラムがある人は、趣味としてこういう遊び方もあるんですね。

via Hacker News

カテゴリー
ネットの事件

Chess.com のiPhone版が32bitオーバーフローで動かなくなる

オンラインのチェス対局コミュニティChess.comのスマートフォン版が、プログラムのバグによって動かなくなる事件が発生していたそうです。

13日に公式フォーラムでiOS版ユーザーから「動かない」という声が上がりはじめ、開発チームが調査したところ、これまでにchess.com 上でプレイされたゲーム回数が 21億回を超えていたことが判明。正確には 2,147,483,647 回越えで、プログラマーならピンとくると思いますが、2^31, 符号付き32bit整数の最大値です。

サイト全体が動かなくなったのではなく、2013年以前のiPhoneを使っているユーザーだけに不具合が起こっていたので、運営もなかなか気づけなかったということ。運営ではみんなが新しいiPhoneを使っていたんですね。

32bit版のiOSを使う古いiPhone や iPad では、chess.com サーバから送られてきた JSON の解釈が、なぜか元と異なる値になってしまっていた、と。

開発チームは、クライアント側の修正とサーバ側の修正の2案を用意しましたが、テストチームのテストを通した後、ハック的でその場しのぎなサーバ側の修正は反映せず、Appleのアップストア側のアプリを新バージョンに更新することで修正としたそうです。

記念すべきオーバーフローを最初に引き起こした対局がこちら

Hacker News やIT系のニュースで多く取り上げられたことで、「これまでの対局が21億回もある」という点がクロースアップされ、サイト的には良い宣伝にもなったようです。

via Hacker News