0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ステラソラのプリセットコードをデコードする

0
Posted at

概要

ステラソラでパーティ構成と素質構成をプリセットコードとして共有できるようになりました。そこで、プリセットコードがどのような仕様なのか調べてみました。

デコードツール

下記のリポジトリで実際にデコードできますので、興味ありましたらご参照ください。

  • ツール

  • リポジトリ

仕様

プリセットコードは base64 でエンコードされた文字列で表現されています。
("A"が多いことから、base64でエンコードされた文字列であると推測可能)

AAAAbgAAAJUAAACbwpgFhS4wAimzLmIYCaMu

まずは base64 でデコードし、バイト配列に変換します。

# バイト配列を二進数表記
000000000000000000000000011011100000000000000000000000001001010100000000000000000000000010011011110000101001100000000101100001010010111000110000000000100010100110110011001011100110001000011000000010011010001100101110

そして、以下のビットフィールド仕様に沿ってパースします。

# 項目名 オフセット 長さ 型 ビット配列 値
1 主力キャラクターID 0 32 int 00000000000000000000000001101110 110(フィレン)
2 支援1キャラクターID 32 32 int 00000000000000000000000010010101 149 (グレイ)
3 支援2キャラクターID 64 32 int 00000000000000000000000010011011 155(シア)
4 主力メイン素質 96 4(1×4) int[] 1100 1,1,0,0
5 主力サブ素質 100 36(3×12) int[] 001010011000000001011000010100101110 1,2,3,0,0,1,3,0,2,4,5,6
6 支援1メイン素質 136 4(1×4) int[] 0011 0,0,1,1
7 支援1サブ素質 140 36(3×12) int[] 000000000010001010011011001100101110 0,0,0,2,1,2,3,3,1,4,5,6
8 支援2メイン素質 176 4(1×4) int[] 0110 0,1,1,0
9 支援2サブ素質 180 36(3×12) int[] 001000011000000010011010001100101110 1,0,3,0,0,2,3,2,1,4,5,6

キャラクターIDの対応表

ID 名前 ID 名前 ID 名前 ID 名前
103 コハク 118 クルニス 133 ナツカ 149 グレイ
107 ティリア 119 ナノハ 134 フユカ 150 ラール
108 カシミラ 120 カナーチェ 135 ミスティ 155 シア
110 フィレン 123 アンズ 141 チーシア 156 ナズナ
111 アヤメ 125 フリージア 142 コゼット 158 ラール(聖夜)
112 セイナ 126 フローラ 143 レイス 159 クルニス(華服)
113 シーミャオ 127 テレサ 144 チトセ
116 レイセン 130 トーナ 145 オトハ
117 ジンリン 132 ミネルバ 147 キャラメル

サブ素質の順序について

「ゲーム上の表示順」と「デコードされた値の並び順」が一致していません。

例えば下記のように素質を表示順に取得してみます(サブ素質はlv1~lv6を順番に設定)。

StellaSora Screenshot 2026.04.19 - 22.31.41.09.png

StellaSora Screenshot 2026.04.19 - 22.31.48.22.png

StellaSora Screenshot 2026.04.19 - 22.31.53.83.png

この状況下でデコードすると、各素質は下記の値となります。

# 項目名 ビット列 値
1 主力メイン素質 1100 1,1,0,0
2 主力サブ素質 001010011000000001011000010100101110 1,2,3,0,0,1,3,0,2,4,5,6
3 支援1メイン素質 0011 0,0,1,1
4 支援1サブ素質 000000000010001010011011001100101110 0,0,0,2,1,2,3,3,1,4,5,6
5 支援2メイン素質 1010 1,0,1,0
6 支援2サブ素質 001000011000000010011010001100101110 1,0,3,0,0,2,3,2,1,4,5,6

ここから分かることは

  • メイン素質はUI上の表示順とビット位置が一致する
  • サブ素質はUI上の表示順とビット位置が一致しない

つまり、各サブ素質は固定のビット位置を有しており、それは表示順とはまた別に管理されていますので、仮に正確なデコードを実装するにはサブ素質ごとのビット位置を調査する必要があります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?