Closed4
Oculus Quest版Beat Saberのmod開発について調べたこと
きっかけ
だが基本的なことはちょっとわかったのでまとめる
準備
PCに入れておくもの
- beatsaberで使用されているバージョンのUnity(現在最新バージョンの1.13では2019.3.15)
- Android SDK (というかadb)
- Android NDK
- SideQuest (wifi adbを使うため。別になくてもいい)
- 好きなエディタ(vscodeを使ったけどもっといいのがあるのかな・・・?)
Questに入れておくもの
- BMBF導入済みbeatsaber (あたりまえだけど)
基本的にはsc2adという方のgithubを見るのが良い。大体この方が作ったものを使う。
ライブラリ
- beatsaber-hook
beatsaberが何か処理をする前に好きな動作を注入できる要となるライブラリ
- modloader
beatsaber-hookをビルドするのに必要だったけどbeatsaber-hookのバイナリを拾ってくればいらないはず? - BeatSaber-Quest-Codegen
beatsaber-hookではメソッドを呼び出すのに文字列で呼び出さないといけなかったりするがこれを使うといい感じに呼び出すことができる。自動生成されているらしい。
こちらのバイナリにbeatsaber-hookが付属していたのでbeatsaber-hookをビルドする必要はない、はず。まだ使っていない。
作る
まずどこかからひな形としてプロジェクトを持ってくるのがよい。自分は上のmodのプロジェクトを使ったけどどのmodも同じような感じだからどこかにテンプレートがあるのかも?
主に手順としては
- ndkpath.txtにndkのパスを記述
- bmbfmod.jsonをいい感じに書き換える
- ライブラリのバイナリとヘッダーファイルをextern/以下に入れる
- Android.mkをいい感じに書き換える
- src/main.cpp以下にいろいろ書き換える
Android.mkは正直よくわかってないがとりあえず以下のようにした
Android.mk
# ライブラリを追加
include $(CLEAR_VARS)
LOCAL_MODULE := beatsaber-hook_0_8_4 # ライブラリの名前
LOCAL_EXPORT_C_INCLUDES := extern/beatsaber-hook # ヘッダーファイルがあるところ?
LOCAL_SRC_FILES := extern/libbeatsaber-hook_0_8_4.so # バイナリのパス
include $(PREBUILT_SHARED_LIBRARY)
# 略
# 最後のセクションっぽいところに
LOCAL_SHARED_LIBRARIES += beatsaber-hook_0_8_4 #先ほど指定した名前
LOCAL_CFLAGS += -DVERSION='"1.0.1"' -DID='"アプリ名"' -I"libil2cppのパス(例: C:\Program Files\Unity\Hub\Editor\2019.3.15f1\Editor\Data\il2cpp\libil2cpp
あとは気合
VSCodeのincludePathの指定がよくわからない
このスクラップは2020/12/18にクローズされました