You are viewing a potentially older version of this package. View all versions.
Jumpingmushroom-Earshot-0.1.1 icon

Earshot

Closed captions for Valheim's important sounds: enemies, raids, bosses, smelters and more, each with a live direction arrow. For deaf and hard-of-hearing players, or anyone playing quietly. Client-side.

Date uploaded 2 weeks ago
Version 0.1.1
Download link Jumpingmushroom-Earshot-0.1.1.zip
Downloads 41
Dependency string Jumpingmushroom-Earshot-0.1.1

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2350 icon
denikson-BepInExPack_Valheim

BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.

Preferred version: 5.4.2350

README

Earshot

Closed captions for the Valheim sounds worth reacting to. A Greydwarf spotting you, a Troll stomping through the trees, a Boar charging at you, your smelter finishing: each gets a short caption at the bottom of the screen, with an arrow pointing where it came from. Made for deaf and hard-of-hearing players, and for anyone playing with the sound low.

Earshot's caption list

Sample captions from earshot demo in the Meadows: a boss, three Greydwarfs close by, a Troll to the right, a Deer behind, a smelter to the left.

Features

  • Captions with direction. Every line has an arrow pointing at the sound relative to where you're looking, and it turns as you turn. Close threats get a near tag; distant sounds are dimmer.
  • Built not to flood the screen. Five Greydwarfs are one line, Greydwarf ×5 attacking. When the list is full, bosses and raids push out enemies, enemies push out wildlife, and wildlife pushes out everyday world sounds. Idle chatter is throttled. Sounds you can already see up close are dimmed.
  • Only what you'd want to react to. Your own actions stay silent: footsteps, swings, chopping, and any chest or door you open — anything within the game's 5 m interaction range. Captions come from the game's own sound data (Valheim ships an unfinished caption system that Earshot brings to life), fixed and extended where it's wrong or missing.
  • Works with sound off. Audibility is measured at your position from the sound itself, not from your volume settings. The default cutoff is 0.05, low enough to catch most of a sound's range.
  • Settles in after a portal or login. World sounds are ignored for a few seconds after you arrive through a portal or log in, so a door doesn't caption itself replaying its opening sound as the area loads.
  • Readable for everyone. Each category has its own colour, chosen to stay distinct with colour blindness, and threats are also bold with a warning mark, so colour is never the only cue.
  • Your language. Creature and building names use the game's own translations. Earshot's few words can be translated with a text file (see Translating).

Turning it on and off

Captions are on as soon as the mod is installed. Settings → Accessibility → "Closed captions (Earshot)" turns them off and on. Everything else lives in the BepInEx configuration manager (F1).

Configuration

Section Setting Default Meaning
General Enabled true Master switch. The same switch as 'Closed captions' in Settings > Accessibility.
General MinimumVolume 0.05 How loud a sound must be where you stand to get a caption (0 to 1). 0.05 covers most of a sound's range. Ignores your volume sliders, so captions work with sound off.
Categories Boss true Bosses: their alerts, attacks and summons.
Categories Raid true A raid starting and running near you.
Categories Enemy true Hostile creatures: alerted, attacking, footsteps.
Categories Wildlife true Idle creature sounds, throttled so chatter doesn't flood the list.
Categories World true Things that need attention: a smelter finishing, food done or burning, doors you didn't open, a shield generator low on fuel.
Categories Ambient false Constant background: fires, torches, distant thunder.
Display MaxLines 5 Caption lines shown at once.
Display Linger 3 Seconds a line stays after its sound was last heard.
Display IdleCooldown 20 Seconds before the same creature's idle chatter can start a new line.
Display OffsetX 0 Horizontal nudge from bottom centre, in HUD pixels (positive is right).
Display OffsetY 0 Vertical nudge in HUD pixels (positive is up).
Display Scale 1 Size of the caption list.
Display BackgroundOpacity 0.6 Opacity of the dark plate behind the captions.
Display DimOnScreen true Dim lines whose source is close and on screen, and rank them lowest within their category.
Display SnapArrows true Arrows point in 8 directions. Off: they rotate smoothly.
Display NearDistance 10 Metres within which threats get the 'near' tag.
Colors Boss #E056FF Caption colour for Boss.
Colors Raid #FFD84A Caption colour for Raid.
Colors Enemy #FF8A3D Caption colour for Enemy.
Colors Wildlife #7EC8FF Caption colour for Wildlife.
Colors World #E8E4DA Caption colour for World.
Colors Ambient #B5B0A6 Caption colour for Ambient.
Debug LogUnlabelled false Log each audible sound that got no caption, once, so gaps can be reported.
Debug Verbose false Log every caption decision. Noisy.

Console

  • earshot — what's on screen right now, plus the last 20 sounds heard and why each did or didn't get a caption.
  • earshot unlabelled (also unlabeled) — every audible sound this session that had no caption.
  • earshot demo — sample captions for 20 seconds, for screenshots and for previewing colour and size settings.

Reporting a missing caption

Play for a bit, then run earshot unlabelled in the console and include its output in your report: https://github.com/jumpingmushroom/Earshot/issues. It lists every audible sound that got no caption this session, whether or not Debug → LogUnlabelled is on; turning LogUnlabelled on (F1) additionally writes each one to the BepInEx log as it happens.

Translating

Copy src/Earshot/translations/English.txt from this repository to BepInEx/config/Earshot/translations/<Language>.txt, using the game's own name for the language (German.txt, Norwegian.txt, ...), and translate the right-hand side of each line. Missing lines fall back to English. Pull requests with translations are welcome.

Compatibility

Client-side, safe to add or remove at any time, works on vanilla servers, needs nothing on the server. Console players on crossplay servers aren't affected (and can't run mods).

CHANGELOG

Changelog

0.1.2 — bear footsteps, tree falling

  • A charging Bear is no longer captioned as a Lox. The Bear runs on the Lox's footstep sound; the caption now names whichever creature made the step.
  • "Tree falling" now shows when a tree falls, not whenever a log bumps into something (each axe hit on a log, logs rolling or settling out of sight).

0.1.1 — more creatures, fewer gaps

  • The Stone Golem's second attack no longer shows a file path; the game's caption for it is an asset path. Any game caption that isn't a translation key is now ignored.
  • Golem attacks are threats (bold, ⚠), its footsteps are captioned, and its sighing is throttled idle chatter.
  • Boss and creature lines that lost their action word now have one: Moder roaring, breathing ice and flapping its wings; The Elder, Eikthyr, Yagluth, Fader and The Queen roaring; The Elder shooting; and more. The game ships these words without English text, so Earshot supplies it.
  • Warnings before the hit: Charred Marksman aiming, Fader's bite and claw wind-ups and fire-breath inhale, Fenring jumping, Dvergr and Drake charging, The Elder charging, Bonemass's ground attack, Abomination attacks and awakening, Yagluth's meteors, nova and beam, Gjall roaring, The Queen's pierce.
  • Fallen Valkyrie, Seeker and Abomination attacks and Charred deaths count as threats.
  • New: Vile, Writhan and Kvastur sounds, Wraith moaning, Fader's firewall and idle, big skeletons, the lava Leviathan sinking, the windmill finishing, and the Deep North creatures (Kall Fimbulbringer, Gammeltroll, Krigen, Hexen, Moose, Seal, Fallen Warrior, Elaking).
  • A sound that Earshot's table gives to a creature (a boss or enemy row, or a creature as its source) is never mistaken for your own.

0.1.0 — first cut

  • Closed captions at the bottom of the screen for the sounds worth reacting to: bosses, enemies, wildlife, and world events such as a smelter finishing, food done or burning, doors you didn't open and a shield generator low on fuel. A Raid line points at the event while one is running near you.
  • Every line has a live arrow pointing at the sound (8 directions, or smooth), a near tag for close threats, and dims with distance.
  • One line per kind of source with a ×N count, priority by category when the list is full, idle chatter throttled, sounds you can see up close dimmed.
  • Looping sounds are captioned while you can hear them, such as fires when the Ambient category is on. A Deathsquito's buzz is captioned the same way (not yet seen in play).
  • Audibility is measured from the sound itself at your position, not your volume sliders, with a default cutoff of 0.05 — captions work with the game's sound off.
  • Your own actions stay silent, including chests and doors you open (anything within the game's 5 m interaction range). World sounds settle for a few seconds after you arrive through a portal or log in, so a reloading door doesn't caption its own opening sound.
  • Settings → Accessibility → "Closed captions (Earshot)" turns captions on and off; everything else is in F1.
  • Captions come from the game's own caption data where it's clean, from the nearest creature's name, and from Earshot's own table, which fixes or fills in the rest. English strings; translations can be added as text files.
  • earshot, earshot unlabelled and earshot demo console commands.