NewNew concept: 1 win = 1 to 5 bricks (instead of an entire skyscraper). 11 bricks = closed highrise. Just like in the game itself
NewBrick bonuses: +1 vs human opponent, +1/+2/+3 for Hard/Extreme/Impossible AI, +1 for golden victory. Floor color = skin used in that win
NewGolden crown spire on highrises where the last brick was a special win (golden victory or Impossible AI). Star and smoke above the crown
New“Share city” button — link /embed/city/:id gives a beautiful PNG preview card in Telegram/Discord/Reddit with name, 4 stats and city silhouette
NewShare modal has three different links (embed widget, profile, iframe snippet) plus a system Share button (Web Share API)
Newiframe snippet to embed in blogs. Supports ?theme=day|night and ?nocontrols=1 query parameters
New“Compare with…” button: 3 tabs — Friends, Top from leaderboard, Search by exact username. Opens a side-by-side page with both cities, score and crowned leader
NewCompare score = towers × 100 + crowns × 50 + bricks. Same formula in Hall of Fame “Size” tab
New“Compare cities” button on another player’s public profile — one click
New“Share comparison” button on the compare page itself — copies a link with SSR preview for messengers
NewSeparate PNG preview card for compare — in Telegram you see names, score and both cities side-by-side
New8-second city flythrough video recording (.webm/.mp4, codecs vp9→vp8→h264). Where Web Share is supported — straight to system share sheet, otherwise downloads a file. REC indicator with progress bar and countdown
NewHall of Fame: top 20 by 4 metrics (city size, bricks, towers, crowns) + global player/brick/tower counters. Medals 🥇🥈🥉 for top-3, your row is highlighted with “(you)”
NewClick on a row in Hall of Fame — navigate to that player’s profile (via global open-profile event)
NewMini-preview of cities in Hall of Fame — lightweight SVG silhouette without WebGL, you instantly see the shape
NewOn an empty city: “See top cities” button — you instantly see what to aim for
New“Next highrise: 7/11 bricks” indicator under city stats
NewClick on a tower — modal with the full list of wins it was built from, with brick count from each (grouped by source_id)
NewHover on a floor: opponent, AI difficulty, date. Hover on the whole tower: closed/building status, period from first to last win, number of wins in this stack
NewHovered tower is highlighted and slightly scaled up (1.06)
NewTower filters: all / crowned / contains Impossible AI / last week. Non-matching towers go semi-transparent
NewTime-lapse “History” — plays back city construction chronologically with a date in the corner. Stop with any button
New4 camera presets: Iso, Top, Cinematic (low angle), FPV-flythrough + auto-rotate. Smooth transition between presets
New4 time of day presets (Night, Morning, Day, Sunset) — sky color, fog, sun and exposure all change. At night windows light up and stars come out
NewSeasonal weather: snow in winter, rain in spring, leaves in autumn (off in summer). Toggled with a separate button
NewCity snapshot with filters (Vivid, B&W, Sepia) and watermark “Highrise Heist · Name · N wins”. Where Web Share is supported — share sheet, otherwise downloads
New6 saved camera view slots in localStorage. Found a nice angle, saved with a name, come back in one click
NewMinimap in the corner: gold = crowned, purple = under construction, blue = regular, dim = filtered out. Click a dot — camera flies to that tower. Hide with × button
NewFullscreen mode for the city + “ESC to exit” hint
NewSmoke particles above crowned towers (additive blending), lit windows with emissive glow, road textures with markings, ground texture, stars at night
NewIntro camera animation on first load and tower grow from the ground with a slight stagger
NewESC closes any modal (Share, Compare, Hall of Fame)
NewNew endpoint /api/buildings/leaderboard: top-20 by 4 metrics + global counters + cache age. 5-min cache
NewNew endpoint /api/buildings/feed/recent: feed of last 20 wins of all players + 24h and all-time stats. Brick total computed via SQL CASE expression. 30-sec cache
NewNew index idx_victory_buildings_recent (created_at DESC) — speeds up /feed/recent on large volumes
NewSSR page /embed/compare/:id1/:id2 for crawler bots: serves og:image and redirects user to SPA
ImprovedPOST /api/buildings returns the updated city right away — UI updates without a second request. Saves a round-trip after every win
Improved2D fallback for non-WebGL devices rewritten for the new towers model — SVG isometric, wheel zoom, drag-pan, tap to select
ImprovedMobile/low-power mode: fewer windows, basic shadow map, no tone mapping, devicePixelRatio=1, 250 weather particles instead of 600
Improvedprefers-reduced-motion: disables auto-rotate, crown pulsing, smoke and weather
PerformanceOG previews via @resvg/resvg-js (Rust binding, ~50ms) instead of headless chrome (saves ~195MB of dependencies). LRU cache 500 images / 1h. After a new win invalidates both city and compare images
PerformanceIntersectionObserver pauses rendering when city is off-screen. visibilityState — when tab is in the background. Tower windows are rendered as a single InstancedMesh
PerformanceVersioned OG cache keys (v1:userId, cmpv1:id1-id2). Bumping the prefix on SVG redesign — old previews refresh
ImprovedTower windows now light up at night on first profile load, not only after clicking a time-of-day preset
ImprovedWindows no longer hang in the air while towers grow from the ground (intro and time-lapse) — they appear only after the city is built
Improved8-second flythrough recording no longer “eats” the enabled auto-rotate — after the video it is restored if it was active
PerformanceRoads (~10 pieces) now share one geometry, material and texture instead of cloning each — saves ~10 GPU textures and geometries on every profile open
PerformanceVictory City correctly releases all WebGL resources when the profile is closed: fixed leaks of recording progress timer, mouse handlers and a race condition between unmount and the animation loop