Closed4

Oculus Quest版Beat Saberのmod開発について調べたこと

nazo6nazo6

準備

PCに入れておくもの

  • beatsaberで使用されているバージョンのUnity(現在最新バージョンの1.13では2019.3.15)
  • Android SDK (というかadb)
  • Android NDK
  • SideQuest (wifi adbを使うため。別になくてもいい)
  • 好きなエディタ(vscodeを使ったけどもっといいのがあるのかな・・・?)

Questに入れておくもの

  • BMBF導入済みbeatsaber (あたりまえだけど)
nazo6nazo6

基本的にはsc2adという方のgithubを見るのが良い。大体この方が作ったものを使う。

ライブラリ

  • beatsaber-hook

https://github.com/sc2ad/beatsaber-hook

beatsaberが何か処理をする前に好きな動作を注入できる要となるライブラリ

  • modloader
    beatsaber-hookをビルドするのに必要だったけどbeatsaber-hookのバイナリを拾ってくればいらないはず?
  • BeatSaber-Quest-Codegen

https://github.com/sc2ad/BeatSaber-Quest-Codegen

beatsaber-hookではメソッドを呼び出すのに文字列で呼び出さないといけなかったりするがこれを使うといい感じに呼び出すことができる。自動生成されているらしい。
こちらのバイナリにbeatsaber-hookが付属していたのでbeatsaber-hookをビルドする必要はない、はず。まだ使っていない。

nazo6nazo6

作る

まずどこかからひな形としてプロジェクトを持ってくるのがよい。自分は上のmodのプロジェクトを使ったけどどのmodも同じような感じだからどこかにテンプレートがあるのかも?

主に手順としては

  1. ndkpath.txtにndkのパスを記述
  2. bmbfmod.jsonをいい感じに書き換える
  3. ライブラリのバイナリとヘッダーファイルをextern/以下に入れる
  4. Android.mkをいい感じに書き換える
  5. 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にクローズされました