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」までクリアしたもののこの時点でかなり一杯一杯になっています。どんどん難しくなるのでどうなることやら……
まあ、値段分は楽しめることでしょう。

DCSS Webtile試験サーバについていろいろ

この記事は Roguelike Advent Calendar 2014 の2日目の記事ですでした。*1

■DCSS Webtileサーバとは

前の記事([id:dlusplus:20140501])で書きましたが、現在Dungeon Crawl Stone Soupというローグライクゲームのオンラインプレイサーバを運用しています。7か月とは早いものでいろいろありました。

このサーバはさくらのVPS上で動作しています。元々land.toが重くなったのに耐えられなくなりWebサイトを移転したものですが、こうしてゲームサーバを立ち上げるのに役立ったかと思うと、まあ色々と巡り合わせというものはあるということでしょうか。

↑のURLにアクセスすることで、画像のようなゲーム画面がブラウザ上に表示され、そのまま遊ぶことができます。
また観戦機能・チャット機能もついており、他プレイヤーのプレイ内容を見てみたり、逆にアドバイスを受けることも可能です。*2


ローカルでプレイするのも十分楽しいですが、オンラインで他のプレイヤーのプレイ内容を覗いてみるのもまたよいものです。
「この人のスコアすごいな」「えっ、こんな組み合わせアリなの?」など、普段のプレイから離れた遊び方の模索の助けとなるでしょう。

■オフィシャルサーバーになったよ

DCSS開発メンバーのPleasingFungus氏から声をかけていただいて、Official serversの末席に加えていただけることとなりました。

現時点ではCAO鯖のプロフィールページとの連携がされています。→例:http://crawl.akrasiac.org/scoring/players/dplusplus
ゆくゆくはトーナメントイベント参加とかもしてみたいですね。

■今後の課題

自動ビルド&デプロイ

現在の手順としては、人の少ない時間帯にサーバを止めてアップデートなりなんなり、という手順をとっています。しかし最近無理も出てきたので、自動でビルドしてサーバーにデプロイするような機構を考えたいものです。

GCC 4.8.x系でのビルド

現在の最新trunkではビルドの際にg++ 4.8を必要とするようです。しかし、gcc-4.8.1/g++-4.8.1を導入した状態でも現状ビルドエラーが出るため、現在アップデート停止状態です。
なんとか原因なり対処法を見つけてアップデートを再開したい。解決しました。

ドメイン

現在ddo.jpの無料期間が延長フェーズになっており、月にいくらかのバナー表示で無料になる状態です。しかしこれもずっと続くわけではなさそうです。
有料プランへ以降となれば月500円と、単なるドメイン取得としては割高な金額ですのでそうなったら適当なドメイン取って移るかなーと思っています。
まあすぐにどうこうという話でもないので保留状態。

■プレイヤーの方にお願い

なにか不具合が発生した際は何らかの形でレポートしてもらえるとありがたいです。
その時、プレイヤーidも添えていただけると解決が捗ります。
(「新規登録プレイヤーがゲーム開始できない不具合」という大ポカに長いこと気付けなかった前科がありますので……)

媒体はtwitter,メール*3,当blogコメント欄などなんでも結構です。可能な限り対処します。

■おしまい

「古典的」というような印象のあるローグライクゲームですが、こうして今時のブラウザ環境を生かして遊び方を共有できるようになると、まだまだ楽しみ方にも幅が出てくるのかなという気はします。

DCSSだけにとどまらず、他のゲームについても模索してみたいものですね。

*1:大遅刻きめてしまい誠に申し訳ありません……

*2:ゲームプレイや観戦中のチャット発言にはユーザ登録が必要。見るだけなら登録無用

*3:sulpsulpd なると gmail.com

Dungeon Crawl Stone Soupサーバ試験公開

最近、Dungeon Crawl Stone Soup(以下DCSS)というローグライクゲームにはまっています。
とはいえ、一番初心者に手っ取り早い(はずの)脳筋ミノ戦士でもなかなか攻略が捗らず、脱出*1までどれくらいかかることやら……


さてこのDCSSですが、Web上でサーバを公開してオンラインプレイをできるようにするコードが配布物に含まれており、現在でもいくつかの公開サーバが動いています。現状国内で動いているサーバがないようなので、試験的に建ててみました。

メリット:
  • 海外鯖に繋ぐよりラグが少ない(かも)
  • 管理者に日本語が通じる(多分)
デメリット:
  • 外国人とのプレイ観戦など交流がしにくい
  • 管理者が(色々な意味で)素人


まあ需要とかは不明ですがぼちぼちやっていこうかと思います。
要望その他は当blogコメントとかtwitter @dplusplusまで。

TODO:
  • ダンプ出力先の設定変更 ロビーからdump一覧に飛べるようにした
  • ロビー画面での生い立ち・種族表示などの有効化
  • trunkと0.14その他の共存
  • ゲーム中dumpコマンドを押した際のチャットメッセージ更新機能
  • telnet or SSHでのアクセス
  • rcs/ttyrecs/* が肥大化する問題への対策 ほぼ済
  • 更新時の手順整備
  • dump一覧をトグル操作で畳めるようにする
  • HPゲージの表示周りの不具合について調査
  • *.map,*.lstを閲覧しやすくする
  • セーブデータ移行確認画面の実装について調査
  • ログ監視での自動エラーチェック手段を整える

*1:「ゾットのオーブ」を持ち帰ること。このゲームの最終目的

JNetHack FHSpatch 0.8.26+20140213をUbuntu Linux 12.04 LTSでとりあえず動かす

サクシャ氏が開発しているJNetHack FHS patchが最近更新されていたのでUbuntu Linuxで動かしてみました。
ついでにUnNetHackからuse_darkgrayパッチを拝借して適用しました。

事前にいるもの

  • git, build-essential, nkf, flex, bison, libncurses-dev

適宜apt-getしてください。

ソースコード等ダウンロード

http://sakusha.s26.xrea.com/x/FHS/FHS.html から「試験版 ver0.8.26+20140213版 全ソース」をダウンロードし展開します。

% ls
ChangeLog.j  INSTALL.j  README    dat/         doc/      include/   src/  util/
Files        Porting    README.j  default.css  fhs_doc/  japanese/  sys/  win/

文字コードおよび改行コードを変換します。

 % find -type f -print | xargs nkf -Sed --overwrite

FHSpatch 0.8.26+20140213用darkgray patchをダウンロードし、パッチを当てます。

% wget https://gist.github.com/dplusplus/9035018/download -O darkgray.tgz
% tar zxf darkgray.tgz
% git apply -p1 gist*/*.diff

Ubuntu Linuxでのコンパイルのための謹製一括置換スクリプトを走らせます。

% git clone git://github.com/dplusplus/nhconfigure
% ./nhconfigure/nhconfigure.sh

あとはmake && sudo make installで動くようになるかと思います。(出力文字コードEUC-JPな点に注意)

% fhspatch

後でUTF-8対応パッチも試してみます。

UnNetHack その3

いろいろやっていた秩序人間ワルキューレは地下25階で分解ブレスに分解されました。


最近Slash'EMばっかやってたので黒ドラゴンなめてたかな。
UnNetHackでは倉庫番の景品で反射の魔除けが高確率で取れる*1ので次回は留意しましょう。


さて次はキャラメイク何にしようかな。

*1:正確には、軽量化の鞄・反射or命or遠視の魔除け・魔法を防ぐor幻影のクロークの3つから選べる

UnNetHack 5.1.0 その2

現在B25Fまで到達。

分岐「Town」

B9Fに上り階段が生成された。川を水上歩行で抜け、さらにもう1階あがったところに集落的な店の集まりが。めぼしい物は特になし。

分岐「The Ruins of Moria」

B17Fに上り階段が生成された。B11Fまで上がっていくらしいが、途中に待ち構えるDurin's bane(デュリンの禍)がだいぶ強いので保留。

分岐「One-eyed Sam's Market」

Slash'EMのブラックマーケット的なもの。バリエーションが色々あるようで、今回は以下のようなマップになった。強盗はちょっと厳しそうだ。


現在の主な装備

  • 魔除け
    • 水中呼吸の魔除けor遠視の魔除け
  • 武器
    • +2小さな盾
    • +0古い手袋(おそらく器用さの小手)
    • +0Tシャツ
    • +0ドワーフミスリル
    • +0水上歩行の靴
    • +0魔法を防ぐクローク
  • 指輪
    • 瞬間移動制御 or 自由行動 or 透明
  • 道具
  • 宝石
    • 祝福された幸せの石


引きは悪くないが、昇天確定なほど強くもない。まあぼちぼちいこう。

UnNetHack 5.1.0

UnNetHack 5.1.0がリリースされていたのでさっそく手元のPCにインストールして遊んでみました。

鉄板のValkyrie-Human-Lawでまずお試し。と思ったら祭壇がそこらに生成されるわ、#offerでグレイスワンダーが下賜されるわで一気に昇天も夢ではない状態になってきましたよ。


全体的にUIが便利になっています。menucolorsパッチ、statuscolorsパッチを取り込んだ結果でインベントリやステータスラインが見やすい。まああんまり慣れすぎるとvanillaに戻ったときに辛いのだけど。


あ、あとCtrl-Eで「床にElberethを書く」コマンドが追加されてたのはちょっと面白かった。


現在鉱山と倉庫番を制圧して、Townへの分岐にさしかかったところ。
また大きな進捗があり次第ぼちぼち書いていきます。

インストールメモ

autotools対応になってるので./configure && make && make install の簡単インストールになっています。
ウィザードモード用のアカウント指定したい人は./configure --enable-wizmode=hogehogeで。


オプションに--prefix、--exec-prefixを指定しない場合、/usr/local/ 以下にインストールされる模様です。まあこれはいじらなくてもいいか。


起動時に.nethackrcが読み込めないよ! とエラーが出る場合、.unnethackrcのパーミッションが読み込み可になってないか、ホームディレクトリのグループ内パーミッションがg-xになってるのが原因です。
vanillaだとg+xは要求されなかったように思いますが……まああとで気が向けば確認してみます。