Skip to content

Bridge.cfg

Config/Bridge.cfg in the ServUO tree configures the plugin — what it connects to, how often it sweeps the world, and which features it publishes.

The installer puts it there. Editing it is a shard operator’s job, not a builder’s.

Three kinds of key, and they carry very different risk:

  • Connection — where the sidecar is, and how much the plugin may buffer.
  • Sweep intervals — how often the plugin walks part of the world. These are the performance dial. Every sweep runs on the game’s core thread, so shortening one costs the game, not the sidecar.
  • Caps and switches — feature toggles, and the bounds on anything a player can influence.

Connection

KeyWhat it is for
HostSidecar address the shard dials out to
PortSidecar port
QueueCapBounded queue depth. Full means drop-oldest — never block the game
PublicConnectAddressAddress players connect to, published to the site
LinkUrlWhere in-game account linking sends a player

Sweeps

KeyWhat it is for
StatSweepSecondsCharacter stat sweep interval
DecaySweepSecondsHouse decay sweep
EconomySweepSecondsEconomy totals sweep
ChampSweepSecondsChampion spawn sweep
PageSweepSecondsStaff page sweep
GuildSweepSecondsGuild roster sweep
CitySweepSecondsCity / governor sweep
PresenceSweepSecondsWho is online
HousingSweepSecondsHousing sweep

Guilds

KeyWhat it is for
GuildRosterMembersPerLineFrame cap — a roster is split rather than sent oversized
GuildRosterGuildsPerTickHow many guilds are swept per tick

Points

KeyWhat it is for
PointsSweepSecondsPoints sweep interval
PointsLeaderboardEnabledPublish a leaderboard at all
PointsTopNLeaderboard length
PointsSystemsWhich point systems to include
PointsProfileEnabledShow points on a character profile
PointsProfileRankShow rank as well as total

Market

KeyWhat it is for
MarketEnabledPublish player vendor listings
MarketSweepSecondsMarket sweep interval
MarketSweepBatchVendors per sweep
MarketMaxListingsCap on listings published

Ruleset

KeyWhat it is for
RulesetEnabledPublish the shard ruleset
RulesetIncludeScheduleInclude the event schedule with it

Town crier

KeyWhat it is for
TownCrierMaxLinesLines per notice
TownCrierMaxLineLengthCharacters per line
TownCrierMaxActiveConcurrent notices
TownCrierMaxDurationSecLongest a notice may run

News

KeyWhat it is for
NewsMaxTitleLengthTitle cap
NewsMaxBodyLengthBody cap
NewsMaxExternalHow many site posts are carried in-game
NewsAnnounceDurationSecHow long an announcement shows

Admin commands

KeyWhat it is for
AdminWriteEnabledWhether the site may write to the game at all. Off by default
AdminAccessFloorMinimum in-game access level for admin actions
AdminBroadcastMaxLengthBroadcast cap
AdminReasonMaxLengthReason field cap
AdminBanMaxDurationSecLongest ban the site may set

Scheduled events

KeyWhat it is for
EventsEnabledWhether the website may run scheduled events against this world at all. Off by default, and deliberately a separate switch from AdminWriteEnabled
EventsSweepSecondsHow often expired gates are collected and lost objects pruned
EventsMinSaveIntervalSecShortest gap between world saves, counted from the last save by anyone. A save asked for too soon is refused rather than queued

Event caps

KeyWhat it is for
EventsMaxCreaturesCreatures one call may spawn
EventsMaxBossesEnhanced "boss" variants one call may spawn
EventsMaxNpcsOracle NPCs one call may place
EventsMaxDecorDecoration items one call may place
EventsMaxGateMinutesLongest a temporary gate may stand
EventsMaxOwnedPerRunObjects one run may own across every verb — the runaway bound
EventsMaxSpreadHow far from the chosen spot things may be scattered
EventsMaxBossMultiplierHow much harder than normal a boss may be made
EventsMaxGrantPerRunHow many characters one item grant may reach
EventsMaxGrantStackHow large one granted stack may be

The oracle NPC

KeyWhat it is for
EventsOracleMaxLinesKeyword lines it will answer to
EventsOracleGreetRangeHow close a player must be to be greeted
EventsOracleSpeechRangeHow close a player must be to be heard
EventsOracleGreetCooldownSecHow often it greets the same player
EventsOracleAnswerCooldownSecHow often it answers the same player

Leases

KeyWhat it is for
LeaseMaxDurationSecLongest lease this shard will hold, whatever the site asks for. A longer request is refused rather than shortened
LeaseGraceSecHow long a restored lease stays listed, so a late teardown still gets a verdict

Participation

KeyWhat it is for
ParticipationSweepSecondsHow often everyone standing in a run's area is credited
ParticipationKillWeightWhat one kill inside the area is worth against one minute in it
ParticipationMaxRunsRuns counted at once
ParticipationMaxMembersMembers counted per run
ParticipationMaxRadiusWidest area an event may declare
ParticipationGraceSecHow long a closed run's tally stays readable
ParticipationSnapshotChunkMembers resolved per yield of the game's core thread

Accounts

KeyWhat it is for
SignupModeHow game accounts may be created
AccountCreateEnabledAllow creation at all
RequireIpForCreateRequire a real client IP
AccountNameMaxLengthAccount name cap
AccountPasswordMaxLengthAccount password cap

This list is checked against the shipped Bridge.cfg on every build, so a key added by a protocol change turns this page red rather than going undocumented.

QueueCap bounds the drop-oldest queue between the game and the writer thread. When it fills, the oldest events are discarded — which is the correct behaviour, because the alternative is a game server that stutters when a sidecar is slow. Raising it buys tolerance for longer sidecar outages at the cost of memory; it never buys correctness.

GuildRosterMembersPerLine exists because a roster is the only fat frame this bridge emits — a real 155-member guild measured about 10.8 KB. Rosters are split across lines rather than sent oversized. See The bridge.

The shipped Bridge.cfg is the authority; link/PLAN.md §10 documents the config keys and SHARD_PREREQS.md covers what a shard needs before any of this works.