diff --git a/xbox/live/mac-test.html b/xbox/live/mac-test.html
index d9f8b066df..73106b2acc 100644
--- a/xbox/live/mac-test.html
+++ b/xbox/live/mac-test.html
@@ -37,6 +37,7 @@
+
@@ -315,6 +316,7 @@
const logicalInset = { top: 0, right: 0, bottom: 0, left: 0 };
const insetProbe = document.querySelector("#inset-probe");
function resizeCanvas() {
+ if (!globalThis.__oskiewarRenderDensity) return;
const bounds = canvas.getBoundingClientRect();
const width = Math.max(1, bounds.width);
const height = Math.max(1, bounds.height);
@@ -340,8 +342,8 @@
// raster area against primitive count on a machine suspected of
// software-rasterizing the frame.
// Logical coordinates stay at 1080; pixels follow the actual display.
- const density = Math.min(1, height / logicalHeight *
- Math.max(1, window.devicePixelRatio || 1)) * resolutionScale;
+ const density = globalThis.__oskiewarRenderDensity(height, logicalHeight,
+ window.devicePixelRatio || 1, resolutionScale);
const pixelWidth = Math.round(logicalWidth * density);
const pixelHeight = Math.round(logicalHeight * density);
if (canvas.width !== pixelWidth || canvas.height !== pixelHeight) {
@@ -352,22 +354,16 @@
context.imageSmoothingQuality = "high";
}
}
- resizeCanvas();
- // The sliding performance default: measured on the Xbox, the frame is
- // substantially raster-area-bound — res .66 alone held 60 fps — so the
- // shell watches the game's own measured rate and trades backing-store
- // resolution for frames, a step at a time. Struggling frames also drag
- // the fixed-step simulation into catch-up work that deepens the hole,
- // so cheaper pixels pay that debt off too. A manual res flag from the
- // experiment lane pins the dial; zero hands it back.
+ // Reduce resolution only when drawing is expensive. A refresh or power
+ // cap cannot be fixed by shrinking pixels. Manual res pins the dial.
setInterval(() => {
if (manualResolution !== null) return;
const fps = Number(globalThis.__oskiewarDisplayFps) || 60;
- if (fps < 52 && resolutionScale > .62) {
- resolutionScale = Math.max(.62, resolutionScale - .12);
- resizeCanvas();
- } else if (fps >= 58 && resolutionScale < 1) {
- resolutionScale = Math.min(1, resolutionScale + .06);
+ const next = globalThis.__oskiewarNextResolutionScale?.(resolutionScale, {
+ fps, renderCpuMs: globalThis.__oskiewarFrameStats?.renderCpuMs || 0,
+ }) ?? resolutionScale;
+ if (next !== resolutionScale) {
+ resolutionScale = next;
resizeCanvas();
}
}, 2000);
@@ -889,13 +885,14 @@
if (new URLSearchParams(location.search).has("self-play"))
globalThis.__oskiewarSelfPlay = true;
+ const browserTheme = new URLSearchParams(location.search).get("theme");
function capabilities() {
const mac = navigator.userAgent.includes("Mac");
const hasGamepad = padSeats.some((padIndex) => padIndex !== null);
return { platform: mac ? "macos" : "web",
showControlLegend: false,
inputFamily: touchEnabled ? "touch" : hasGamepad ? "xbox" : "keyboard",
- colorScheme: matchMedia("(prefers-color-scheme: light)").matches ? "light" : "dark",
+ colorScheme: socialPreview ? "light" : browserTheme || "sun",
socialPreview: new URLSearchParams(location.search).has("social-preview"),
// Offline replay burns ask the game for world pixels only. This is a
// render capability, never a player preference, so HUD-free footage
@@ -1460,6 +1457,7 @@
import createOskiewarVoice from "/oskiewar-voice.mjs";
import createOskiewarMidi from "/oskiewar-midi.mjs";
import createFrameDriver from "/frame-driver.mjs";
+ import { renderDensity, nextResolutionScale } from "/render-quality.mjs";
import mountAccount from "/account.mjs";
import mountWizard from "/oskiewar-wizard.mjs";
import { mountWorkshop } from "/oskiewar-workshop.mjs";
@@ -1481,6 +1479,9 @@
// `__oskiewarAccountDoor` to raise a panel, and both want their real owner
// in place first. The door sounds like the rest of the furniture — a soft
// tick on approach, a firmer knock on the way through.
+ globalThis.__oskiewarRenderDensity = renderDensity;
+ globalThis.__oskiewarNextResolutionScale = nextResolutionScale;
+ globalThis.__oskiewarInsetsChanged();
const accountDoor = mountAccount({
sfx: (name, amount, pan) => oskiewarSfx.drum(name, amount, pan),
probe: !socialPreview,
@@ -1604,7 +1605,13 @@
// it as soon as the game mints one — copying the URL is sharing the
// fight.
setInterval(() => {
- if (globalThis.__oskiewarTouch?.screen === "title") return;
+ if (globalThis.__oskiewarTouch?.screen === "title") {
+ if (globalThis.__oskiewarRoomUnavailable && !workshopRoute) {
+ history.replaceState(null, "", "/" + location.search);
+ globalThis.__oskiewarRoomUnavailable = "";
+ }
+ return;
+ }
if (globalThis.__oskiewarLocalVersus) {
if (location.pathname !== "/") history.replaceState(null, "", "/" + location.search);
return;
diff --git a/xbox/live/oskiewar.js b/xbox/live/oskiewar.js
index e74808f756..c35f046e7b 100644
--- a/xbox/live/oskiewar.js
+++ b/xbox/live/oskiewar.js
@@ -81,7 +81,7 @@ if (hostAnalytics)
};
// Monotonic count of committed revisions to this piece (next revision included).
-const buildVersion = 147;
+const buildVersion = 148;
const floorY = 1800;
// Oskiewar now opens as a versus game. An ordinary web visit hosts a room —
// the URL becomes the invitation — and until a friend opens it, all you can
@@ -1445,7 +1445,8 @@ function losAngelesSun() {
function displayTheme() {
const sun = losAngelesSun();
const caps = typeof capabilities === "function" ? capabilities() : {};
- if (caps.platform === "web" || caps.platform === "macos") {
+ if ((caps.platform === "web" || caps.platform === "macos") &&
+ (caps.colorScheme === "light" || caps.colorScheme === "dark")) {
return { ...sun, light: caps.colorScheme === "light" ? 1 : 0 };
}
return sun;
@@ -1952,10 +1953,8 @@ let acFeed = {};
// is still moving and this is the shape we may want to compare against. Flip
// it true and the wheel comes back exactly as it was.
const PAL_SELECT = false;
-// The frame recorder remains intact for future review tooling, but replay is
-// not part of the match flow. One flag restores the viewer, its controls and
-// its offer together; production currently moves directly through results.
-const INSTANT_REPLAY = false;
+// Keep recent frames for match review and automatic solo-death replays.
+const INSTANT_REPLAY = true;
let selecting = false;
// Self-play is a harness mode: both fighters run the bot, no pad can enter or
// leave it, and rounds roll over on their own.
@@ -2119,6 +2118,7 @@ let previousRoundName = "";
let roundReplayFrames = [];
let roundReplayLastAt = 0;
let instantReplay = null;
+let soloDeathReplayPending = null;
let replayOfferPrevious = [];
let shellMode = "MENU";
let gameplayStarted = false;
@@ -2711,6 +2711,7 @@ function makeRoundReplayFrame(now) {
return {
ropes: structuredClone(skateRopes),
players: players.map((player) => ({
+ present: !lobbyActive() || player.pad === 0,
x: player.x, y: player.y, z: player.z,
vx: player.vx, vy: player.vy, vz: player.vz,
facing: player.facing, grounded: player.grounded,
@@ -2792,9 +2793,21 @@ function applyRoundReplayFrame(frame, now) {
function finishInstantReplay(now) {
if (!instantReplay) return;
+ const respawn = instantReplay.respawn;
applyRoundReplayFrame(instantReplay.endFrame, now);
for (const player of players) delete player.replayGeometry;
instantReplay = null;
+ if (respawn) {
+ soloDeathReplayPending = null;
+ deathCinematic = null;
+ if (respawn.lobby) beginVersusLobby(now, { title: respawn.title });
+ else {
+ resetRound(now, true);
+ shellMode = respawn.title ? "MENU" : "GAME";
+ gameplayStarted = !respawn.title;
+ }
+ return;
+ }
roundOverAt = now;
replayOfferPrevious = padSnapshots[0]?.down?.slice() || [];
}
@@ -2807,6 +2820,7 @@ function finishInstantReplay(now) {
function frameAction(frame) {
let action = 0;
for (const player of frame.players) {
+ if (player.present === false) continue;
if (!player.alive) action = Math.max(action, 1);
if (player.hit) action = Math.max(action, 1);
if (player.blockFlash > 0) action = Math.max(action, .7 * player.blockFlash);
@@ -2840,11 +2854,12 @@ function replayRampStep(speed, action, elapsedSeconds) {
Math.min(1, Math.max(0, elapsedSeconds) * replayRampPerSecond);
}
-function startInstantReplay(now) {
+function startInstantReplay(now, respawn = null) {
if (!INSTANT_REPLAY) return false;
if (roundReplayFrames.length < 2) return false;
- const frames = roundReplayFrames.slice();
+ const frames = respawn ? roundReplayFrames.slice(-90) : roundReplayFrames.slice();
instantReplay = { frames, cursor: 0, lastAt: now, paused: false,
+ respawn,
previous: padSnapshots[0]?.down?.slice() || [],
action: replayActionCurve(frames), speed: 1,
endFrame: frames[frames.length - 1] };
@@ -2855,6 +2870,16 @@ function startInstantReplay(now) {
return true;
}
+function queueSoloDeathReplay(player, now) {
+ if (player.pad !== 0 || netSession || roundViewer || localVersusActive() ||
+ versusActive() || survivalActive() || soloDeathReplayPending || instantReplay) return;
+ soloDeathReplayPending = { at: now + 500000,
+ title: shellMode === "MENU", lobby: lobbyActive() };
+ deathCinematic = { startedAt: now, loserPad: player.pad,
+ winnerPad: player.pad, cause: roundCause, solo: true };
+ emitSignal("killcam", player.pad, player.pad, 1);
+}
+
function updateInstantReplay(now, dt) {
if (!instantReplay) return;
const down = padSnapshots[0]?.down || [];
@@ -4032,7 +4057,7 @@ function updateLobbyMortality(now) {
player.stance = "HIT";
delete player.frozenGeometry;
delete player.frozenAt;
- deathCinematic = null;
+ queueSoloDeathReplay(player, now);
}
// Deprecated with PAL_SELECT — see the flag.
@@ -6163,35 +6188,19 @@ function netDrainHostInbox() {
inbox.length = 0;
}
-// A visitor who arrived through a shared address and found nobody hosting
-// takes the room over — the link a friend sent must keep working after the
-// sender's tab closed. The chair-holder claims first; a seat-denied watcher
-// waits three times as long, so two arrivals at a dead address stagger
-// instead of racing, and updateVersusConflict catches the tie anyway.
+// An address with neither a live host nor a saved replay returns to the
+// title. This works before sign-in; Start handles the account door later.
function updateVersusClaim(now) {
if (globalThis.__oskiewarVersusCapable !== true || !roundViewer) return false;
- // Claiming a dead address means hosting, and hosting is playing. Whoever
- // arrives next deserves a room with a named fighter standing in it.
- if (!versusAllowed()) return false;
- // A room with a live host is a fight to join; a room with a stored demo is
- // a replay page and keeps being one — versus rooms never record, so only a
- // truly empty address falls through to the claim.
- if (roundViewer.live || roundViewerDemo || roundViewerMode === "DEMO") {
- versusClaimArmedAt = 0;
- return false;
- }
- if (!versusClaimArmedAt) {
- versusClaimArmedAt = now;
- return false;
- }
- const wait = roundViewer.seat === "challenger"
- ? versusClaimAfterUs : versusClaimAfterUs * 3;
- if (now - versusClaimArmedAt < wait) return false;
+ if (roundViewer.live || roundViewerDemo || roundViewerMode === "DEMO" ||
+ !roundViewer.empty) return false;
const name = roundViewer.name;
versusFallbackBridge = roundViewer;
roundViewerStop?.();
roundViewerStop = null;
roundViewer = null;
+ globalThis.__oskiewarRoundBridge = null;
+ globalThis.__oskiewarRoomUnavailable = name;
roundViewerMode = "";
roundViewerDemo = null;
roundViewerStatus = "CONNECTING";
@@ -6199,7 +6208,7 @@ function updateVersusClaim(now) {
versusClaimArmedAt = 0;
versusRoomName = name;
globalThis.__oskiewarRemotePad = null;
- beginVersusLobby(now);
+ beginVersusLobby(now, { title: true });
telemetry("VERSUS_CLAIM", name);
return true;
}
@@ -6331,6 +6340,7 @@ function resetRound(now, resetMatch = false, keepMap = false) {
bullets.length = 0;
grenades.length = 0;
roundReplayFrames = [];
+ soloDeathReplayPending = null;
roundReplayLastAt = 0;
instantReplay = null;
replayOfferPrevious = [];
@@ -6762,6 +6772,15 @@ function updateCamera(dt) {
}
function updateCameraDoll(dt, now) {
+ if (deathCinematic?.solo && !instantReplay) {
+ const player = players[deathCinematic.loserPad];
+ const width = 680 * portraitPull();
+ const target = { x: player.x, y: player.y - 110, z: player.z };
+ cameraDoll.track({ target,
+ position: { x: target.x, y: target.y, z: target.z - width * 1.35 },
+ width, perspective: 0, fov: 55, roll: 0 }, dt, 12);
+ return;
+ }
if (skateparkMap && !survivalActive() && shellMode === "GAME") {
const rider = players[netSession?.seat || 0];
const width = Math.max(1100, 900 * cameraAspect) * playerCameraZoom;
@@ -8380,6 +8399,7 @@ function killPlayer(target, killerPad, now, cause = "KO") {
if (!lobbyActive()) emitSignal("killcam", killerPad, target.pad, 1);
playDrum("snare", 1.15, panPlayer(target));
updateLobbyMortality(now);
+ if (killerPad === target.pad) queueSoloDeathReplay(target, now);
// The training opponent is the one everybody gets for free, and its fight is
// already running under the title screen — so its head is the one number
// the whole site can share without anybody signing in. The count follows the
@@ -10099,6 +10119,22 @@ function gameSim() {
// gates the fight, the claim and the wire, so it is settled once on the tick
// rather than re-asked by each of them mid-paint.
updateAccountDoor();
+ if (instantReplay?.respawn || soloDeathReplayPending && now >= soloDeathReplayPending.at) {
+ padSnapshots[0] = samplePad(0);
+ inputPads[0] = padSnapshots[0];
+ if (!instantReplay) {
+ const resume = soloDeathReplayPending;
+ captureRoundReplay(now, true);
+ if (startInstantReplay(now, resume)) {
+ shellMode = "GAME";
+ gameplayStarted = true;
+ } else soloDeathReplayPending = null;
+ }
+ if (instantReplay?.respawn) {
+ updateInstantReplay(now, dt);
+ return;
+ }
+ }
if (resimPending) {
startResim(resimPending, now);
resimPending = null;
@@ -15991,7 +16027,12 @@ function gamePaint() {
if (matchHud && survivalActive() && shellMode === "GAME" &&
gameplayStarted && !roundResult && !counting)
drawSurvivalHud(titleInk);
- if (survivalActive() && roundResult && resultUiReady) {
+ if (instantReplay?.respawn) {
+ const label = "replay";
+ const size = compactLayout() ? 34 : 42;
+ typeWrite(label, viewCenterX() - handleWidth(label, size) / 2,
+ hudSafeRect().bottom - size - 12, size, ...titleInk);
+ } else if (survivalActive() && roundResult && resultUiReady) {
drawSurvivalResult(titleInk, statusShadow);
} else if (reelMinimal && roundResult && resultUiReady) {
// One fact, in the middle of the frame: who won. The recording stops on
@@ -16093,7 +16134,7 @@ const versusLabelNoise = new Set(["NONE", "UP", "DOWN", "LEFT", "RIGHT",
// the address, and until they arrive every move the lone fighter makes is
// named back at them — the empty room as training mode.
function drawVersusHud(t, ink, run) {
- if (!versusLane() || shellMode !== "GAME") return;
+ if (instantReplay || !versusLane() || shellMode !== "GAME") return;
if (!lobbyActive()) return;
const hud = hudSafeRect();
const compact = compactLayout();
diff --git a/xbox/live/render-quality.mjs b/xbox/live/render-quality.mjs
new file mode 100644
index 0000000000..8527611def
--- /dev/null
+++ b/xbox/live/render-quality.mjs
@@ -0,0 +1,14 @@
+// Preserve sharp pixels when the browser limits refresh rather than draw time.
+export function renderDensity(height, logicalHeight, devicePixelRatio = 1, scale = 1) {
+ return height / logicalHeight * Math.max(1, Math.min(2, devicePixelRatio)) * scale;
+}
+
+export function nextResolutionScale(scale, { fps = 60, renderCpuMs = 0 } = {}) {
+ // A 30 Hz display or Energy Saver can leave most of every frame idle.
+ // Shrinking those frames cannot buy more refreshes and only blurs the image.
+ if (fps < 52 && renderCpuMs > 12)
+ return Math.max(.62, scale - .12);
+ if (fps >= 58 || renderCpuMs < 8)
+ return Math.min(1, scale + .06);
+ return scale;
+}
diff --git a/xbox/live/render-social-preview.mjs b/xbox/live/render-social-preview.mjs
index 5b532844a5..12f531a5e2 100644
--- a/xbox/live/render-social-preview.mjs
+++ b/xbox/live/render-social-preview.mjs
@@ -18,7 +18,7 @@ const posterSize = { width: 1200, height: 630 };
const videoSize = { width: 720, height: 1280 };
const captureSeconds = 2;
const loopSeconds = captureSeconds * 2;
-const sources = ["oskiewar.js", "mac-test.html", "frame-driver.mjs"];
+const sources = ["oskiewar.js", "mac-test.html", "frame-driver.mjs", "render-quality.mjs"];
const sourceHash = createHash("sha256");
for (const name of sources) sourceHash.update(await readFile(join(live, name)));
sourceHash.update(await readFile(new URL(import.meta.url)));
@@ -43,7 +43,7 @@ function fileFor(pathname) {
// Every module the shell imports has to be listed, or the page dies on a 404
// and the capture comes out empty rather than loudly wrong.
if (["/oskiewar.js", "/oskiewar-sfx.mjs", "/oskiewar-voice.mjs",
- "/oskiewar-midi.mjs", "/frame-driver.mjs", "/account.mjs",
+ "/oskiewar-midi.mjs", "/frame-driver.mjs", "/render-quality.mjs", "/account.mjs",
"/oskiewar-wizard.mjs", "/oskiewar-fighter.mjs", "/oskiewar-workshop.mjs", "/oskiewar-map.mjs",
"/round-room.mjs"].includes(pathname)) return join(live, pathname.slice(1));
if (pathname === "/aesthetic.computer/lib/auth0-otp.mjs")
diff --git a/xbox/live/round-room.mjs b/xbox/live/round-room.mjs
index fda42ebd86..3e09e33193 100644
--- a/xbox/live/round-room.mjs
+++ b/xbox/live/round-room.mjs
@@ -41,6 +41,9 @@ export class RoundRoom {
this.timers = { reconnect: null, replay: null };
this.listener = null;
this.live = false;
+ this.hostKnown = false;
+ this.replayChecked = false;
+ this.hasReplay = false;
this.lastState = null;
this.generation = 0;
this.stopped = false;
@@ -87,6 +90,7 @@ export class RoundRoom {
this.seat = String(message.content?.seat || "");
this.emit("seat", { seat: this.seat });
} else if (message.type === "oskiewar:status") {
+ this.hostKnown = true;
this.live = Boolean(message.content?.live);
this.emit("status", { ...message.content,
label: this.live ? "live" : "waiting" });
@@ -183,6 +187,9 @@ export class RoundRoom {
if (generation !== this.generation || this.stopped) return;
if (response.ok) {
const replay = (await response.json()).replay;
+ if (generation !== this.generation || this.stopped) return;
+ this.replayChecked = true;
+ this.hasReplay = Boolean(replay);
if (replay) {
if (!this.deliverySeen.has("replay")) {
this.deliverySeen.add("replay");
@@ -192,6 +199,7 @@ export class RoundRoom {
}
return;
}
+ if (response.status === 404) this.replayChecked = true;
} catch {}
if (!this.live || force) this.schedule("replay", () => this.loadDemo(force), 1800);
}
@@ -204,6 +212,10 @@ export class RoundRoom {
}, delay);
}
+ get empty() {
+ return this.hostKnown && !this.live && this.replayChecked && !this.hasReplay;
+ }
+
clear(slot) {
if (slot) { clearTimeout(this.timers[slot]); this.timers[slot] = null; return; }
for (const name of Object.keys(this.timers)) this.clear(name);
@@ -216,6 +228,9 @@ export class RoundRoom {
this.track("round_followed");
this.live = false;
this.lastState = null;
+ this.hostKnown = false;
+ this.replayChecked = false;
+ this.hasReplay = false;
this.deliverySeen = new Set();
this.clear();
++this.generation;
diff --git a/xbox/live/social/manifest.json b/xbox/live/social/manifest.json
index 8808cac7c5..aad8eec239 100644
--- a/xbox/live/social/manifest.json
+++ b/xbox/live/social/manifest.json
@@ -1,7 +1,7 @@
{
"format": "ac.oskiewar.social-preview",
"version": 2,
- "build": "693a8b3c7abb4263",
+ "build": "5a6eb04e0e09e8a2",
"theme": "light",
"imageWidth": 1200,
"imageHeight": 630,
diff --git a/xbox/live/social/oskiewar-title.jpg b/xbox/live/social/oskiewar-title.jpg
index bfb286c9b316cc5a95eccae1d46e0710ef5e94f8..fedb3084f5fdc30310ac0badbaf2214cc3c9130a 100644
GIT binary patch
literal 53361
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