leopardgeckoのブログ

Macの関連事項など

日本語版ローグ(Rogue 5.4)for macOS よもやま話 その7。<カスタマイズ>

以前の記事で公開したMac用日本語版ローグ(Rogue)についての雑談です。

頻回のアップデートで申し訳ないのですが、バージョン027をリリースしました。今回の主な機能追加は背景色の設定を変更できるようになったのと、ゲーム終了時には自動でウインドウを閉じたりターミナルを終了したりするようになったことです。CUI版はインストール時のオプションを追加して、背景を変更しなかったりカーソルを常に表示するバージョンでインストールすることができるようにしてみました。以下、それぞれの機能について私見を述べます。

背景色について

f:id:leopardgecko:20171026144452p:plain

当初背景を黒に決め打ちしていたのは、カラー表示する時に背景が白だとかなり見にくくなってしまうためです。Macのターミナルはデフォルトが白背景ですから、それをどうするかというのが問題でした。背景色を変更するオプションを追加しようかと考えたこともあったのですが、基本方針として元のソースコードをいじるのは最小限に留めたいという考えがありました。ターミナルの環境設定をいじれば済む話ではあるのですが、デフォルトで背景が白になるのは何とかして避けたいと思いました。そこで結局起動時に背景を黒にする機能のみを加えたのですが、これで良いのだろうかという疑問はずっと感じていました。

つい最近AppleScriptでターミナルの背景色を変更できることを知り、元のソースをいじらなくてもいけることがわかりましたので今回の機能追加となりました。GUI版に機能を加えるのはAppleScriptを書き換えるだけですから簡単ですが、問題となるのはCUI版の方です。CUI版にどういう形で背景色の設定を盛り込むかと考えた結果、インストール時のオプションで選べるようにしてみました。背景の設定をコロコロ変える人はあまりいないでしょうし、変えたいと思った時でもHomebrewならば再インストールするのは簡単です。CUI版を使う人ならオプションを指定してインストールすることに対して敷居の高さを感じる人は少ないでしょう。

ゲーム終了時の動作について

先週のアップデートでゲームが終わった後にも繰り返し遊べる機能をつけました。また、今回ではゲームを終了した時には自動的にウインドウを閉じる機能を加えました。ターミナルで開いているウインドウがjRogueだけの場合はターミナル本体も終了します。なるべくスタンドアロンのアプリっぽい動作にしつつ、ターミナルへの影響を最小限に留めるための仕様です。

どちらも当たり前の機能のようですが、AppleScriptでやるとなると案外面倒なのです。繰り返し遊ぶ機能のためにAppleScriptの中でシェルスクリプトをループさせるという構造になっています。また、AppleScriptで普通にウインドウを閉じたりアプリを終了させようとするとどうしてもターミナルのアラートが出てしまうので、それをどうやって避けるのかが問題でした。結局、AppleScriptの中のシェルスクリプトからさらにAppleScriptを呼び出すという3重の入れ子構造になってしまいました。その点に興味がある方はjRogueのパッケージを開けてスクリプトを見てください。(その部分は入れ子構造のスクリプトが一行で書いてあるので、ものすごく見にくいですが・・・)

ゲームオーバーになるとウインドウを手動で閉じてまた起動しなければならないのはGUI版の致命的な欠陥だと思っていましたので、これでようやく普通に遊べるアプリになったかなと思います。

カーソルについて

これまであまり触れなかった話題です。オリジナルのRogueではプレイヤーの位置でカーソルが表示される仕組みになっているのですが、jRogueではそれをあえて表示しないようにしています。というのは、Macのターミナルのデフォルトの設定のままカーソルを表示させるとカラー表示の時に肝心の「@」が見にくくなりとても格好悪い感じになってしまうのです。
昔のRogueのプレイ動画を見るとカーソルはアンダーバーで点滅表示になっていましたので、昔の端末ではカーソルを表示しても「@」が見えなくなってしまう状態にはならなかったのかもしれません。Macのターミナルでもカーソルの設定を変えればアンダーバーかつ点滅表示にすることが可能です。実際にやってみたところ、当然ながら「@」が見にくくなることはないですし、見た目もなかなか格好良いのです。

f:id:leopardgecko:20171026154358g:plain

しかし残念ながらAppleScriptではターミナルのカーソル設定で変更できるのは色の表示だけであり、アンダーバーに変えることはできません。そこで苦肉の策として、CUI版ではインストール時にカーソルを表示するオプションを選べるようにしてみました。興味がある方はCUI版をカーソル表示ありでインストールして、カーソルをアンダーバーかつ点滅表示にしてみてください。それがおそらく本来のRogueのプレイ画面です。

ローグのカスタマイズについて

本来オリジナルローグの外観はとてもシンプルなものであり、あちこちカスタマイズする要素を加えるのは邪道かもしれません。しかしローグにはとても長い歴史があり、様々な機種に移植された際の細かな違いが存在します。ローグがどういうものかというイメージは人によって結構な違いがあるものでしょう。自分が昔やりこんだスタイルを再現したい人、オリジナルなのだから元の形にこだわりたい人、自分なりの美しいスタイルにこだわる人、細かいところはどうでもいいから楽しく遊びたいという人などなど、色々なパターンがあるだろうと思います。ローグを配布している者の端くれとしてはそういう様々なニーズに応える必要があるのではないかなと思っています。

しかしスティーブ・ジョブズの信奉者としてはあえてシンプルな形に留めておくのにも意味があるとも思っており、その兼ね合いをどうするのかが悩ましいところです。