どこに出すか
mod ごとに独自の設定ウィンドウを作る(これまで)
ゲーム本来の Options 画面にページを足す(その後)
一時停止や入力の扱いはゲームに任せられ、見た目も SULFUR のままです。プレイヤーは、いつも開く画面で設定を見つけられます。
mod ごとにバラバラの設定ファイル(これまで)
ゲームのオプション画面にそろう(その後)
SULFUR Native UI Lib は、ほかの mod がゲーム本来の Options 画面に自分のページを足せるようにするライブラリです。SULFUR Config はその上に作った mod で、入れている mod の設定をゲームの中で見て、変えて、Apply で保存できます。
ダウンロード数とバージョンは Thunderstore(2026-10-26 時点)。前提にしている mod の数は 2026-10-26 に Thunderstore で確認。
設定を変えるたびに、ゲームを閉じる
mod の設定を変えるには、ゲームを終了して設定ファイル(.cfg)を手で書き換え、もう一度起動する必要がありました。mod ごとにファイルが分かれていて、どこに何があるかも探さなければなりません。
いつもの Options 画面で設定する
画面と設定を分けた理由
mod ごとに独自の設定ウィンドウを作る(これまで)
ゲーム本来の Options 画面にページを足す(その後)
一時停止や入力の扱いはゲームに任せられ、見た目も SULFUR のままです。プレイヤーは、いつも開く画面で設定を見つけられます。
設定の読み書きと画面を 1 つの mod にまとめる(これまで)
画面は UI Lib、設定の読み書きは Config(その後)
UI Lib は画面を描くだけで、設定ファイルには触れません。そうしておけば、画面の部品だけをほかの mod が使えます。
値を変えたらすぐに書き込む(これまで)
変更はいったん「保留」にして、Apply で保存する(その後)
各行に「変更なし/保留中/適用済み」が出るので、何がまだ保存されていないかが一目で分かります。
Config に対応させるには、Config を前提にしてもらう(これまで)
設定の説明に決まった言葉を書くだけで対応できる(その後)
「すぐ反映」「再起動が必要」「隠す」「危険」などを、BepInEx の設定に付ける Tags の文字列で伝えられます。Config を入れていない環境でも、その mod はそのまま動きます。
作るうえで苦労したこと
全 mod の設定を並べると 100 項目を超えます。値を 1 つ変えるたびにページ全体を作り直すと、数百行分の UI を毎回作り直すことになります。変わった行だけを、その場で書き換える作りにしました。
SULFUR は言語に合わせてフォントを切り替えますが、部品の元にしていたテンプレートはずっとラテン文字用のフォントでした。文字の大きさはテンプレートから、フォントはいま表示している画面から取るように直しました。
ゲームのフォントに漢字や ✓ のような記号がない時は、その場で OS のフォントから足りない文字だけを補います。フォントのファイルは mod に一切入れていません。
SULFUR の UI には文字の入力欄がありません。ゲームの見た目に合わせた入力欄を作り、カーソルや削除の動きも自分で組みました。
ほかの mod の土台になった