TIS-100でCPUの気持ちになるですよ

SpaceChemでおなじみ? のZachtronicsがこの度Steam早期アクセスにTIS-100というゲームを発表しました。

パズルゲーム? ……正直怪しいところです。パズル要素はたしかにあるものの、まるっきりプログラミングそのものです。まあジャンル分けの話題はそこそこにして、雑感を交えながら遊び方を説明していきます。

マニュアル

ゲーム中にESC→「VIEW THE TIS-100 MANUAL」でマニュアルが閲覧できます。
マニュアルは実際の古い端末の操作説明書を意識した作りになっており、プリントアウトしての利用が推奨されているようです。
当然全部英語ですが、有志による日本語訳がこちら→http://steamcommunity.com/sharedfiles/filedetails/?id=454245453&insideModal=1 で公開されています。

ゲーム中にF1キーで命令セットの一覧も出ます。

とりあえず遊んでみよう

最初は「SELF-TEST DIAGNOSTIC」だけが提示されています(クリアで問題が増えます)。クリックして問題を選択し、続けて左上の「CREATE NEW PROGRAM」を選択して入力画面に移ります。

……よく言えば硬派ですが悪く言うととっつきにくい画面です。とりあえずマニュアルを見ながら動作を確かめてみました。


左側にIN.Aと書かれている数字のリストがあります。これが画面中央上の「IN.A ↓」と呼ばれるポートから順に入力されます。


この問題は「IN.Aから読み込んだ値をOUT.Aに出力せよ」らしいです。
入力したデータをOUT.Aのポートに出力するよう各ノード(画面に12個ある四角の処理単位)の処理を書いてみましょう。
(ただし、この問題で赤くなっているノードは使えません。右上経由か左下経由で出力にデータを送ることになります。)


「上のポートから読み込み、右のポートに渡す」は「MOV UP, RIGHT」になります。この調子で各ノードに命令を書いてみましょう。

左下の「RUN」または「FAST」で計算処理が開始されます。お題を満たしたらクリア。
デバッグ用に「STEP」をぽちぽちクリックするのも効果的です。

クリアしたら、プレイヤーの回答の統計画面が表示されます。上から順に「計算に要したサイクル数」「計算に使用したノード数」「計算に使用した命令数」です。この問題は単純なので全くばらけていませんが、難しくなるにつれて自分の回答とランキングとの差違が際立ってきます。これどうやって実現したの? と首を捻るようなものも。

単なるクリアに満足せず、各性能を改善させるという遊び方もまた一つの楽しみです。

難しいですか?

わりと。


私は多少はプログラムの心得はあるもののアセンブリ言語の経験はなく、また、命令セットも貧弱なためちょっとした操作ではまったりすることが多数でした。
アセンブリ言語をバリバリ書ける方なら楽勝なのかもしれませんが……


現在7問目の「SEQUENCE COUNTER」までクリアしたもののこの時点でかなり一杯一杯になっています。どんどん難しくなるのでどうなることやら……
まあ、値段分は楽しめることでしょう。