プリンセスコネクト!Re:Diveを覇瞳天星する

プリンセスコネクト!Re:Diveを"覇瞳天星"して、リソースを閲覧する。

PrincessToolの紹介

Windows上で良い感じにリソースを覇瞳天星するアプリを制作中です。

GitHubからソースコードが閲覧できます。GitHub Releasesからバイナリをダウンロードできます。

自己責任でお願いします。

iOSはないとして、Androidも多分rootedじゃないとファイル閲覧できないのでDMM版前提で。

リソースの場所

リソースには主にふたつ種類がある。

初期リソース
ゲーム自体をインストールしたときに入ってるリソース。
Android版なら.apkファイルを解凍して出てくる。
DMM版ならpriconner\PrincessConnectReDive_Dataにある。
ダウンロードリソース
ゲームを開始したあとにダウンロードして追加されるリソース。
Android版は/data/data/jp.co.cygames.princessconnectredive/files/にある(要root化)。
DMM版ならC:\Users\user\AppData\LocalLow\Cygames\PrincessConnectReDiveにある。

プリコネRで使われている技術

  • Unity - ゲームエンジン。C#(Mono)でスクリプティングわよ! MonoのおかげでWindowsでもiOSでもAndroidでもクロスビルドできるわよ!
  • CRIWARE - ミドルウェア。独自規格による音声・動画の圧縮(+暗号化)、それのデコードライブラリとか。起動時に左下にロゴがある。
  • SQLite - データベース。リソースのファイル名管理に使われているよ!

取り出せるリソース

中線引いてある項目はまだ検証中……。

  • ADVパートテキスト - メインストーリー、キャラストーリーのテキスト ←先駆者はいる。多分バイナリなので自分でパースしてやる必要あり。僕はめんどうなのでパス。
  • 画像 - キャラ画像、エフェクト、GUI部品など
  • 動画 - スキルカットイン、ストーリーアニメ、ガチャ演出など
  • 音声 - BGM、SE、ボイスなど
  • その他 - フォント、3Dモデル、アニメーション

使うツール

  • DB Browser for SQLite - SQLiteのデータベース閲覧に必要。
  • VGMToolbox - 動画の変換。独自規格からMPEGにするやつ
  • AssetStudio - 画像はこれで。これだけでなんとかなる……。
  • vgmstream - 音声。foobar2000プラグインであり、そのまま.adx.acb.awbファイルを開いて聴ける。test.exeを使えばfoobar2000を使わずとも変換が可能だが、あくまでもテスト用でマルチトラックを自動で処理できないので非推奨。
  • foobar2000 - 上のプラグインを使う音楽プレイヤー。WASAPIで聴けたり別フォーマットへの変換機能も備えていて普段使いでも良いと思う……。

データベース閲覧

database.dbはリソースのファイル名と、ファイルのハッシュ値が記録されてる。ここでファイルの整合性チェックが行われるはず。ファイルが欠損してたり、中身がすり替わったりしててもちゃんと再ダウンロードして正しくゲームプレイができるようになってる。画像置き換えて遊ぶのは難しい?(起動時に全部の画像を読み取ってるわけじゃないので確証はない)

使い所としては、すべてのファイルのハッシュ値を出してデータベースと照合、リネームとか……。

リソースの覇瞳天星

初期リソース

画像

初期リソースにはタイトル画面のロゴ、ボタンなどが収録されてる。

パスはpriconner\PrincessConnectReDive_Data\data.unity3d

AssetStudioで読み込んでプレビュー、エクスポート可能。

動画

初期リソースには初期のオープニング動画が収録されてる。

priconner\PrincessConnectReDive_Data\StreamingAssetsフォルダ内にデータがあって、view_title.usmが初期オープニング、view_splash.usmがCygamesスプラッシュ画面。

VGMToolboxでMPEGフォーマットに変換可能。「Misc. Tools」→「Stream Tools」→「Video Demultiplexer」を開き、Formatを「USM (CRI Movie 2)」に変更。

このソフトで変換すると、.adx形式の音声ファイルが出力(ひとつないし複数)されるので、後述の「音声」と同様の方法で変換してやる必要がある。オープニングのBGMとか、「Cygames」、「プリンセスコネクト!Re:Dive」のタイトルコールなど。

音声

初期リソースには基本的な効果音が収録されてる。

priconner\PrincessConnectReDive_Data\StreamingAssetsフォルダ内にデータがあって、preinstall.acbがそれ。preinstall.awbにはダウンロード中のBGM。

foobar2000で開けばそのままトラックが展開されて再生できる。

トラックを右クリック、「Convert」→「Quick Convert」からfoobar2000の機能を使い別フォーマットへ変換可能。

test.exeを使い場合は、test.exe <filepath>でwavファイルが生成される。複数トラックがある場合は-s NでN番目のトラックを指定できる。

G:\info\Desktop\test>test.exe G:\info\Desktop\test\preinstall.awb -s 1
decoding G:\info\Desktop\test\preinstall.awb
sample rate: 48000 Hz
channels: 2
(中略)
bitrate: 255 kbps
stream count: 3
stream index: 1
stream name: bgm_M36_02_division
samples to play: 8729260 (3:01.860 seconds)

その他

priconner\PrincessConnectReDive_Data\data.unity3dからいろいろ取り出せる。

ダウンロードリソース

ダウンロードリソースはちょっと複雑で、そもそもファイル名がハッシュ化されているので中身を把握しづらい。これを解決するには実際にファイルのハッシュ(MD5)を調べて、それをデータベースで検索して同じハッシュ値の行からファイル名を取得してリネーム……という作業が必要になる。が、正直面倒なので適当にそれを自動化するツールを作った方が吉。

わざわざリネームせずとも一部のリソースに関してはソフトウェア側で書き出すときに名前を割り当ててくれるのであんまり気にしなくてもいいかも。

フォルダでジャンル毎に分かれてる。

a
いろいろ。大半が画像。
b
BGM。
lpfi
Android版のみ存在。お気に入りキャラによる通知をONにした場合の、通知に表示されるアイコンが収録される。
m
動画(Movie)。
manifest
データベースに書き込む前のマニフェスト? データベースにはダウンロード済のファイルのみ記録されていて、このフォルダのファイルではあとからダウンロードするファイル(イベントストーリー動画など)の情報も載ってる。
s
効果音(SE)。
v
ボイス(Voice)。

それぞれのフォルダにtフォルダが作成されていることがある。多分これは一時ファイルでダウンロードして観るストーリがここに追加されているはず。ゲームの仕様通り再起動すると消滅する。

画像

やり方は初期リソースと同様。そのままaフォルダを読み込んでOK。ただしフォルダの中身が多く、AssetStudioで読み込むとメモリをバカ食いする。16GBあるけどすべて読み込むとPCが落ちることもあるので注意されたし。別のフォルダに移してから何回かに分割して読み込みすると良い感じ。AssetStudioを使うとファイル名が復元される。

動画

やり方は初期リソースと同様。これはファイル名が復元されないので自分でリネームしてやる必要アリ。動画ファイルなのでエクスプローラー上でサムネイル観れるから、そのままmフォルダをまとめて変換してやっても良いと思う……。

音声

やり方は初期リソースと同様。が、foobar2000は拡張子が書かれてないと読み込みしてくれない。なので.awbと拡張子を付けてやる必要がある。bvフォルダには同名の.awb.acbファイルがあるが、必要なのは.awbファイルのみ。

後日リネームするツールを作ってみる予定。


さいごに

はい、お疲れ様。