RaspberryPi Zeroを使って変愚蛮怒専用機を作った

これは?

f:id:inajob:20180902132057g:plain

f:id:inajob:20180902130755p:plain

変愚蛮怒変愚蛮怒 公式WEB )というローグライクRPGがあります。ローグライクRPGとは、いわゆる「シレン」や「トルネコ」の元となったゲームです。 特に昔ながらのローグライクRPGはテキストだけで画面が構成されているという非常に渋いゲームです。

f:id:inajob:20180902123907p:plain

一般的なRPGとは違い、死んでしまうと、そこで冒険は終わり。セーブデータには死亡回数が刻まれ、またレベル1からやり直すというハードなRPGです。 ゲーム内のキャラクタのデータはリセットされますが、プレイヤーはその経験を生かして次のプレイではより高いレベルまで成長できるという「プレイヤー自身が成長する」という感覚が魅力です。(と僕は思っています)

また、操作はキーボードを駆使して行います。装備変更は「e」食事を食べるのは「E」物を投げるのは「f」といった具合です。 そのため、スマートフォンやゲーム機に移植したものとは操作感覚が全然違います。やはりファンとしてはキーボードを使って操作したいところです。

ということで、変愚蛮怒専用機を作ることにしました。

材料

  • RaspberryPi Zero WH
    • WifiBluetoothが使える方のRaspberryPiZeroです。今回はBluetoothキーボードを使いたいのでWHのほうを選びました。

  • Raspberry Pi用の3.5インチ液晶
    • 解像度は480x320、SPI接続により映像信号を送るタイプです。(HDMI接続のモニタも試しましたが、HDMIケーブルの取り回しが難しくSPI接続のモニタにしました。 しかしSPI接続は転送速度が遅いので、アクションゲームなどには不向きです)

  • モバイルバッテリー
    • ダイソーの500円のモバイルバッテリーを用意しました。一般的なモバイルバッテリーは消費電力が少ないと電力供給をやめてしまうものが多いですが、このバッテリーはそのような動作をしませんでした。

【100均検証】ダイソーの500円モバイルバッテリー(3000mAh)を使ってみた結果…!! | ロケットニュース24 (この記事ではひどいこと言われてますが、このサイズ感は魅力です)

  • 3Dプリンタで作った筐体
    • 上記の部品を組み合わせた形がぴったりおさまる筐体を作りました。これはまだ改良の余地がありそうです。

Raspberry Piのセットアップ

RaspberryPiをセットアップして、変愚蛮怒が動作するようにします。

OTGケーブルによるPCとの接続

Raspberry Pi ZeroはOTG接続により、パソコンとネットワークを共有できます。 これによりWiFi接続などの設定をせずにパソコンからSSH接続でRaspberryPiを操作することができます。

この記事の情報を利用しました。 https://qiita.com/Liesegang/items/dcdc669f80d1bf721c21

液晶の設定

https://www.waveshare.com/wiki/3.5inch_RPi_LCD_(A) このページを参考にして、液晶の設定をします。 設定後、液晶をピンヘッダに接続して起動すると液晶画面にRaspberryPiの画面が表示され、タッチパネルも有効になります。

キーボードの設定

Bluetoothキーボードの設定はRaspberryPiのGUIから行いました。(コマンドでもできるはずです。) 一度ペアリングをしておくと、再起動後も引き続き有効のようです。

ここまで操作すると、PCからのSSH経由での操作の他にBluetoothキーボードでの操作もできるようになります。

簡素なGUIに変更

Raspberry Piの標準的なGUIは、便利ですが、変愚蛮怒専用機には不要です。 変愚蛮怒Xorg上で実行するつもりなのでXorgはそのままにして、session-managerとwindow-managerの設定を変更します。

  • /usr/bin/x-window-manager を消す(これは/etc/alternatives/x-window-managerを指していて、さらにopenboxを指しています)
$ sudo rm /usr/bin/x-window-manager
  • /usr/bin/x-session-managerを消す(これは /etc/alternativess/x-session-manager を指していてさらに /usr/bin/startlxde-pi を指しています)
$ sudo rm /usr/bin/x-window-manager

デフォルトのターミナルはlxterminalですが、これをxtermに変更しておきます。

$ sudo apt-get install xterm
$ sudo update-alternatives --config x-terminal-emulator
# /usr/bin/xterm を選択

$ sudo halt

ここで再起動すると、今までのGUIはどこかへ消え、真っ黒なターミナルが起動するようになります。

変愚蛮怒のビルド

変愚蛮怒Linux版はソースコードで提供されています。そのためビルドする必要があります。 必要なライブラリをインストールします。

$ sudo apt-get install libncurses5-dev libx11-dev libxt-dev 

変愚蛮怒をダウンロードして、ビルドを行います。 最新のリリースは https://ja.osdn.net/projects/hengband/releases/ で確認してください。

$ curl https://ja.osdn.net/projects/hengband/downloads/10331/hengband-1.6.2.tar.gz/
$ tar xzf hengband-1.6.2.tar.gz
$ cd hengband-1.6.2
$ ./configure
(略)
$ make
(略)
$ make install
(略)

EUC-JPロケールの追加

raspi-configを実行し、「4 Internationalisation Options」→「I1 Change Locale」を選択し、「ja_JP.EUC-JP EUC-JP」と「ja_JP.UTF-8 UTF-8」をスペースキーで選択します。 これによりEUC-JPロケールが追加されます。

12pxの日本語フォントの追加

320x480のディスプレイで変愚蛮怒を表示するには12pxのフォントが最適です。これをインストールします。

$ sudo apt-get install xfonts-mplus

起動用のシェルスクリプトの追加

起動のための設定をシェルスクリプトとして作成します。

#!/bin/sh

export LANG="ja_JP.eucJP"
export ANGBAND_X11_FONT='-*-*-medium-r-normal--12-*-*-*-*-*-iso8859-1,-*-*-medium-r-normal--12-*-*-*-*-*-jisx0208.1983-0'

unset LC_ALL
unset LANGUAGE
unset XTERM_LOCALE

./hengband -- -n

起動して、キーボードでboot.shを実行することで変愚蛮怒で遊ぶことができるようになりました。

3Dプリンタでの筐体の作成

3Dプリンタで筐体を作成します。本当はこういう平べったいものはレーザーカッターのほうが作りやすそうなのですが、、 Fusion360でそれっぽく作ってみました。

f:id:inajob:20180902130109p:plain

まとめ

今回は電子工作を全くせず、ただ買ったものを組み合わせただけでゲーム機を作成しました。 RaspberryPi Zeroは非常に小さいので、こういうものを作るのには適していると感じました。 最近は自作キーボードなども流行っており、さらにそれに液晶を組み合わせて、小型のPCを作るのが流行っているようです。今回はキーボードは既存のbluetoothキーボードを使いましたが、次は自分で超小型のキーボードを作って組み合わせてみたいなと思っています。

ともあれ、これで通勤中も変愚蛮怒が遊べます!

f:id:inajob:20180902130755p:plain