2020年6月5日金曜日

Raspberry Pi で ROBLOX という世界的に有名なゲームを実行

  • 環境
本体:    Raspberry Pi 4B
OS:     Raspberry Pi OS → LineageOS 16.0

  • ROBLOXとは
私はハードウェアよりもソフトウェア寄りな人なので、
Raspberry Piを入手して真っ先に試したのがROBLOXを動かす事だった^^

ROBLOX とは世界的に有名なオンラインゲームプラットフォーム。
どちらかというと子供向けであるが、ゲームの内容によって
ものすごく作り込まれたゲームもあったりするので、
大人がやっても面白い。
逆にヘビーなゲーマーでなくてもお手軽にできる点が
いいのかもしれない。

最近はメニューとかも日本語化されたようなので
日本人ユーザも見かけるようになってきた。

(脱線) 
アジアで言うとフィリピンと韓国のユーザが多いように感じる。
※フィリピンはタガログ語で会話している人、韓国人はハングル文字を
使ってるユーザで観察した、あくまで私の感覚値。
フィリピン人は英語ができてしまうので、ゲーム中でも普通に英語を
使ってる人も多数いるはずで、そうするとフィリピン人の潜在ユーザは
もっと多いはず。(ご存知の通り文化的にもアメリカナイズされているので
このゲームもみんな普通にやってる。)
それ以外にはベトナム語やタイ語をたまに見かける。ごく稀に中国語を
見たが繁体字だったので台湾人だろう。
(我是變態とか言ってて笑ってしまった。誰も分かるまいとでも思っていたのだろう。)
(簡体字の国は情報統制でできない?あ、ハングルの北の方は言うまでもないですね。。)
(脱線終わり)

  • 結論
最終的にRaspberry Pi上でもROBLOXを動かす事がきた。
ただし、OSはLineageOSというものに入れ替えた。
LineageOSとはAndroidをベースとした、スマートフォンや 
タブレット用のフリーでオープンソースなオペレーティングシステムである。
LineageOS:フリー百科事典『ウィキペディア(Wikipedia)』 (2020年4月25日 (土) 09:21 (日時は個人設定で未設定ならばUTC)版より)

 LineageOSの公式版ではRaspberry Piは動作対象となってないが、有志が提供して
くれたりするのでRaspberry Pi + LineageOS で検索すればすぐに見つかる。

詳しい手順はみなさんが書いてくれているので、ここでは実際にやってみた
ときの補足説明を書いておく。

まずはLineageOSの作業としては、Raspberry Piとは別のマシン上での操作。
・LineageOSイメージをダウンロード
・新しいSDカードを用意して専用ソフトでLineageOSイメージを書き込み
・SDカードをRaspberry Pi に入れて起動
となる。

次にPlay Storeの追加。LineageOSにはデフォルトではPlay Storeが
入ってないので追加する必要がある。
これも手順(英語)があったので、それに従って実行。
流れ的には
・Play Store追加用イメージをダウンロード
・TWRP recoveryモードで再起動
・Play Store追加用イメージのインストール
・TWRP recoveryモード解除して再起動

まずPlay Store追加用イメージをダウンロードであるが、LineageOS上の
ブラウザでダウンロードできると思うが、私は別マシンでダウンロードして
Android Studio付属の「adb」コマンドでRaspberry Piに転送した。
( adb push コマンド)


次にTWRP recoveryモードで再起動であるが、LineageOS上で以下を実施。
・開発者モードをONにする。(Androidと同じ操作)
・ローカルターミナルをONにする。
・ローカルターミナルappを起動して 以下を実行。
su
rpi4-recovery.sh
・再起動
 
次にPlay Store追加用イメージのインストールであるが、 上記で再起動すると
TWRPが起動する。
そのメニューの中に「install」があるので、最初の手順でダウンロードした
ファイルを選択してインストールする。

正常に完了したら本来はTWRPメニューの Wipe → Factory Reset をするべきだが、
私はこの手順を飛ばしてしまった。しかし特に問題はなかった。

最後にTWRP recoveryモード解除して再起動は、TWRPメニューの
「Advanced」にterminal があるので起動して、以下のコマンドを実行。
rpi4-recovery.sh boot
bootが見つかりません見たいなエラーが出たら、TWRPメニューの
Mount → Boot にチェックをつけてから再実行。

これでRaspberry Piを再起動すれば Googleアカウントとか聞かれて
ログインすればPlay Storeが使えるようになる。

あとは普通にPlay StoreからROBLOXをインストールするだけ。

めでたくRaspberry Pi上でROBLOXが実行できた!
が、残念ながら実行速度はかなり遅い。

アーキテクチャ的にはRaspberry PiのARM CPU上で、ARM用の
LineageOSが動作し、その上で(当然ARM構造の)Robloxが動作
しているので、アーキテクチャ的には問題はない。
(他の試行と違ってエミュレータなどを挟んでない、という意味。) 
 
Raspberry Piのマシン的な限界なのだろう。

どれくらい遅いかというと、ROBLOXの人気ゲーム「Tower of Hell」で
最初の階段を登って、最初のブロックに飛び乗ろうとするが
ラグがひどすぎて飛び乗れずに諦めたくらいの遅さであった^^ 

  • 調査の経緯
最終的にはLineageOSで実現できたのだが、そこに行き着くまでの
経緯も簡単に書いておく。

Raspberry Pi + ROBLOXで調べ始めて最初に出てきたのは「wine」
つまりWindows用 roblox.exe を linux上で動作させましょうという発想。

しかしこれだけだとアーキテクチャの問題が出てくる。
roblox.exe は x86 だけど、Raspberry PiはARMということ。

そこで出てくるのが「ExaGear」。これはeltechsという会社が作ってた
もので、x86をARM上で動かす仕組み。
有償で、動作にはライセンスが必要。
ただしネット上の情報によれば現在はMicrosoft社に買収されたようで
現在ではExaGearは取得できなくなっていた。

他には「qemu」「box86」など。
調査の結果、どこかの記事で「エミュレータでx86をarmには変換できるが
WindowsというOSひっくるめた環境上で動くアプリケーションを
動かすのはまた別の話」みないたところに行き当たって、あぁ
確かにと思った。
そこまでクリアするとなると、かなり壮大な話になってくる。 

そこから発想を切り替えて、幸いROBLOXはWindows用、Mac用、
ios用、android用といろいろなプラットフォーム用に作られているので
Raspberry PiのARMアーキテクチャに一番近いAndroidでいけるんじゃ
ないかと行き着いたわけである。

私はゲーマーではないが、たまたま手持ちのAndroidスマホで
唯一遊んでるゲームがROBLOXだったので、Raspberry Piでもできないかな?
せっかく大画面のPCモニターもあるんだし、くらいの発想で
トライしてみた。

「WindowsのゲームもRaspberry Piで遊べないかな?」という発想では
ないので、ご注意いただければと思う。

2020.12.11 追記
「Arm用Windowsでx64エミュレータ実装版が公開」のニュースを目にした。
これって正しく ExaGearを作っててMicrosoft社に買収されたeltechs社に
よる実績だったんじゃないかと思った^^
たしかにこんなことがサードパーティでやられたら、Mirosoft社としては
何かと大切なところを削がれてしまうので買収したのだろうかな。。

0 件のコメント:

コメントを投稿