Skip to content

Echoes — your other characters live in the towns

Echoes is a small mod for Outward that puts your other saved characters into the world as townsfolk. Whichever region a character last saved in, you will find them strolling that region's town: saved in Chersonese → Cierzo; Enmerkar → Berg; Abrassar → Levant; Hallowed Marsh → Monsoon; Antique Plateau → Harmattan; Caldera → New Sirocco. A character who saved inside a town wanders that town.

They look like themselves (face, hair, skin, gender) and wear the armour they had on. They walk the same routes the town's real NPCs walk. You cannot talk to them, trade with them, hurt them or make them fight — they are echoes, not companions.

At a glance - Type: gameplay mod (cosmetic) - Requires: BepInEx 5 (Mono branch), ForgeKit, SideLoader - Config: BepInEx/config/cobalt.echoes.cfg - Commands: BepInEx/config/Echoes_cmd.txt - Save: nothing — echoes are never saved; they are re-made every time a town loads

For players

Install, play. Every time you enter a town, each of your other characters whose last save was in that town's region appears somewhere along a townsperson's route. The character you are currently playing never echoes. Retired (legacy) characters are skipped unless you turn IncludeRetired on.

Save another character somewhere new and their echo moves the next time you load a town (the mod re-reads your save folders at game start; the echoreload command re-reads them without a restart).

Settings — BepInEx/config/cobalt.echoes.cfg

[General]
## Spawn echoes of your other saved characters in towns.
Enabled = true
## Also echo retired (legacy) characters.
IncludeRetired = false

[Look]
## Give the echo the weapon/shield the character had equipped. Off = armour only.
ShowWeapons = false

[Behaviour]
## Echoes cannot be killed. They never fight back or target anyone regardless.
Invulnerable = true
## Borrow a waypoint patrol when the town has one; otherwise a free-wander area.
PreferPatrols = true
## Walk speed modifier (0.3 = the vanilla stroll, 1.1 = a run). 0 = copy the borrowed NPC's own value.
WanderSpeed = 0
## How many echoes a town shows at once (0 = every eligible character). With EnableCycling on,
## the rest wait in reserve and rotate in as shown echoes wander off-screen.
MaxPerTown = 5

[Cycling]
## Rotate the reserve in: when a shown echo leaves the camera view (far enough, for long enough),
## despawn it and promote the next character in reserve. Off = the MaxPerTown picks stay put.
EnableCycling = true
## How often (seconds, real time) the cycling tick checks for off-screen echoes.
CyclePollSeconds = 1.5
## Consecutive off-screen ticks before an echo is cycled out (a brief pan should not churn it).
CycleDebounceTicks = 2
## Only cycle an echo that is at least this many metres away, even if just off the screen edge.
CycleDistanceFloor = 8

[Inn]
## Extra echoes scattered across the town's inn (hallways, stairs, common room — never the
## rentable bed room). A separate budget from MaxPerTown. 0 = no inn pass.
InnMaxPerTown = 4
## Reject any inn scatter point within this many metres of a bed cluster (the sleeping room).
InnBedExcludeRadius = 6
## Beds within this many metres of each other count as one sleeping-room cluster.
InnBedMergeRadius = 4
## How close a resident NPC must be to an inn bed to count as an inn resident (the scatter anchors).
InnResidentRadius = 25

[Multiplayer]
## Spawn echoes while hosting a room with guests. Off by default — a guest has no
## template for the host's saves, so they would see an un-dressed body.
SpawnInMultiplayer = false

Commands — BepInEx/config/Echoes_cmd.txt

Write one line into the file and it runs on the next poll.

Command What
echoes List every saved character, the town it echoes into, whether it belongs to the current scene and is live, and the routes the town offers.
echoreload Re-read the save folders and rebuild the echoes (after saving another character).
echospawn [name] Put every echo (or one, by name) in the current scene regardless of region — for looking at them.
echodespawn Remove every echo in the scene.
echoinnscan Report the inn this town holds: bed clusters (excluded), inn-bed clusters, resident-NPC anchors, and the proposed scatter points — for tuning the inn pass live. Master only.

Notes

  • A town shows up to MaxPerTown echoes (default 5), reshuffled per load. With EnableCycling on (default), the rest wait in reserve and rotate in as shown echoes wander off the camera (at least CycleDistanceFloor away, for CycleDebounceTicks consecutive polls) — never one you are talking to. echospawn <name> ignores the cap.
  • The inn pass scatters InnMaxPerTown extra echoes (default 4, a separate budget) across the inn's common area — hallways, stairs, main room — and never the rentable bed room. It finds the inn from the town's own inn beds and their resident NPCs; if it cannot (no inn bed, no nearby resident), it places none and logs why. Run echoinnscan in each town to tune the radii before trusting it. Inn tuning is owed a live pass.
  • Echoes exist only in the six towns. Dungeons, the overworld and interiors get none.
  • If a town has no walking NPCs at all (an unusual state), the echo stands where it spawned.
  • Multiplayer: the host places echoes; guests see them only when SpawnInMultiplayer is on, and then without the outfit and look (SideLoader needs the template on the guest's side too).