-
-
Notifications
You must be signed in to change notification settings - Fork 2
Code graph ja
English | 日本語
実験的な機能です。 フレームワーク 1.4.0 で入ったもので、この先のバージョンで変わったり、無くなったりするかもしれません。
コードのグラフは、ゲームのコードを図にして見せるものです。メソッドのブロックと分岐、そこから呼ぶもの、読み書きするフィールド、誰のパッチが付いているか、どのイベントからそこへ来るかが見られて、呼び出しをクリックすればそのメソッドが開きます。dnSpy を使わずに「どこに差し込めばいいか」「このメソッドがほかに何を触るか」を知りたい Mod の作り手向けです。Inspector の Code 表示を、行の一覧ではなく図にしたものだと思ってください。
この PC の Bridge が出しているページで、Windows では専用の窓に、それ以外ではブラウザーに表示されます。
1 つのメソッドについては、次のものを見せます。
- メソッドの基本ブロックを、順に並べます。各ブロックには、呼ぶメソッドや読み書きするフィールド、何を比べて何を返すか(あるいは投げるか)といった、そのブロックですることが言葉で書いてあります
- ブロックの間の矢印が分岐で、true/false、case n、loop back、catch、finally のラベルが付きます
- 呼ぶメソッドは、それを呼んでいるブロックの中に並びます。ゲームのメソッドはクリックで開けますが、Unity と .NET のメソッドは出すだけで開きません
- 呼び出し元として、そのメソッドを呼んでいるゲームのメソッドも出ます。基底のメソッドを通して呼んでいるものも、through とその基底のメソッドの名前を付けて並べます
- そのメソッドに付いている Harmony の prefix、postfix、transpiler、finalizer も出ます。持ち主の Mod は、Harmony の ID だけでなく、Mods 画面に出る名前で示します
- 読み込まれたシーンの中の UnityEvent のリスナーと Unity のメッセージのうち、そのメソッドにつながるものも出ます
- コルーチンや
asyncのメソッドは、コンパイラーが作る隠れたクラスをたどって、その中身をメソッドの本体として描きます。yieldやawaitの 1 つ 1 つが、ラベル付きの矢印になります
1 つの型については(型の表示)、メソッドを Update などの Unity のメッセージ、public、private のまとまりごとに並べて、その間の呼び出しを線でつなぎます。クリックすると、そのメソッドが開きます。
描くのはゲーム自身のコードと、そのスタジオや作者のライブラリです。Unity や .NET、同梱されたライブラリ、Mod 自身のコードは描きません(Mod は、そのパッチとして出てきます)。
次のものが要ります。
- Developer tools がオンになっていること(Options → Mods → Drag'n Wash ModFramework)。
-
Inspector と Bridge のライブラリが入っていて、Bridge がオンになっていること。F1 の窓の Bridge タブの Turn on(または Console で
bridge on)でオンにできます。オフのままだと、Graph のボタンに Bridge が要ることが出ます。
そのうえで、ゲームの中では次のように開きます。
- F1 → Inspector → オブジェクトを選ぶ → コンポーネント → Code → メソッドの Graph。Graph が出るのは、ゲーム自身のメソッドだけです。
- 同じ Code 表示の Type graph を押すと、その型全体の型の表示が開きます。
Console からも開けます。
-
op bridge.page.open focus=m:<メソッドの ID>でメソッドが開きます。ID は名前空間.型::メソッド(引数の型,...)の形で書きます。 -
op bridge.page.open focus=t:<型>で型が開きます。 - focus を付けずに
op bridge.page.openとすると、ページが検索の画面で開きます。
Bridge がオンの間は、ゲームの窓がほかの窓の後ろにあってもゲームが止まらないので、グラフはすぐに答えを返します。
開く場所は、設定の [Bridge] OpenPageIn(Mods 画面では Drag'n Wash ModFramework: Bridge → Settings → Open the code graph in)で選べます。
| 値 | 開く場所 |
|---|---|
App(既定) |
Windows では、専用の窓 CodeGraph.exe。Bridge の CodeGraph フォルダーに入っています。 |
Browser |
既定のブラウザー。 |
アプリがないときや Windows 以外では、いつもブラウザーで開きます。ブラウザー用のリンクは自動でサインインしますが、使えるのは 1 分以内に 1 回だけです。期限が切れていたら、F1 の窓からもう一度開いてください。Steam Deck では、デスクトップモードのブラウザーで開きます(まだ試していません)。
CodeGraph.exe は、ブラウザーと同じページを専用の窓で見せるアプリです。
- 3 秒ごとに、ゲームが応答するかを確かめています。ゲームが閉じている間は Waiting for the game と出して待ち、ゲームが戻ってくると、見ていたメソッドのまま自分でサインインし直します。
- 窓は 1 つだけです。開いているときにもう一度 Graph を押すと、同じ窓にそのメソッドを出して、窓を前に持ってきます。
- Keep on top(ページのヘッダーにあるボタンで、アプリの中にだけあります)を押すと、窓をゲームやほかの窓より上に置いたままにできます。
- 窓の大きさと位置、Keep on top、詳細の欄の幅、結果の欄をたたんだかどうかは覚えておきます。Windows のアプリがダークのときは、タイトルバーも暗くなります。
- Steam はこのアプリをゲームの一部とは数えないので、ゲームを閉じたのに Steam では「実行中」のまま、ということにはなりません。
- この窓で開けるのは、Bridge のページだけです。
ヘッダーには左から Results、← / →、検索欄、Fit、それにアプリでは Keep on top が並んでいて、その下に結果、グラフ、詳細の 3 つの欄があります。
- 検索するときは、型やメソッドの名前の一部(たとえば
DragonやUpdate)を打ちます。Enter を押せばすぐに検索し、結果をクリックすると開きます。 - ← と → で、開いたものを戻ったり進んだりできます。
- グラフの中は、背景をドラッグして動かし、マウスホイールで拡大・縮小します。矢印キーでも動かせます。Fit(または F キー)で、グラフを窓に合わせ直せます。
- ブロックをクリックすると、詳細の IL の中でそのブロックに印が付きます。
- 詳細の欄には、メソッドの型とシグネチャ、それにアセンブリ、Unity message、coroutine または async、patched のタグが出ます。ほかに Whole type(型の表示)、Patches on it、Called by(呼び出し元をクリックすると開きます)、Events that lead here があり、IL もブロックごとに出て、印の付いたブロックまでスクロールします。コルーチンの隠れたメソッドでは、Open the coroutine's method で、それを始めるメソッドに戻れます。コルーチンの中の紫の破線の矢印は、
yieldやawaitのあとで再開するところです。 - 詳細の欄の幅は、グラフと詳細の間の線をドラッグして変えます(線にフォーカスして、左右の矢印キーでも変えられます)。幅は覚えておきます。
- Results ボタンで、結果の欄をたたんだり出したりできます。これも覚えておきます。
New token や Disconnect all を押したときと、Bridge をオフにしたときは、ページがサインアウトします。F1 の窓からもう一度開いてください。
-
ページだけで、MCP には出しません。 グラフを読めるのはページ(と Console の
op)だけで、MCP で Bridge につないだ AI クライアント(Bridge)からは見えません。ゲームのコードは、この PC の中から出ません。 - 見せるのは構造で、ソースではありません。 C# への逆コンパイルはしません(それは今までどおり dnSpy や ILSpy の仕事です)。ページが見せるのは、ブロック、呼び出し、フィールド、パッチといった構造です。
- この PC の外には何も出ません。 ゲームのコードは Gator Dragon Games が作ったものです。そのどこも、ファイルに書き出したり、この PC のページ以外に送ったりはしません。ページ自身も、インターネットから何も読み込みません。
Players
Mod authors
- Getting started
- Playing well with others (the guide)
- Going online
- Installer
- Mod reload
- Overrides (no code)
- Graphs (no code, makes things happen)
Tools (F1, developer tools)
- Inspector
- Console
- Code graph
- Bridge (AI clients, MCP)
API
日本語
- ホーム
- プレイヤー向け · ランチャー · FAQ · クラッシュレポート
- はじめての Mod · ほかの Mod と一緒に動かす · 外と通信する Mod · インストーラー · Mod の再読み込み · Overrides · Graphs
- Inspector · Console · コードのグラフ · Bridge
- 中核 API · 操作の登録簿 · Text · Dialogue · Tool window · Assets · Flags and saves · GameEvents · SettingMeta
Links
- Repository
- Releases
- Changelog
- Design records: DESIGN · ROADMAP · CONTENT_POLICY