カテゴリー
技術

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

カテゴリー
ゲーム

オリジナルZorkのソースコードがMITにより公開される

往年のテキストアドベンチャーゲーム Zork の1977年のソースコードが、MITにより発見されて公開されました。

MIT の説明によれば、1973年から1990年前半にかけての人工知能研・計算機科学研のバックアップテープから復元したデータが収集されているそうで、今回はその中から1977年のZork のソースコードが見つかったというわけ。

コードを見てみるとこんな感じ。


<GDECL (FF) STRING>
<DEFINE ILO (BODY TYPE NM1 NM2 "OPTIONAL" M1 M2)
#DECL ((BODY NM1 NM2 M1 M2) STRING (TYPE) FIX)
<COND (<==? .TYPE *400000000000*>
<COND (<OR <AND <MEMBER "<FLUSH-ME>" .BODY>
<NOT <MEMBER ,XUNM ,WINNERS>>>
<AND <MEMBER .NM1 ,WINNERS>
<MEMBER ,FF .BODY>>>
<EVAL <PARSE .BODY>>)>)>
<DISMISS T>>

;"ROOM FUNCTIONS"

往年のメインフレーム機 PDP-10 上で動くLISP系のMDPという言語だそうです。

2019年の4月にGitHubで公開された「Zorkのソースコード」と何が違うかですが、この時公開されたコードは、後に Zork を商用化(1979)して販売したインフォコム社が買収の後閉鎖された1980年代終わりに、社内のソースコード管理システムから取り出されたものなのに対し、今回のコードはInfocom 以前の MIT 時代に メインフレーム PDP-10 の上で動いていたものだということ。

(image Michael L. Umbricht, Wikimedia)

Infocom 版 Zork コードの発見者として知られるインターネット考古学活動家のジェイソン・スコット氏(Jason Scott)も早速、MIT のコードを fork しています。Zork ファンや Zork 研究者による調査がさらに進むのでは。

via Hacker News

カテゴリー
ネットのサービス

民主社会主義シミュレーター – アメリカ初の民主社会主義者大統領を遊ぶゲーム

Democratic Socialism Simulator(民主社会主義シュミレーター)は、「もしも民主社会主義者がアメリカ大統領になったとしたら?」というifの世界をプレイするゲームです。

この民主社会主義の大統領というのが、民主党の大統領候補を争うバーニー・サンダース氏を念頭に置いているのは明らかですね。

ゲーム中のプレイヤーは、正確には、民主社会主義者の大統領個人ではなくその陣営を支える人々の集合体を演じることになります。

UIは有名な出会い系アプリTinderの方式を真似たもの。選択肢に対して左右どちらかのスワイプを行うことで意思決定したことになります。

画面の下には、様々な有権者を模したキャラクターが配置されています。各キャラクターをタップすると、そのキャラクターが何を重要と考えて投票しているかを見ることができます。

政策を判断して実行するたびに、それぞれのキャラクターが支持に近づくか、あるいは不支持に回るかが変化していきます。

左下は、議会の支持状況や次の大統領選までの残り時間を示します。右下の3つのバーは、陣営の資金力、人民のパワー、そして温室ガス効果をそれぞれ表します。温室ガス効果は0に下げることがゴールだそう。

プレイしてみましたが、これがなかなか難しい。リベラルな政策をあまりに理想的に推し進めていくと、富裕層やメディア、外国との関係などが悪化して支持者が離れて行ったりします。課税や出費先の選定と国庫のバランス取りにも繊細な判断が要求されます。初回は残念ながら4年目の選挙で負けてしまい、2期目を続けることができませんでした。

それぞれの政策と、その政策によって何がどう変わるかというデータはこちらのスプレッドシートで公開されているので、より勉強したければこれを読むのが良さそうです。notes のところには、その政策の結果起こる影響の根拠となる資料へのリンクなどが書かれています。

リリースノートでは、ゲームの設計背景にある考え方などについて、さらに詳しく書かれています。

Linux版、MacOS版、Windows版、Android版が存在し、価格は$2.99(220円) 。

選択肢や選択結果による影響のパラメータには、当然ながら作者の思想が反映されています。ですので、ゲームでそうなるから実際にも必ずそうだ、なんてことはどうしても言えません。他の政治的信条のある人が同様のゲームを作れば、施策に関する反応がまったく違ったものになることも多いでしょう。そこを理解した上で、ですが、為政者の立場になって判断し、その結果を追体験できる、というのはゲームのシュミレーション性をうまく使って社会的な問題への興味を喚起するよい方法の一つなのではないかと思います。

via The Verge