イベントの種別は 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))
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.
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)
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.
Run Ecliptica ACT.exe.
When Watching: output_log_....txt appears at the top right, log watching is live.
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.
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
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.
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 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
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)
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
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.
If the defaults work for you, there is nothing to do. To move things, use setup mode.
Tick [Setup mode (LMB drag = move / RMB drag = resize)] in the settings window
Every panel gains a border, its name, and a hint — and starts accepting the mouse
Left-drag to move, right-drag to resize (grab anywhere on the panel)
When you are happy, press [Save Layout]
Untick setup mode to go back to click-through
Setup mode on — every panel shows its border and nameA 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.
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.
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
How to use it
Type the phrase your group agreed on into [Room ID] in the settings window
(ASCII is safest, e.g. eclipse-night)
Tick [Enable party sync]
Tick [Party HUD] under Overlays: to show the panel (it is off by default)
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.
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))
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).
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
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.
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.