From 5af5ee1cbafca849b67a026e17419b76c5d29c16 Mon Sep 17 00:00:00 2001 From: Dorian Date: Mon, 9 Mar 2026 00:00:48 +0000 Subject: [PATCH] perf: adaptive performance mode for mobile Auto-detect low-end devices (< 4 cores or touch) and reduce visual complexity: 60% fewer particles, 6 vs 16 speed lines, 15 vs 40 stars, halved datacenter buildings/racks, skip LED blinking animations, fewer GPU graveyard chips, reduced afterimages and exhaust particles. Toggle in fight viewer (LO/HI button), persisted in localStorage. Co-Authored-By: Claude Opus 4.6 --- frontend/src/components/FightViewer.vue | 18 +++++++ frontend/src/game/FightScene.ts | 68 +++++++++++++++---------- frontend/src/game/fight/config.ts | 32 ++++++++++++ frontend/src/game/fight/particles.ts | 10 ++-- 4 files changed, 97 insertions(+), 31 deletions(-) diff --git a/frontend/src/components/FightViewer.vue b/frontend/src/components/FightViewer.vue index b67e5d7..4da191b 100644 --- a/frontend/src/components/FightViewer.vue +++ b/frontend/src/components/FightViewer.vue @@ -13,6 +13,7 @@ import { sfxRandomComedy, sfxRandomFail, sfxVineBoom, sfxEmotionalDamage, } from '../game/audio' import { isKokoroLoading, getKokoroProgress } from '../game/tts' +import { isPerfMode, setPerfMode } from '../game/fight/config' interface Round { roundNumber: number @@ -73,6 +74,7 @@ const hitTextY = ref(30) const glitching = ref(false) const soundOn = ref(true) const insanityMode = ref(false) +const perfMode = ref(false) // Zap the winner const zapSent = ref(false) @@ -155,6 +157,12 @@ function toggleInsanity() { } } +perfMode.value = isPerfMode() +function togglePerfMode() { + perfMode.value = !perfMode.value + setPerfMode(perfMode.value) +} + // Staggered log const logItems = ref<{ type: string; round: number; text: string; color: string }[]>([]) @@ -808,6 +816,16 @@ async function _doReplay() { +