Explore this period

Planning signals for the selected scope. Review the evidence before changing hosting.

Map capacity pressure

{metricPercent(pressure.fullMapHours, pressure.knownMapHours)}

{metricDuration(pressure.fullMapHours)} full / {metricDuration(pressure.knownMapHours)} known map time

Share of pooled known map-hours with all lobbies full. {pressure.coveredMaps} of {pressure.totalMaps} map groups have known capacity.

{#if pressure.knownMapHours === 0}

Capacity pressure is unavailable. Occupancy can still be recorded without a reported player limit.

{/if}

Map groups can overlap in clock time; this is not simultaneous fleet saturation.

Compared with the previous {report.days === 1 ? '24 hours' : `${report.days} days`}

{#if prior.partialHistory}Partial previous history{/if}
Time with players{utilizationDelta === null ? '—' : signed(utilizationDelta, ' pp')}Percentage points · {metricPercent(prior.summary.active, prior.summary.observed)} → {metricPercent(report.summary.active, report.summary.observed)}
Player-hours{playerNew ? 'New' : playerDelta === null ? '—' : signed(playerDelta, '%')}{prior.summary.observed > 0 ? metricNumber(prior.summary.playerHours) : '—'} → {report.summary.observed > 0 ? metricNumber(report.summary.playerHours) : '—'}

Known server time: {metricDuration(prior.summary.observed)} previous · {metricDuration(report.summary.observed)} current

{#if prior.summary.observed <= 0 || report.summary.observed <= 0}

A comparison needs known occupancy in both windows. The available durations are still shown.

{:else if prior.summary.playerHours === 0 && report.summary.playerHours > 0}

No previous player-hours: a percentage change has no baseline.

{/if} {#if prior.partialHistory}

Retained scope history does not span the full previous window. Deltas use the available observations without extrapolation.

{/if}
Compare observation windows
Previous
{format.period(prior.since)} – {format.period(prior.until)}{metricDuration(prior.summary.active)} with players / {metricDuration(prior.summary.observed)} known · {metricDuration(prior.summary.unknown)} unknown
Current
{format.period(report.since)} – {format.period(report.now)}{metricDuration(report.summary.active)} with players / {metricDuration(report.summary.observed)} known · {metricDuration(report.summary.unknown)} unknown

pp means percentage points. Collection gaps, changing fleet size, and retained history can affect both comparisons. Equal windows do not guarantee equal observation coverage.

Hosting suggestions

Advice only · Rules v1

Suggestions use historical observations. Check the current lineup before trying a change. These experiments do not estimate rejected joins or change servers automatically.

{#if recommendations.length}
{#each recommendations as suggestion (JSON.stringify([suggestion.game, suggestion.map]))}

{suggestion.map}

{suggestion.game.toUpperCase()}{#if suggestion.tentative}Tentative{/if}
{suggestion.title}

{suggestion.evidence}

Why & what to watch

{suggestion.reason}

{suggestion.outcome}

{/each}
{:else}

No map observations in this scope yet. Select another scope or leave collection running to generate suggestions.

{/if}
How Rules v1 chooses a suggestion
  • Trial an additional lobby when all tracked lobbies are full for at least {HOSTING_RULES.pressureExpansion * 100}% of known-capacity time.
  • When capacity is unavailable, at least {HOSTING_RULES.occupancyExpansion * 100}% occupied known time can suggest a tentative additional-lobby trial. Occupancy does not establish saturation.
  • Review idle hosting when occupied known time is at most {HOSTING_RULES.idleUtilization * 100}%, and either measured pressure is below {HOSTING_RULES.quietPressure * 100}% or capacity is unavailable.
  • Missing occupancy prompts a reporting check. Other cases suggest watching hosting or checking capacity reporting.

Less than {HOSTING_RULES.minimumEvidenceHours} hour of relevant known time, missing capacity, or substantial unknown status marks advice as tentative. These are trial policies, not validated demand forecasts. Collection gaps are omitted from all rules.

View activity by weekday and hour