BloodHUD is an overlay for Crimson Desert. It draws on top of the game window without touching any game files. Three features, each of which you can turn on or off independently:
BloodHUD only reads memory. It does not modify the game. It works for both boss fights and trash mobs.
.exe handle this automatically. If you're running from source, use run_as_admin.bat.run_as_admin.bat) before or after the game, doesn't matter.A faint "BloodHUD Active / INS for Settings" label sits just above the HP bar stack by default, so you always know the overlay is alive and how to open settings. You can hide it or adjust its opacity on the General tab.
BloodHUD has three movable windows: the HP bar stack, the scrolling-text window, and the DPS meter. To move or resize them you need Preview mode.
Preview mode fills each window with fake data so you can see exactly how your settings look, even with the game closed.
Every hotkey is rebindable on the General tab. Defaults:
| Key | What it does |
|---|---|
| Insert | Open the settings window |
| Home | Quit BloodHUD entirely |
| Ctrl+Alt+P | Toggle Preview mode |
| Ctrl+Alt+L | Open the Boss Log window |
| Ctrl+Alt+V | Cycle DPS meter visibility (Live only → Live + Current → All) |
| Ctrl+Alt+R | Reset the current DPS fight |
| Ctrl+Alt+U | Resume the most recent timed-out boss fight |
| Ctrl+Alt+0 | Snap all overlay windows back to default positions |
General tab → Hotkeys section → click Set on the row you want to change, then press the key combo. Clear unbinds it completely — the feature is still reachable through settings buttons.
| Setting | What it does |
|---|---|
| Idle timeout (s) | If you stop hitting an enemy, their HP bar hides after this many seconds. They're still tracked — land a hit and the bar comes right back. |
| Show overlay indicator | The faint "BloodHUD Active / INS for Settings" label above the HP stack. Handy reminder after a fresh install; hide it once you're comfortable. |
| Indicator opacity | How visible that label is. 0 = invisible, 255 = fully solid. Default is intentionally faint. |
One row per hotkey. See the Hotkeys section above for what each action does.
Checkbox to toggle Preview mode — same as Ctrl+Alt+P. See Preview mode.
Off by default. Captures what the scanner sees — every scan, every engagement, every eviction. Leave it off unless you're reporting a bug.
_ref/ folder where the log files live. Grab the most recent one if you're filing a bug report.Controls the stack of enemy health bars. The scanner keeps running even when bars are disabled, so the rest of BloodHUD still works.
| Setting | What it does |
|---|---|
| Enabled | Master switch for the HP bar stack. |
| Max bars | Cap on how many enemy bars appear at once. Most-recently-hit enemies take priority; the rest drop off the bottom. |
| Dead persist (s) | How long a dead enemy's bar sticks around before disappearing. Gives you a beat to read the final state. |
| Border px | Pixel thickness of the black outline around each bar. 0 removes it entirely. |
| Setting | What it does |
|---|---|
| Bar width | How wide each bar is. Wider bars leave more room for HP numbers. |
| Bar height | How tall each bar is. |
| Bar spacing | Gap between bars in the stack. |
| Setting | What it does |
|---|---|
| Bar opacity | How solid the colored health fill is. 255 is opaque, 0 is invisible. |
| BG opacity | How solid the dark backdrop behind each bar is. Lower values let the game show through more. |
| Name opacity | How solid the nameplate strip is. |
| HP font | Font size for the HP numbers on the bar. |
| Name font | Font size for the enemy name. |
| Nameplate pos | Where the name sits relative to the bar: above, below, center (overlaid on the bar), or compact (a small integrated label). |
| Show HP numbers | Toggle numeric HP on/off. |
| Show as % | Show HP as a percentage instead of raw numbers. Cleaner if you don't care about exact values. |
Four color pickers. HP-high / HP-mid / HP-low control the bar fill color as health drops through the thresholds below. Text controls the color of both HP numbers and the enemy name on the bar.
| Setting | What it does |
|---|---|
| High → mid (%) | HP percentage where the bar color flips from high to mid. Default 50%. |
| Mid → low (%) | HP percentage where it flips from mid to low. Default 25%. |
Scrolling damage numbers that float up from each enemy as you hit them. Three visual tiers — normal, large, crit — based on how the hit compares to your rolling average against that specific enemy.
| Setting | What it does |
|---|---|
| Enabled | Master switch for scrolling damage numbers. HP bars are unaffected. |
The SCT window is the invisible rectangle damage numbers live in. Numbers drift up from the bottom and fade at the top edge.
| Setting | What it does |
|---|---|
| Width (px) | Width of the window. Set to 0 to auto-fit based on slot width and max bars. |
| Height (px) | Height of the window. Set to 0 to auto-fit based on drift speed and fade time. Set both to 0 to return to full auto-sizing. |
| Setting | What it does |
|---|---|
| Drift (px/s) | How fast numbers float upward. Higher feels urgent; lower gives you time to read. |
| Fade (s) | How long before each number fully disappears. |
| Font base | Font size for normal (white) hits. |
| Font max | Maximum font size, used for crit-tier hits. Bigger feels more impactful. |
| Combo max | Max font size for stacked combo hits. Kept smaller than crit so you can tell them apart. |
| Stack (ms) | Hits on the same enemy within this many milliseconds merge into one combined number. Set to 0 to show every hit separately. |
| Slot width | Horizontal offset between different enemies' damage columns, so hits on adjacent mobs don't overlap. |
| Crit scale | How big a crit number pops out at. 2.4 means it starts 2.4× normal size and shrinks down. |
| Settle (s) | How fast the crit pop shrinks back to normal size. Lower is snappier. |
| Font family | Five options: Consolas (monospace, tech feel), Verdana (clean humanist sans), Arial Black (heavy and readable), Georgia (classic serif), Trebuchet MS (friendly modern sans). |
Four settings that control when a hit is flagged as "large" (yellow) or "crit" (orange + pop). Detection uses your rolling damage average against each specific enemy — so a hit that's big on a goblin might not register against a boss, and vice versa.
| Setting | What it does |
|---|---|
| EMA alpha | How fast the rolling average adapts. Higher means recent hits matter more; old hits get forgotten faster. 0.35 is a solid middle ground. |
| Baseline dmg | Starting damage estimate before you've hit the enemy yet. Too high and early hits look normal; too low and the first hit always crits. |
| Large × | A hit has to be this many times bigger than the rolling average to turn yellow. 1.8 = 80% above average. |
| Crit × | A hit has to be this many times bigger than the rolling average to turn orange and pop. 3.0 = triple your average — only the big ones qualify. |
Three pickers — Normal, Large, Crit. One color per tier.
A special effect when the hit you just landed finishes an enemy off. Separate from the normal damage text — it always spawns its own standalone number, never merges into a combo.
| Setting | What it does |
|---|---|
| Enabled | Master switch for the killing-blow effect. |
| Dmg font size | Font size for the final damage number. |
| Dmg color | Color of the final damage number. Default red. |
| Hang time (s) | How long the killing-blow text lingers before fading out. Longer than regular hits. |
| Drift speed | How fast the killing-blow text drifts upward. Default 60 px/s — slower than regular hits for emphasis. |
| Show label | Toggle the "KILLING BLOW" text that appears above the damage number. |
| Label font size | Font size for the "KILLING BLOW" label. |
| Label color | Color of the "KILLING BLOW" label. Default blue. |
A floating, always-available damage-per-second meter. It tracks both boss fights and trash-mob encounters automatically. You don't configure which is which — BloodHUD decides based on the enemy's max HP.
The meter has three regions, stacked top to bottom:
| Button | What it does |
|---|---|
| Reset | Ends the current fight immediately without logging it. Use when the meter gets stuck on the wrong target. Same as Ctrl+Alt+R. |
| Resume Boss | Reattaches to the most recent boss fight if it timed out but combat picks back up. Same as Ctrl+Alt+U. |
| Boss Log | Opens the persistent Boss Log window — saved boss kills and timeouts across all sessions. See Boss Log. |
| Clear Session | Wipes the in-meter Session Log. Does not touch the persisted Boss Log file. Clears automatically on every relaunch anyway. |
| Setting | What it does |
|---|---|
| Enabled | Master switch for the meter. Fights still track internally when disabled — the window just hides. |
| Session rows | How many completed fights the Session Log keeps visible in the meter. Older entries drop off. The persisted Boss Log keeps up to 30. |
The meter auto-sizes every frame based on which regions are visible and your chosen font sizes. There are no width/height controls — it fits itself. Shift + drag to reposition.
| Setting | What it does |
|---|---|
| Font family | Four choices: Cambria (matches the in-game serif closely), Palatino Linotype (warmer and wider), Constantia (formal ClearType serif), Consolas (monospace — best for tight numeric column alignment). |
| BG opacity | How solid the meter background is. Lower values let the game show through more. |
| BG color | Background fill color. Default black. |
Every piece of text in the meter has its own font size and color. Arranged as rows: the spinbox sets the size, the button opens a color picker.
| Component | What it is |
|---|---|
| Region header | The "LIVE DPS" / "CURRENT FIGHT" / "SESSION LOG" headings. All three share the same size and color. |
| aDPS output | The big live aDPS number — the most prominent reading. The small "aDPS" caption under it inherits this color. |
| Fight DPS | The smaller Fight DPS number under the aDPS. Its "Fight DPS" caption inherits this color. |
| Captions | Font size for the small "aDPS" and "Fight DPS" labels under the big numbers. Color follows the corresponding number. |
| Current Fight | Font size and color for the Current Fight rows (Boss / Duration / Total / Peak). |
| Column header | The "TYPE DUR aDPS FIGHT TOTAL PEAK" column labels above the session log. |
| KILL row | Font size and color for completed kills in the Session Log. Default green. T/O rows share this font size for column alignment. |
| T/O row | Color only for timed-out fights. Default red. Size is shared with KILL rows. |
| Boss label | Font size for the boss-name (or "Trash Mob(s)") label above each session entry. Color stays auto-generated per boss (each named boss gets a unique, stable color). |
Controls what the meter shows. The visibility mode and the fade-when-idle toggle are independent — they combine.
Cycle through these with Ctrl+Alt+V without opening settings.
Applies on top of whichever display mode you picked. When enabled, the meter smoothly fades to a small location marker after a period of inactivity. Any hit snaps it back to full opacity instantly.
| Setting | What it does |
|---|---|
| Fade when idle | Enable the idle fade. Off by default. |
| Fade after (s) | Seconds of no hits before fading starts. Default 60. |
| Fade length (s) | How long the fade animation itself takes. Default 1 second. |
BloodHUD shows two damage-per-second numbers at once: a big aDPS number and a smaller Fight DPS number below it. They measure different things on purpose.
Total damage you've dealt in this fight, divided by how long the fight has been going. Simple wall-clock math.
This is what goes in the history log. It never lies and never moves fast — it's the steady career number for the fight.
This is where things get interesting. aDPS has two different display models you can pick between in Fine Tuning: bedrock and pulse. They answer different questions.
Question answered: "Where's my sustained floor, and how much am I currently lifting above it?"
Builds a permanent career baseline as the fight progresses. Every hit contributes to that floor and raises it a little. Bursts of big damage lift the display above the floor, then decay slowly back down.
Good for long fights where total output matters. Your floor only goes up; it never drops.
Question answered: "What's my rate right now, in this moment?"
A pure rolling window. Only damage from the last few seconds counts toward the number. Old hits drop off once they age past the window.
Good for feeling each phase of a fight distinctly — a lull really does pull the number down, and a burst really does spike it up.
Two intermediate values get computed every frame:
"Active" time only counts the gaps between hits that were short enough to still feel like combat (see aDPS idle in Fine Tuning). A five-second pause doesn't get counted as active combat time — which is why running away for a bit doesn't tank your aDPS.
Both modes pipe their target value through the same smoother so the number doesn't jitter. It climbs fast when you hit harder and falls slowly when you ease off:
Reads as: your career floor, plus however much your current burst is lifting you above it, smoothed so it doesn't twitch. After a fight settles, the premium fades and the display collapses back down to your career floor.
No career floor. The display just follows the rolling-window rate through the same envelope. Peaks persist because the decay τ is long; lulls eventually drag the number down all the way to zero if you stop hitting things.
Collapsed by default. Click Show advanced tuning on the DPS tab. All defaults work well; touch these if you want to shape the behavior.
The gap between hits that still counts as "active combat." If you pause for longer than this, the aDPS number freezes on screen and won't move until you land your next hit. Raising this makes the meter more forgiving of longer pauses (dodging, repositioning, drinking potions). Lowering it makes the meter more reactive but more twitchy.
Boss fights only. If you go this long without hitting the boss, the fight ends automatically and logs as T/O. Use Resume Boss or Ctrl+Alt+U to reattach if you were just repositioning. Shorter values log faster; longer values wait around in case you return.
See How DPS is calculated above. This is the switch between the two display philosophies.
The rolling window used by the instant calculation. In pulse this is the whole measurement window: only damage in the last 6 seconds contributes. In bedrock this is the burst-detection window: only spikes within the last 6 seconds can lift the display above the career floor. Wider = slower and smoother; narrower = faster and spikier.
How fast the displayed number climbs when you start hitting harder. Smaller = snappier response to bursts. Larger = the display "waits to be sure" before climbing. If you feel like the meter lags behind reality during hot streaks, lower this.
How slowly the number falls off during lulls. This is intentionally long so a brief pause doesn't nuke your reading. If you want the meter to "forget" bursts faster and drop back down closer to current output, lower this. If you want impressive peaks to linger, raise it.
Trash-mob encounters only. How many seconds of no hits before the trash encounter wraps up and logs to the session. Short values give you clean, separate entries per camp clear; longer values let natural combat breaks stay inside one encounter.
The raw max-HP cutoff for what counts as a trash enemy. Divide by 1,000 for displayed HP (so 30,000 = 30 HP as shown in-game). Enemies below this threshold still get HP bars but are excluded from the DPS meter, so tiny critters and non-combat NPCs don't pollute your log.
↑ Back to topA persistent record of every boss fight across all sessions. Survives relaunches. Opened from the Boss Log button on the DPS tab or with Ctrl+Alt+L.
Each entry shows the same columns as the session log on the meter: TYPE DUR aDPS FIGHT TOTAL PEAK BOSS. KILL rows are green; T/O rows are red.
How enemies are labeled on their HP bars. Pick one of four pools.
| Mode | What it looks like |
|---|---|
| Serious | ~50 fantasy names. Makes the overlay feel like it belongs in the world. Safe for streaming. |
| Silly | Bureaucratic and casting-call names. Enemies feel like they showed up, filed the paperwork, and are now professionally obligated to fight you. |
| Explicit | Strong profanity. Cathartic in combat. Prompts for confirmation the first time you pick it because the names are genuinely offensive, not just edgy. |
| Custom prefix | You pick the prefix. Enemies are numbered sequentially ("Enemy 1", "Enemy 2", etc.). Good for clean labeling or speedruns. |
The Custom prefix text field only activates when Custom prefix mode is selected.
What happens when two enemies on screen would share the same name:
run_as_admin.bat.CrimsonDesert.exe. Older or modded builds may differ.BloodHUD identifies bosses by matching their max HP against a known list. If the game ships a balance change and a boss's HP shifts, that boss may temporarily fall off the list until BloodHUD is updated. This is the most common cause when a boss bar is missing.
Click Reset on the DPS tab, or press Ctrl+Alt+R.
Hit it again, then press Resume Boss or Ctrl+Alt+U to reattach the meter to that fight.
Ctrl+Alt+0 snaps everything back to default positions.
_ref/.BloodHUD v1.05 · Crimson Desert Combat Overlay · Read-only memory overlay, no game files modified