ECLIPTICA ACT

ECLIPTICA Advanced Combat Tracker

VRChat ワールド ECLIPTICA 専用の、戦闘ログ解析ダメージメーター & HUD オーバーレイです。 VRChat が書き出すログをリアルタイムに読み取り、与ダメージ・DPS・被ダメージ・死亡数・ヘイト対象を 集計して、ゲーム画面の上に重ねて表示します。

概要

ダッシュボード(メインウィンドウ)の全体像
ダッシュボード(メインウィンドウ)の全体像

できることは大きく 4 つです。

内容
リアルタイム集計 与ダメージ / 10秒 DPS / ラン平均 DPS / 被ダメージ / 最大クリティカル / 死亡数を自動で記録
HUD オーバーレイ ゲーム画面の上に半透明・クリック透過のパネルを重ねて表示(HUD オーバーレイ
パーティ共有 同じルームIDのメンバーと DPS をリアルタイム共有(お試し提供中 / パーティ共有
ラン結果の出力 全イベントを JSONL で書き出して後から再解析(ラン結果のエクスポート

VRChat 側には一切干渉しません。ログファイルを読むだけのツールで、ゲームへの入力もメモリ操作も行いません。

先に読んでください: ECLIPTICA の戦闘ログは、VRChat をデバッグログ有効で起動していないと 1 行も出力されません。VRChat 側の設定 が必須です。

動作環境

  • Windows 10 / 11(デスクトップモード推奨。VR でも動きますが HUD は見えません)
  • VRChat(Steam 版 / スタンドアロン版どちらでも可)
  • 追加のランタイム不要(単体 exe)

インストール

  1. 配布された Ecliptica ACT.exe を、書き込み可能な好きなフォルダに置きます (デスクトップやドキュメント配下など)。インストーラーはありません。
  2. ダブルクリックで起動します。初回は Windows SmartScreen の警告が出ることがあります。 その場合は [詳細情報]→[実行] を選んでください。
  3. 設定ファイルは %APPDATA%\dev.rtail.eact\ に作られます(設定リファレンス)。

アンインストールは exe を削除するだけです。設定も消したい場合は %APPDATA%\dev.rtail.eact\ フォルダを削除してください。

【必須】VRChat 側の設定

ここを飛ばすとアプリは何も表示しません。 ECLIPTICA の戦闘ログは Udon の Debug.Log として出力されるため、 VRChat をデバッグログ有効で起動していないとログファイルに 1 行も残りません。

1. 起動オプションを設定する

Steam 版の場合:ライブラリで VRChat を右クリック →[プロパティ]→[起動オプション] に 以下をそのまま貼り付けます。Steam 以外(ショートカットから起動している)場合は、 ショートカットの「リンク先」の末尾に半角スペースを空けて追記してください。

--enable-udon-debug-logging
オプション 役割 必須
--enable-udon-debug-logging Udon の Debug.Log をログファイルへ出力する。ECLIPTICA の戦闘ログはこれで出る 必須

必要なのはこの 1 つだけです。

2. ログ出力を最大にする

起動オプションに加えて、VRChat 内の設定でログ出力レベルを最大にしておきます。 VRChat のメニューから Settings → Debug を開き、ログ関連の項目を有効(最大)にしてください。

画像未撮影 / screenshot pendingVRChat の Debug 設定でログ出力を最大にする

3. 設定できたか確認する

エクスプローラーのアドレス欄に次を貼り付けて開きます。

%USERPROFILE%\AppData\LocalLow\VRChat\VRChat

output_log_YYYY-MM-DD_HH-MM-SS.txt という名前のファイルが並んでいるので、 一番新しいものをメモ帳などで開き、ECLIPTICA で少し戦闘したあとに ECLIPTICA - now in stage:Dealing ... damage という行があるか探してください。

  • 行がある → 設定完了です
  • 行がない / ファイル自体が無い → 起動オプションが効いていません。VRChat を完全に終了してから もう一度[1. 起動オプションを設定する]をやり直してください(困ったときは

使い始める

順番が重要です。必ず VRChat を先に起動してください。

  1. VRChat を起動して ECLIPTICA に入る。 アプリは起動時に最新のログから User Authenticated: 行を探して、 あなたのユーザー名を「対象ユーザー」に自動入力します。VRChat が起動していないと空欄のままです。
  2. Ecliptica ACT.exe を起動する。 右上に 監視中: output_log_....txt と出れば、ログの監視が始まっています。
  3. 戦闘する。 ダメージを与えると各数値が動き出し、HUD にも反映されます。

アプリは起動した時点より後に追記された行だけを読みます。起動前の戦闘は集計されません (過去のログを遡って二重計上しないための仕様です)。VRChat を再起動して新しいログファイルが できた場合は、アプリが自動でそちらに切り替わります。

ダッシュボードの見方

メインウィンドウは上から 4 段構成です。

ダッシュボードの各エリア
ダッシュボードの各エリア

フェーズ進行度

現在のフェーズ値・ステージ名・クラス名、ボス戦中はボス名を表示します。 右側の「ステージ死亡 / セッション死亡」は、それぞれ今いるステージ今の戦闘での死亡数です。

フェーズバー。到達済みの区間が明るく塗られる
フェーズバー。到達済みの区間が明るく塗られる

現在のラン パフォーマンス分析

12 個のカードで現在のランを要約します。

カード 内容
セッション 現在の戦闘(Mob / Boss / Rest)の経過時間
フェーズ時間 現在のステージの経過時間
ラン与ダメージ ラン全体の累計与ダメージ
10秒 DPS 直近 10 秒間に与えたダメージ ÷ 10(用語
ラン平均 DPS ラン累計ダメージ ÷ ラン経過時間。インターミッションも分母に入ります
被ダメージ ラン全体で受けたダメージ
ヒット / 被弾 与えた回数 / 受けた回数
最大クリティカル 最大の単発ダメージ。ログにクリティカル判定は無いので、その代用です
平均ダメージ/発 累計ダメージ ÷ ヒット数
最終ダメージ源 直近に自分へダメージを与えた相手
ヘイト対象 直近にヘイトが移った 敵 -> プレイヤー開発中 / HUD オーバーレイ
ラン死亡数 ラン全体の死亡数

セッション履歴ログ

ステージと戦闘が発生順に積み上がります。フェーズ 0 / 新規ラン の区切り行は、 そこから新しいランが始まったことを示します。

セッション履歴ログ
セッション履歴ログ

フェーズとラン

ECLIPTICA の進行度は 0.0 〜 1.0 のフェーズ値で表され、アプリはこれを 5 つの区間に分けて 表示します。区間の名前と色はアプリ側で固定です。

区間 フェーズ値
PRIME 0.0 – 0.2
PENUMBRA 0.2 – 0.4
ANTUMBRA 0.4 – 0.6
UMBRA 0.6 – 0.8
ECLIPSE 0.8 – 1.0

フェーズバーは、到達済みの部分が元の色、未到達の部分が暗く落とした色で描かれます。 HUD 側のコンパクトなバーとメインウィンドウのバーは同じ塗り分けです。

「ラン」の区切り方

アプリは フェーズ値が 0 に戻った瞬間を新しいランの開始と判断します。 「ランを開始した」という専用のログ行は無いため、フェーズの巻き戻りだけで判定しています。

新しいランが始まると、次がリセットされます。

  • ラン集計(与ダメ・被ダメ・死亡数・最大クリティカル・ヒット数)
  • DPS グラフの「長尺」ライン(DPS グラフ
  • 履歴テーブルに区切り行を追加

一方、セッション履歴とエクスポート用のイベントログはリセットされません。 アプリを起動してから閉じるまでの全ランが残ります。

HUD オーバーレイ

HUD は 5 枚の独立したウィンドウで、常に最前面・半透明・クリック透過(配置モード以外では マウス操作がそのまま VRChat 側に抜ける)です。

初期状態の HUD 配置(1920×1080 の画面に重ねた例)
初期状態の HUD 配置(1920×1080 の画面に重ねた例)
パネル 既定位置 内容
フェーズ HUD 左上 ステージ名・ボス名・コンパクトなフェーズバー(区間名と %)
ステータス HUD 右上 与ダメ / DPS / 被ダメ / 死亡 / クリ
DPS グラフ HUD 左下 3 本の時間スケールで DPS 推移を描画
ヘイト HUD 中央やや上 ヘイト対象。自分に来ていると赤い警告表示(開発中
パーティ HUD 右側 同室メンバーの DPS 表(既定は非表示)
フェーズ HUD
ステータス HUD。数字が伸びても隣の項目がずれない固定レイアウト
ヘイト HUD。自分がターゲットされている状態

ヘイト表示は開発中(WIP)です。 敵の所有権(オーナーシップ)が移った先をヘイト対象と みなす簡易的な判定なので、実際のターゲットと一致しないことがあります。表示を鵜呑みにせず、 参考程度に見てください。判定方法は今後変わる可能性があります。

表示の切り替え

設定ウィンドウ(メインウィンドウ右上の ⚙ 設定)から操作します。

設定ウィンドウ
設定ウィンドウ
  • HUD ウィンドウを表示 — すべての HUD をまとめて表示 / 非表示
  • オーバーレイ: の 5 つのチェック — パネルごとの表示 / 非表示。 パーティ HUD だけ既定でオフです(使う人だけオンにしてください)
  • HUD 背景 — 背景の角丸パネルを描くかどうか
  • 背景の濃さ — 背景の不透明度(0〜100%)。文字は常に不透明のままです

背景をオフにすると文字だけが浮きます。ゲーム画面をなるべく隠したくない場合はこちらです。

背景オフのステータス HUD
背景オフのステータス HUD

HUD の配置とサイズ

初期配置のままで困らなければ何もしなくて構いません。動かしたいときは 配置モードを使います。

  1. 設定ウィンドウの [配置モード(左ドラッグ=移動 / 右ドラッグ=リサイズ)] にチェックを入れる
  2. 各パネルに枠・名前・操作ヒントが出て、マウス操作を受け付けるようになる
  3. 左ドラッグで移動 / 右ドラッグでリサイズ(パネルのどこを掴んでも構いません)
  4. 位置が決まったら [レイアウトを保存]
  5. 配置モードのチェックを外して、クリック透過に戻す
配置モード ON。全パネルに枠と名前が表示される
配置モード ON。全パネルに枠と名前が表示される
配置モードのパネル。右下に操作ヒントが出る
配置モードのパネル。右下に操作ヒントが出る

配置モード中は HUD がマウスを受け取るため、VRChat 側の操作がパネルに吸われます。 配置が終わったら必ずチェックを外してください。

[レイアウトをリセット]で初期配置に戻せます。

配置は画面サイズに対する比率(左からの割合・幅の割合など)で保存されるので、 解像度を変えたりモニターを変えたりしても、だいたい同じ位置・同じ比率で表示されます。

HUD の文字サイズは固定です。パネルを大きくしても文字は大きくなりません (小さいパネルでも読める大きさを保つための設計です)。

DPS グラフ

DPS グラフ HUD
DPS グラフ HUD

3 本の線はすべて「10秒 DPS」の推移ですが、横軸の時間スケールが違います

範囲
2分 直近 2 分間(今の戦闘の勢いを見る)
30分 直近 30 分間(セッション全体の波を見る)
1h基準 オレンジ 現在のランの経過時間(最短 1 時間、最長 4 時間で自動調整)

左端の数字は縦軸の目盛りで、3 本の中の最大値から自動でスケールされます。 サンプルは 1 秒に 1 点記録されます。谷になっている部分はインターミッションなど、 ダメージを出していない時間帯です。

「2分」「30分」の線はアプリを起動してからのデータ全体(ランをまたぐ)を使い、 「1h基準」の線は現在のランだけを使います。

パーティ共有

お試し提供中の機能です。 パーティ共有はサーバーを介する唯一の機能で、現在は試験的に 無償提供しています。いつまで提供するかは未定で、予告なく仕様変更・停止する可能性があります。 提供が終わっても、アプリのそれ以外の機能(集計・HUD・エクスポート)はすべてそのまま使えます。

同じルームIDを入力したメンバー同士で、戦闘ステータスをリアルタイムに共有できます。 パーティ HUD には、与ダメージの多い順に最大 10 人まで表示されます。

パーティ HUD。自分の行は黄色で表示される
パーティ HUD。自分の行は黄色で表示される

使い方

  1. 設定ウィンドウの [ルームID] に、パーティ内で決めた合言葉を入力する (半角英数字がおすすめ。例: eclipse-night
  2. [パーティ共有を有効化] にチェックを入れる
  3. [オーバーレイ:]の[パーティ HUD] にチェックを入れて表示する(既定はオフ)
  4. 同じルームIDを入れた人が自動的に一覧に並ぶ

表示名は[対象ユーザー]の値がそのまま使われます。 自動検出されたユーザー名を変えたい場合は ここを書き換えてください。

パネルに表示されるメッセージの意味は次のとおりです。

表示 状態
パーティ共有はオフです [パーティ共有を有効化]が未チェック
ルームに接続中... サーバーへ接続中、またはルームIDが未入力
メンバーがいません 接続済みだが、同じルームIDの人がまだいない

ルームIDの決め方

ルームIDは合言葉であって、パスワードではありません。同じ文字列を入れた人は誰でも その部屋の一覧に入れます。身内で使うときは、推測されにくい固有の文字列にしてください (testvrchat のような一般的な単語は他人と衝突します)。

送信される情報

パーティ共有を有効にしている間だけ、次の値が 1 秒に 1 回サーバーへ送られ、 同じルームIDのメンバーへ配信されます。

項目 内容
表示名 [対象ユーザー]に入っている文字列
ジョブ 現在のステージのクラス名
DPS 10秒 DPS
与ダメージ / 被ダメージ ランの累計
死亡数 / 最大クリティカル / ヒット数・被弾数 ランの累計
ルームID / 端末識別子 同じ部屋に振り分けるための値

送られないもの:VRChat のアカウント情報、ログファイルの中身そのもの、 インスタンス情報、ワールド内の位置、チャット内容。

  • チェックを外している間は、ネットワーク通信を一切行いません。
  • サーバーはデータベースを持たない中継専用で、退室すると一覧から消えます。
  • 通信は wss://(TLS)です。

表示名はあなたが入力した文字列がそのまま同室の全員に見えます。本名など知られたくない文字列を [対象ユーザー]に入れないでください。

ラン結果のエクスポート

設定ウィンドウの [ラン結果を JSON 出力] で、そのセッションの全イベントを JSONL 形式.jsonl / 1 行に 1 つの JSON)で保存できます。

  • 1 行目meta。アプリ名・出力日時・対象ユーザー・監視中のログ名・現在ランの集計・ ヘイト対象の一覧・イベント総数
  • 2 行目以降 … 時刻付きのイベントが 1 行ずつ。t は Unix 時刻(秒)、type は種別
{"type":"meta","app":"Ecliptica Advanced Combat Tracker","exported_at":"2026-07-21T20:31:44","target_user":"Rain","run":{"damage":14883.0,"deaths":1,"hits":326}}
{"t":1784981234.51,"type":"stage","name":"BalboaRuins","phase":0.58,"class":"Gunmancer"}
{"t":1784981235.02,"type":"combat","label":"FlyLord","kind":"Boss"}
{"t":1784981236.77,"type":"damage","amount":42.0,"kind":"PHYSICAL"}
{"t":1784981238.10,"type":"dps_sample","dps10":111.6}

イベントの種別は run_reset / stage / combat / damage / taken / death / boss_defeated / hate / dps_sample です。デバウンスされたイベント(困ったときは の死亡・ボス撃破の項)は 1 回だけ記録されます。

イベントはアプリを閉じるまで一切間引かれません。長時間動かすとファイルが大きくなります。

Python で読む例:

import json

with open("ecliptica_run_2026-07-21_20-31-44.jsonl", encoding="utf-8") as f:
    meta = json.loads(f.readline())
    events = [json.loads(line) for line in f]

damage = [e for e in events if e["type"] == "damage"]
print(meta["run"]["damage"], len(damage))

設定リファレンス

設定ウィンドウ
設定ウィンドウ
項目 内容
対象ユーザー ヘイト判定とパーティ共有の表示名に使う名前。起動時にログから自動入力される
HUD ウィンドウを表示 すべての HUD の表示 / 非表示
HUD 背景 HUD の背景パネルを描くかどうか
背景の濃さ 背景の不透明度(0〜100%)
ルームID パーティ共有の合言葉(パーティ共有
パーティ共有を有効化 オンの間だけサーバーへ接続して共有する
配置モード HUD をドラッグで移動・リサイズできるようにする(HUD の配置とサイズ
言語 表示言語。初回はシステムのロケールから自動判定
レイアウトを保存 / リセット HUD の位置・サイズの保存と初期化
ラン結果を JSON 出力 ラン結果のエクスポート
オーバーレイ: パネルごとの表示 / 非表示

設定は変更した時点と終了時に自動保存されます。保存先は次のフォルダです。

%APPDATA%\dev.rtail.eact\
ファイル 内容
app_settings.json 言語・対象ユーザー・HUD の各設定・ルームID・パネルの表示状態
hud_layout.json HUD の位置とサイズ(画面サイズに対する比率で保存)

設定をまるごと初期化したい場合は、アプリを終了してからこのフォルダを削除してください。

困ったときは

何も表示されない / 数値が全部 0 のまま

まず VRChat 側の設定 を疑ってください。起動オプションが効いていないと 戦闘ログが 1 行も出力されず、アプリからは「何も起きていない」ように見えます。 output_log_*.txtDealing ... damage の行があるかを確認してください。

次に確認する点:

  • VRChat を先に起動しましたか?(アプリを先に起動していた場合は、アプリを再起動)
  • 右上に 監視中: output_log_....txt と出ていますか? 出ていなければログが見つかっていません
  • アプリは起動後に追記された行だけを読みます。起動前の戦闘は反映されません

起動時に「VRChat log folder not found」と出る

%USERPROFILE%\AppData\LocalLow\VRChat\VRChat が存在しません。 VRChat を一度も起動していないか、別ドライブへインストールしています。 VRChat を一度起動してログを作らせてから、アプリを起動し直してください。

HUD が VRChat の上に出てこない

  • VRChat をフルスクリーンで起動していませんか。-screen-fullscreen 0 を付けて ウィンドウモード(またはボーダーレス)にしてください
  • 設定ウィンドウの[HUD ウィンドウを表示]と、[オーバーレイ:]の該当チェックが 両方オンになっているか確認してください
  • パーティ HUD は既定でオフです

HUD がクリックを吸ってしまう

[配置モード]がオンのままです。チェックを外すとクリック透過に戻ります。

10秒 DPS が 0 になる

直近 10 秒間にダメージを与えていないだけです。10 秒間の合計 ÷ 10 なので、 手を止めれば 10 秒かけて 0 に落ちます。累計は「ラン与ダメージ」を見てください。

死亡数がおかしい / ボス撃破が何回も出る

ECLIPTICA は死亡やボス撃破を毎フレーム〜数秒おきに大量出力します。アプリ側では 一定時間内の連続イベントを 1 回にまとめています(死亡は 5 秒、ボスイベントは 6 秒)。 そのため、この間隔より短い間に本当に 2 回死んだ場合は 1 回として数えられます。

「最大クリティカル」が実際のクリティカルと合わない

ログにクリティカル判定は出力されません。そのランで最も大きかった単発ダメージを クリティカル扱いで表示しています(用語)。

パーティ HUD に自分しか出ない / 誰も出ない

  • 全員がまったく同じルームIDを入力していますか(大文字小文字・記号も一致が必要)
  • 全員が[パーティ共有を有効化]にチェックを入れていますか
  • 「ルームに接続中...」から変わらない場合、ネットワーク(ファイアウォールや VPN)が wss:// の接続をブロックしている可能性があります

レイアウトが保存されない

移動・リサイズしたあとに [レイアウトを保存] を押す必要があります (アプリを閉じたときにも保存されます)。

用語

用語 定義
10秒 DPS 直近 10 秒間に与えたダメージの合計 ÷ 10。瞬間的な火力の指標で、手を止めると下がります
ラン平均 DPS ラン累計ダメージ ÷ ラン経過時間。移動やインターミッションも分母に入るため、10秒 DPS よりかなり低い値になります
最大クリティカル そのランで最も大きかった単発ダメージ。ログにクリティカル判定が無いための代用値です
ラン フェーズ値が 0 に戻ってから次に 0 に戻るまで。集計のリセット単位(フェーズとラン
ステージ ECLIPTICA の 1 ステージ。ラン内に複数含まれます
戦闘 / セッション ステージ内の 1 区切り(Mob / Boss / Rest)
ヘイト 敵の所有権(オーナーシップ)が移った先のプレイヤー。ログの ownership 転送行から判定しています(開発中。実際のターゲットと一致しないことがあります)
フェーズ ラン全体の進行度 0.0〜1.0。5 区間に分けて表示します

ライセンス

本ソフトウェアについて

ECLIPTICA Advanced Combat Tracker(以下「本ソフトウェア」)の著作権は作者に帰属します。

  • 個人での利用・配信などでの使用は自由です
  • 作者の許可なく再配布・転載・販売・改変物の公開を行うことはできません
  • 本ソフトウェアは現状有姿で提供され、利用によって生じたいかなる損害についても 作者は責任を負いません

本ソフトウェアは VRChat ワールド「ECLIPTICA」の非公式ツールであり、 VRChat Inc. およびワールド制作者とは関係がありません。

同梱ライブラリ

以下の表記とライセンス全文は、アプリ本体の右下[ライセンス]ボタンからも読めます (配布フォルダーの THIRD-PARTY-NOTICES.mdlicenses/ をそのまま表示しています)。

本ソフトウェアには以下のソフトウェアが含まれています。 それぞれの著作権は各権利者に帰属し、各ライセンスの条件に従って再配布されています。

ソフトウェア ライセンス 用途
Python PSF License Agreement 実行環境
Qt — The Qt Company Ltd. ほか LGPL v3 GUI / HUD 描画
Qt for Python (PySide6 / Shiboken6) LGPL v3 Qt の Python バインディング
watchdog Apache License 2.0 VRChat ログファイルの監視
python-zstandard BSD 3-Clause 実行ファイルの圧縮展開

ビルドにのみ使用し、配布物には含まれないもの:

ソフトウェア ライセンス 用途
Nuitka Apache License 2.0 Python → exe のコンパイル
ordered-set MIT License Nuitka の依存

Qt / LGPL v3 についての注記

本ソフトウェアは Qt および Qt for Python を LGPL v3 の条件下で利用しています。 Qt は改変せずそのまま同梱しており、実行ファイル内に動的リンクされる DLL として 含まれています。したがって利用者は、同梱の Qt DLL を同一バージョンの 自前ビルドに差し替えて本ソフトウェアを動作させることができます。

LGPL が適用されるのは同梱の Qt / Qt for Python の部分のみで、 本ソフトウェア自身のコードには適用されません。

パーティ共有サーバー

パーティ共有で使用する中継サーバーは Node.js 上で動作し、 express(MIT License)と ws(MIT License)を使用しています。

このマニュアルの生成に使用

このページは以下のツールで生成しています(本ソフトウェアには含まれません)。

ソフトウェア ライセンス
markdown-it MIT License
markdown-it-attrs MIT License
Pillow MIT-CMU License

ECLIPTICA Advanced Combat Tracker

A combat-log damage meter and HUD overlay built for the VRChat world ECLIPTICA. It reads the log VRChat writes in real time, tracks your damage, DPS, damage taken, deaths and aggro target, and draws it on top of the game window.

Overview

The dashboard (main window)
The dashboard (main window)

There are four things it does.

What it does
Live tracking Damage dealt, 10s DPS, run average DPS, damage taken, max crit and deaths, recorded automatically
HUD overlays Translucent, click-through panels on top of the game (HUD overlays)
Party sharing Share DPS live with everyone on the same room ID (trial periodParty sharing)
Run export Write every event out as JSONL for later analysis (Exporting a run)

It never touches VRChat itself. It only reads a log file — no input injection, no memory access.

Read this first: ECLIPTICA writes no combat lines at all unless VRChat is launched with debug logging enabled. VRChat setup is mandatory.

Requirements

  • Windows 10 / 11 (desktop mode recommended — it runs in VR, but you cannot see the HUD there)
  • VRChat (Steam or standalone build)
  • No runtime to install — a single .exe

Installation

  1. Put Ecliptica ACT.exe anywhere you can write to (Desktop, Documents, …). There is no installer.
  2. Double-click to run. Windows SmartScreen may warn on first launch — choose More info → Run anyway.
  3. Settings are created under %APPDATA%\dev.rtail.eact\ (Settings reference).

To uninstall, delete the .exe. To also remove your settings, delete the %APPDATA%\dev.rtail.eact\ folder.

VRChat setup (required)

Skip this and the app will show nothing. ECLIPTICA emits its combat lines through Udon's Debug.Log, so unless VRChat is launched with debug logging enabled, not a single line reaches the log file.

1. Set the launch options

On Steam: right-click VRChat in your library → Properties → Launch Options, and paste this in. If you launch VRChat from a shortcut instead, append it to the end of the shortcut's Target field.

--enable-udon-debug-logging
Option Purpose Required
--enable-udon-debug-logging Writes Udon Debug.Log output to the log file. This is what produces ECLIPTICA's combat lines Required

That single option is all you need.

2. Turn logging up

On top of the launch options, raise VRChat's own log level. Open the VRChat menu, go to Settings → Debug, and enable (maximise) the logging options.

画像未撮影 / screenshot pendingMaximise logging in VRChat's Debug settings

3. Verify it worked

Paste this into the Explorer address bar:

%USERPROFILE%\AppData\LocalLow\VRChat\VRChat

You will see files named output_log_YYYY-MM-DD_HH-MM-SS.txt. Open the newest one in a text editor after fighting in ECLIPTICA for a moment, and look for lines like ECLIPTICA - now in stage: or Dealing ... damage.

  • Lines are there → you are done
  • No lines, or no file at all → the launch options are not taking effect. Fully quit VRChat and redo step 1 (Troubleshooting)

Getting started

Order matters. Always start VRChat first.

  1. Start VRChat and enter ECLIPTICA. On launch, the app scans the newest log for a User Authenticated: line and fills in your name as the target user. If VRChat is not running, that field stays empty.
  2. Run Ecliptica ACT.exe. When Watching: output_log_....txt appears at the top right, log watching is live.
  3. Fight. Numbers start moving as soon as you deal damage, and the HUD follows.

The app only reads lines appended after it starts. Fights from before launch are not counted — this is deliberate, so old logs are never replayed into your stats. If VRChat restarts and creates a new log file, the app switches to it automatically.

Reading the dashboard

The main window has four bands, top to bottom.

Areas of the dashboard
Areas of the dashboard

Phase progress

Shows the current phase value, stage name and class, plus the boss name during a boss fight. On the right, "Stage deaths / Session deaths" are deaths in the current stage and in the current fight respectively.

The phase bar — reached segments are drawn in full colour
The phase bar — reached segments are drawn in full colour

Current run performance

Twelve cards summarising the current run.

Card Meaning
Session Elapsed time of the current fight (Mob / Boss / Rest)
Phase time Elapsed time in the current stage
Run damage Total damage dealt this run
10s DPS Damage dealt in the last 10 seconds ÷ 10 (Glossary)
Run avg DPS Run damage ÷ run elapsed time. Intermissions count towards the denominator
Damage taken Total damage received this run
Hits / taken Hits dealt / hits received
Max critical The largest single hit. The log has no crit flag, so this stands in for it
Avg per hit Total damage ÷ hit count
Last damage source Whatever hit you most recently
Aggro target The most recent enemy -> player handover (work in progress — see HUD overlays)
Run deaths Deaths this run

Session history log

Stages and fights stack up in the order they happened. A Phase 0 / new run divider row marks where a new run began.

Session history log
Session history log

Phases and runs

Progress through ECLIPTICA is a phase value from 0.0 to 1.0, which the app splits into five named segments. The names and colours are fixed in the app.

Segment Phase value
PRIME 0.0 – 0.2
PENUMBRA 0.2 – 0.4
ANTUMBRA 0.4 – 0.6
UMBRA 0.6 – 0.8
ECLIPSE 0.8 – 1.0

On the phase bar, the reached portion is drawn in the segment's colour and the unreached portion in a darkened version of it. The compact HUD bar and the main-window bar use the same fill.

How a "run" is delimited

The app treats the moment the phase value returns to 0 as the start of a new run. There is no dedicated "run started" log line — the wrap-around is the only signal.

When a new run starts, these reset:

  • Run totals (damage, damage taken, deaths, max crit, hit counts)
  • The long-scale line on the DPS graph (DPS graph)
  • A divider row is added to the history table

The session history and the exported event log are not reset, so every run from launch to exit stays available.

HUD overlays

The HUD is five independent windows: always on top, translucent, and click-through — outside of setup mode your mouse passes straight through to VRChat.

Default HUD placement, shown over a 1920×1080 screen
Default HUD placement, shown over a 1920×1080 screen
Panel Default position Contents
Phase HUD Top left Stage name, boss name, compact phase bar with segment name and %
Stats HUD Top right DMG / DPS / Taken / Deaths / Crit
DPS graph HUD Bottom left DPS over three different time scales
Aggro HUD Upper centre Current aggro target, with a red warning when it is on you (work in progress)
Party HUD Right DPS table for everyone in your room (hidden by default)
Phase HUD
Stats HUD — fixed cells, so growing digits never shift their neighbours
Aggro HUD, showing that the boss is targeting you

Aggro display is a work in progress. It infers the target from where an enemy's network ownership was handed to, which does not always match the real target. Treat it as a hint rather than the truth — how it is derived may change.

Showing and hiding

Everything is in the settings window (⚙ Settings, top right of the main window).

Settings window
Settings window
  • Show HUD windows — shows or hides every HUD at once
  • The five Overlays: checkboxes — per-panel visibility. Only the Party HUD is off by default — turn it on if you use it
  • HUD background — whether to draw the rounded background panel
  • Background opacity — 0–100%. Text always stays fully opaque

With the background off, only the text floats — useful when you want to obscure as little of the game as possible.

Stats HUD with the background off
Stats HUD with the background off

Moving and resizing the HUD

If the defaults work for you, there is nothing to do. To move things, use setup mode.

  1. Tick [Setup mode (LMB drag = move / RMB drag = resize)] in the settings window
  2. Every panel gains a border, its name, and a hint — and starts accepting the mouse
  3. Left-drag to move, right-drag to resize (grab anywhere on the panel)
  4. When you are happy, press [Save Layout]
  5. Untick setup mode to go back to click-through
Setup mode on — every panel shows its border and name
Setup mode on — every panel shows its border and name
A panel in setup mode, with the hint in the bottom right
A panel in setup mode, with the hint in the bottom right

While setup mode is on the HUD takes the mouse, so your clicks no longer reach VRChat. Always untick it when you are done.

[Reset Layout] restores the defaults.

Layouts are stored as fractions of the screen (offset and size as a ratio), so changing your resolution or monitor keeps roughly the same placement and proportions.

HUD font sizes are fixed. Making a panel bigger does not make its text bigger — that is deliberate, so small panels stay readable.

DPS graph

DPS graph HUD
DPS graph HUD

All three lines plot the same 10s DPS value; what differs is the time scale on the x-axis.

Line Colour Range
2m Blue Last 2 minutes — the pace of the fight you are in
30m Purple Last 30 minutes — the shape of the session
1h base Orange The current run's elapsed time (auto-scaled, 1 hour minimum, 4 hours maximum)

The numbers on the left are the y-axis, scaled automatically from the highest value across the three lines. One sample is recorded per second. The troughs are intermissions and other stretches where you are not dealing damage.

The 2m and 30m lines use all data since the app started (spanning runs); the 1h base line uses only the current run.

Party sharing

This feature is in a trial period. Party sharing is the only feature that goes through a server, and it is currently offered free of charge on a trial basis. There is no set end date, and it may change or stop without notice. Everything else in the app (tracking, HUD, export) keeps working regardless.

Everyone who types the same room ID shares their combat stats live. The Party HUD lists up to ten people, sorted by damage dealt.

Party HUD — your own row is highlighted in yellow
Party HUD — your own row is highlighted in yellow

How to use it

  1. Type the phrase your group agreed on into [Room ID] in the settings window (ASCII is safest, e.g. eclipse-night)
  2. Tick [Enable party sync]
  3. Tick [Party HUD] under Overlays: to show the panel (it is off by default)
  4. Anyone using the same room ID appears in the list automatically

Your display name is whatever is in [Target user]. Edit that field if you want to show something other than the auto-detected name.

Messages shown in the panel:

Message State
Party sync is off [Enable party sync] is unticked
Connecting to room... Connecting to the server, or the room ID is empty
No members Connected, but nobody else is using this room ID yet

Choosing a room ID

A room ID is a shared phrase, not a password. Anyone who types the same string joins the same list. For a private group, pick something distinctive — common words like test or vrchat will collide with strangers.

What gets sent

Only while party sync is enabled, the following is sent to the server once per second and relayed to everyone with the same room ID.

Field Contents
Display name Whatever is in [Target user]
Job The class name of your current stage
DPS 10s DPS
Damage dealt / taken Run totals
Deaths / max crit / hit counts Run totals
Room ID / client identifier Used to route you to the right room

Not sent: your VRChat account details, the log file itself, instance information, your position in the world, or anything you type in chat.

  • While the checkbox is off, no network traffic happens at all.
  • The server is a relay with no database; leaving removes you from the list.
  • The connection uses wss:// (TLS).

Your display name is visible verbatim to everyone in the room. Do not put anything in [Target user] that you would not want them to see.

Exporting a run

[Export run as JSON] in the settings window writes every event of the session as JSONL (.jsonl — one JSON object per line).

  • Line 1meta: app name, export time, target user, log being watched, the current run's totals, the aggro table, and the event count
  • Line 2 onwards — one timestamped event per line. t is Unix time in seconds, type is the kind of event
{"type":"meta","app":"Ecliptica Advanced Combat Tracker","exported_at":"2026-07-21T20:31:44","target_user":"Rain","run":{"damage":14883.0,"deaths":1,"hits":326}}
{"t":1784981234.51,"type":"stage","name":"BalboaRuins","phase":0.58,"class":"Gunmancer"}
{"t":1784981235.02,"type":"combat","label":"FlyLord","kind":"Boss"}
{"t":1784981236.77,"type":"damage","amount":42.0,"kind":"PHYSICAL"}
{"t":1784981238.10,"type":"dps_sample","dps10":111.6}

Event types are run_reset, stage, combat, damage, taken, death, boss_defeated, hate and dps_sample. Debounced events (see the death / boss-defeat entries under Troubleshooting) are recorded once.

Events are never trimmed while the app runs, so long sessions produce large files.

Reading it in Python:

import json

with open("ecliptica_run_2026-07-21_20-31-44.jsonl", encoding="utf-8") as f:
    meta = json.loads(f.readline())
    events = [json.loads(line) for line in f]

damage = [e for e in events if e["type"] == "damage"]
print(meta["run"]["damage"], len(damage))

Settings reference

Settings window
Settings window
Setting Meaning
Target user The name used for aggro detection and as your party display name. Auto-filled from the log on launch
Show HUD windows Shows or hides every HUD
HUD background Whether to draw the HUD background panel
Background opacity Background opacity, 0–100%
Room ID The shared phrase for party sync (Party sharing)
Enable party sync Connects and shares only while ticked
Setup mode Lets you drag HUD panels to move and resize them (Moving and resizing the HUD)
Language Display language. Auto-detected from your system locale on first run
Save / Reset Layout Saves or restores HUD positions and sizes
Export run as JSON Exporting a run
Overlays: Per-panel visibility

Settings are saved when you change them and again on exit, into:

%APPDATA%\dev.rtail.eact\
File Contents
app_settings.json Language, target user, HUD settings, room ID, panel visibility
hud_layout.json HUD positions and sizes, stored as fractions of the screen

To reset everything, quit the app and delete that folder.

Troubleshooting

Nothing appears / every number stays at 0

Suspect VRChat setup first. Without the launch options, not one combat line is written, so from the app's point of view nothing is happening. Check whether your output_log_*.txt contains Dealing ... damage lines.

Then check:

  • Did you start VRChat first? (If not, restart the app.)
  • Does Watching: output_log_....txt appear at the top right? If not, no log was found.
  • The app only reads lines appended after it starts — fights from before launch never show up.

"VRChat log folder not found" on startup

%USERPROFILE%\AppData\LocalLow\VRChat\VRChat does not exist. Either VRChat has never been run, or it is installed on another drive. Launch VRChat once so the log is created, then start the app again.

The HUD does not appear over VRChat

  • Are you running VRChat fullscreen? Add -screen-fullscreen 0 for windowed (or borderless).
  • Check that both [Show HUD windows] and the relevant Overlays: checkbox are ticked.
  • The Party HUD is off by default.

The HUD is swallowing my clicks

[Setup mode] is still on. Untick it to restore click-through.

10s DPS drops to 0

That just means you have not dealt damage in the last 10 seconds — it is a 10-second sum divided by 10, so it decays to zero once you stop. Use "Run damage" for the cumulative figure.

Death counts look wrong / boss defeat fires repeatedly

ECLIPTICA spams death and boss-defeat lines every frame or every few seconds. The app collapses bursts into a single event (5 seconds for deaths, 6 seconds for boss events). As a side effect, two genuine deaths closer together than that count as one.

"Max critical" does not match the crits I saw

The log has no crit flag. The app shows the largest single hit of the run in its place (Glossary).

Only I show up in the Party HUD, or nobody does

  • Is everyone using exactly the same room ID (case and punctuation included)?
  • Has everyone ticked [Enable party sync]?
  • If it stays on "Connecting to room...", your network (firewall or VPN) may be blocking wss://.

My layout is not saved

Press [Save Layout] after moving or resizing (it is also saved when you close the app).

Glossary

Term Definition
10s DPS Damage dealt in the last 10 seconds ÷ 10. A burst metric — it falls when you stop
Run avg DPS Run damage ÷ run elapsed time. Travel and intermissions are in the denominator, so it is far lower than 10s DPS
Max critical The largest single hit of the run — a stand-in, because the log has no crit flag
Run From one phase-0 reset to the next. The unit that stats reset on (Phases and runs)
Stage One ECLIPTICA stage. A run contains several
Fight / session One encounter within a stage (Mob / Boss / Rest)
Aggro The player an enemy's network ownership was handed to, taken from the ownership-transfer log lines (work in progress — it does not always match the real target)
Phase Whole-run progress from 0.0 to 1.0, displayed as five segments

License

About this software

ECLIPTICA Advanced Combat Tracker ("the Software") is copyright of its author.

  • You are free to use it personally, including while streaming.
  • You may not redistribute, mirror, sell, or publish modified versions of it without the author's permission.
  • The Software is provided as is, without warranty of any kind. The author is not liable for any damage arising from its use.

The Software is an unofficial tool for the VRChat world "ECLIPTICA" and is not affiliated with VRChat Inc. or the world's creators.

Bundled libraries

These notices and the full license texts are also readable in the app itself, via the [Licenses]button at the bottom right — it displays the bundled THIRD-PARTY-NOTICES.md and licenses/ files verbatim.

The application includes the software listed below. Each remains the copyright of its respective holders and is redistributed under its own license.

Software License Used for
Python PSF License Agreement Runtime
Qt — The Qt Company Ltd. and others LGPL v3 GUI / HUD rendering
Qt for Python (PySide6 / Shiboken6) LGPL v3 Python bindings for Qt
watchdog Apache License 2.0 Watching the VRChat log files
python-zstandard BSD 3-Clause Executable decompression

Used only at build time, not shipped in the distributed binary:

Software License Used for
Nuitka Apache License 2.0 Compiling Python to an .exe
ordered-set MIT License Nuitka dependency

Note on Qt / LGPL v3

The Software uses Qt and Qt for Python under the terms of LGPL v3. Qt is bundled unmodified and is included as dynamically linked DLLs inside the executable, so you may replace the bundled Qt DLLs with your own build of the same version and run the Software against it.

The LGPL applies only to the bundled Qt / Qt for Python components, not to the Software's own code.

Party sharing server

The relay server used by Party sharing runs on Node.js and uses express (MIT License) and ws (MIT License).

Used to build this manual

This page is generated with the tools below. They are not part of the Software.

Software License
markdown-it MIT License
markdown-it-attrs MIT License
Pillow MIT-CMU License