ぽっかめろん

ゲームとかプログラミングとか

OneShotをmacOS上でプレイする

OneShotをmacOS上でプレイする方法をメモしておきます。 良いゲームなのでみんな買おうね!

store.steampowered.com

以下の手順はネタバレを含む気もするので可能であればバイナリ公開を目指します。

ゲームのデータファイルのダウンロード

Steamで購入した後、SteamCMDなりwineなりを使ってゲームファイルをダウンロードし、$HOME/Library/Application Support/Steam/steamapps/common/OneShot以下に配置します。 SteamCMD - Valve Developer Community

ゲームエンジンのビルド

OneShotはmkxpというフリーのRPGツクールクローンを改造したものをエンジンとして採用しています。

github.com

さらに、ここからフォークしてmacOS上で起動できるようにしたフォークであるsynglechanceが存在します。

github.com

一方、synglechanceは一部のゲーム機能が動作せず、完全なプレイは不可能です。そこで、synglechanceからフォークしてそれらの機能を実装しました。

github.com

ビルド時の注意点としては、SDL_soundが特殊なものであること、Rubyにパッチを当てる必要があることです。この2つのライブラリのコンパイルは以下のコマンドで行えます:

$ make -f make-thirdparty.mak

残りの依存ライブラリはhomebrewなどを利用して入れることができます。その後、以下のコマンドを実行することでビルドが可能です:

$ ./make-oneshot-mac.sh

Journalのビルド

OneShotが正常に動作するためにはJournalも必要になります。こちらもオープンソースでの再実装(途中)が公開されているので、きちんと動作するようにフォークしました。

github.com

ここで、pip上のpyinstallerはpyqt5と相性が悪いので、修正バージョンをインストールする必要があります:

$ pip3 install https://github.com/bjones1/pyinstaller/archive/pyqt5_fix.zip

また、Journal用の画像を_______.exeから取り出す必要があるのですが、この実行ファイルはupxによって圧縮されているので、展開した後に抽出する必要があります。

$ brew install upx
$ upx -d _______.exe

展開後にResourcesExtractなどをwineで起動し、ビットマップをimagesディレクトリに抽出、pngに変換してからpyinstallerでバンドルにします。

www.nirsoft.net

$ python3 renameandconvert.py
$ pyinstaller journal.spec --onefile --windowed

出来上がった_______.appも$HOME/Library/Application Support/Steam/steamapps/common/OneShot以下に配置します。

あとはOneShot.appをダブルクリックすると起動します。