アトーの日記

スマブラ DX プレイヤーのアトーが日記を書きます。

cpu-level-11 を動かしてみた

cpu-level-11 -- それは、新時代のハッカブル CPU

Kounotori さんのツイート見て知った。

スマブラ DX でキャラクターの入力をプログラミングできるらしい。

基本のアーキテクチャは dolphin でスマブラ DX を動かす & cpu-level-11 のバイナリを実行 -> dolphin 内のメモリを監視、ソケット通信で cpu-level-11 が読む -> ユーザープログラムがコントローラー入力を名前付きパイプで送信 -> キャラが動く! というものみたい。

凄くね???

メモリ監視でほぼすべてのゲーム内状態が取れて、コントローラー入力によって人間できる入力は全て入力できる……夢が広がるな! ソース見たところ、メモリ監視もコントローラー入力も十分に抽象化されてて使いやすそう。これは流行る。

というわけで起動してみた。

若いプロジェクトがすんなり動くわけもないだろ

REAME に Ubuntu で動かしてね、とあったので、VirtualBox仮想マシン作成。普通に Ubuntu をイントール。 いつもどおり。

次にこれまた README に dolphin の master ブランチビルドしろよ、とあったので、dolphin のソースコードをダウンロード。 dolphin のソースコードが重く、git clone が完了しなかったのでシャローコピー。git clone --depth=0 ... master ブランチをビルドしたいだけだからこれでよい。

次に dolphin のビルド。dolphin のドキュメントを見たら CMake であとは勝手にどうぞ、って感じだったので CMake 実行。 依存パッケージが足りない、と何度も言われるので、その度にネットで調べて apt-get install をする。 面倒だったし、本当に正しいかわからないけど、とりあえず apt-get だけで解決したからいいや。 OpenGL やその他諸々が足りないと言われます。

CMake 完了したら make。待つだけ。。。 そして sudo make installしたら完了! dolphin が起動できるようになりました。

dolphin の起動は ubuntu のアプリランチャーから起動すると実行ユーザーが違うのか、/usr/local/shared/.dolphin-emu/ 以下に設定ファイルが作られて困るので、 コマンドラインから起動するべし。/usr/local/bin/dolphin-emu にインストールされてるからパス通ってる。

DX の ROM をホストマシンから持ってきて、無事起動を確認。

cpu-level-11 の README に従って、~/.dolphin-emu/MemoryWatcher/ に Location.txt をコピー、~/.dolphin-emu/Pipes/ に cpu-level-11 という名前付きパイプを作成。 MemoryWatcher と Pipes というディレクトリはないのでちゃんと mkdir してあげる。

あ、cpu-level-11 のバイナリ自体も作成する必要があるので、make する必要あり。特に README には書いてないけど、ここらへんはお約束。

README に従って DX を起動、./cpu を実行、マルスを選ぶんだけど……特に反応無し。ここからが結構詰まった。。。

(この記事は動かせた後から書いているため、時系列がバラバラですが、ここで詰まってからソースコードを読み始め、大体のアーキテクチャを把握)

どこにも書いてなかったんだけど、dolphin の設定で、コントローラーの入力ソースに作成した名前付きパイプの Pipes/cpu-level-11 を指定する必要がある。 +各ボタンの対応の設定も必要。えー知らねー

設定が終わって、再度起動し直すと、キャラ選択画面に入ったら 2P が勝手にカーソルを動かしてフォックスを選択。なかなか見れない光景。 対戦が始まったらダブラ撃ちまくるフォックス。 そして転がりには見てから余裕の上スマ。Level 11 だ……。

これで DX がプログラミングできるようになりました。これ未来には本当にプレイできる環境で俺の考えた最強の CPU を実装できるのかもしれないね。