Guide updated
Rankings now use the original service
The original client now consistently uses its ranking service; earlier advice that Firestore is the default and the service is optional describes older snapshots. Valid signed-run credentials still govern the heartbeat, called every 60 seconds of game time. Seal acquisition retains up to eight attempts, three-second pauses, 15-second request timeouts and an 80-second overall budget; authentication rejection stops retries. This does not prove the private service's internal implementation or uptime.
The 120-second overall and 600-second Pokémon upload gates, all-time damage preservation, friend top-50 scope, 8/6/2-hour caches and the 5c97df2e cumulative damage cap are unchanged. The run timeline therefore keeps its actual scoring calculations and old-share restoration. Transport changes do not increase combat damage or alter event dates; refresh the correct ranking and check upload eligibility before treating a delayed list as lost progress.
Why an original leaderboard summary can look old
Historical original snapshot before 4 November; see the linked 4 November update for current account and room services: Original b742e437 extends the cache lifetime for all-time summary entries (S: keys containing _all4) to 8 hours. The r: entry cache remains 6 hours and other cached entries remain 2 hours. These are client-cache lifetimes, not upload deadlines, run-duration caps or a change to combat damage. A cached summary is not proof that a run was rejected or deleted; compare the same account, board and period before drawing that conclusion. The upload signature/retry rules and the run-timeline damage cap remain the reviewed 5c97df2e rules. The Wiki calculator estimates the cap; it neither sends a score nor refreshes the original leaderboard cache. b742e437 also adds a separate optional ranking-service route. It requires an explicit vps ranking selection and is disabled for the emulator; the published default still uses Firestore, independently of the new room default. In that optional route, authenticated run-start credentials, score submission, own/friends records, reports and account-ranking deletion use the ranking API; public top summaries do not require authentication. During advancing gameplay, a beat is prepared at each 60-second run-time threshold with time, level, kills and Judgment summary damage; sending requires that optional route and valid credentials for the current account. This is not a new save interval or proof of score acceptance. Failed optional calls do not establish successful submission or automatic Firestore fallback. Backend enforcement was not tested.
Ranking: longer seal retries and All-time damage
The client requests each player’s run seal up to 8 times, with 3-second retry gaps and at most 15 seconds per request. Requests are bounded by an 80-second client window; a new attempt needs at least 2 seconds remaining. 401/403 stops retries. A qualified run lacking a seal now shows a connection warning, including a team missing any member’s seal. This cannot recover an older unsealed run. In All-time, a higher damage record is saved even when time does not improve and both top-50 lists are missed; the prior better time/level/kills are preserved and pending time uploads retain the higher damage. Friends only also fetches friends and yourself outside the All-time top 50, sorts by positive damage and shows at most 50, cached for 2 hours. Other periods and species tables retain their top-50 scope. The global position badge does not become a friends-only rank. Upload damage caps and minimum run times are unchanged.
A fresh server seal is required for every run
The client requests each player’s run seal up to 8 times, with 3-second retry gaps and at most 15 seconds per request. Requests are bounded by an 80-second client window; a new attempt needs at least 2 seconds remaining. 401/403 stops retries. A qualified run lacking a seal now shows a connection warning, including a team missing any member’s seal. This cannot recover an older unsealed run. In All-time, a higher damage record is saved even when time does not improve and both top-50 lists are missed; the prior better time/level/kills are preserved and pending time uploads retain the higher damage. Friends only also fetches friends and yourself outside the All-time top 50, sorts by positive damage and shows at most 50, cached for 2 hours. Other periods and species tables retain their top-50 scope. The global position badge does not become a friends-only rank. Upload damage caps and minimum run times are unchanged. Before a new run, check sign-in, public profile and connectivity. Every co-op member needs their own seal; preserve local saves. Missing ranking alone does not establish a save failure.
Upload cap, separate from combat damage
For the original client’s score field, use t = integer run seconds clamped to 1–86,400. Before t = 1,800, uploaded damage is 0. From t = 1,800, it is max(0, min(floor(cumulative credited damage), (t − 1,799) × 50,000)). Thus the limits are 50,000 at 30:00 and 5,050,000 at 31:40. The cap uses total run time, even if Judgment began late. It also covers Halloween Gengar because that encounter uses the same score field and submission path. This does not cap damage per hit, DPS or the in-run display; enter the cumulative credited score, not raw DPS multiplied by time.
Time gates and separate run records
A run needs at least 120 seconds for ordinary boards and 600 seconds for its Pokémon-specific board. The uploaded time is an integer bounded to 1–86,400 seconds. The new rt field retains this run’s time when the stored best-time record belongs to an earlier, longer run. Best time and best damage can come from different runs. Daily, weekly and monthly boards still retain their top 50; this update does not reset them.
Public-source and server boundaries
The two fixes were committed on October 26 at 22:17 and 22:37 UTC; this Wiki review is dated October 27. Backend rules, Firebase setup and TURN deployment files were removed from the public repository. Their removal does not prove those live services were disabled or changed. Historical explanations keep their immutable sources and dates. These are reviewed client conditions, not a live audit of the private server.
Which game version does this describe?
Latest original execution rules: 5c97df2e (October 27); reviewed October 28. Pokémon, move, evolution and legal-learning data remain d567c6da; Halloween stays f7fbcfc4. All 13 tools are retained. New original calculations use the independent equipment pool and corrected buff transition. Previously versioned shares without an execution pin retain d567c6da behavior and display that pin; use Recalculate with current rules to migrate deliberately. Community remains its separate fixed snapshot and keeps its own rules. The iframe remains https://survivorpoke.com/play/. Source tests and projections do not establish that both live games behave identically. Public bytes observed October 28 match embedded build 3667bcad81, declared selective upstream f7fbcfc4. The Community calculator is the fixed 395a0e47 snapshot (build marker 559ca0a7c8), not a reproduction of that current embedded build.
Tools
Related pages
- PokéSurvivor Updates · 2026-11-04: 4 November: online account pulls and service changes
- PokéSurvivor Updates · 2026-11-01: October 31–November 1 original update: saves, gifts and room connections
- PokéSurvivor Updates · 2026-10-28: October 27: steadier co-op, defense and ranking fixes
- Co-op: accounts, friends, rooms and revives
- Long runs: prepare for the Judgment of Arceus
- Cloud sync: verify the account and merge behavior
- Great Witch Gengar (score target)
Game data & sources
The linked game files show where these stats, costs and rules come from. Updates to the game may change them.
Data version: d567c6da
- https://pokesurvivor.com/en/news/
- https://pokesurvivor.com/version.json
- https://pokesurvivor.com/js/app.min.js?v=eae98df1a1
- https://github.com/JPTER78/pokesurvivor/blob/c121040ff0278383e4ae67bc24f17e4cfd141a24/js/app.min.js
- https://github.com/JPTER78/pokesurvivor/commit/ad6c025958a2feb39345874673da845c57546681
- https://github.com/JPTER78/pokesurvivor/commit/c121040ff0278383e4ae67bc24f17e4cfd141a24
- https://github.com/JPTER78/pokesurvivor-live/blob/639adaf9dc019cdcfe54b16c21a5fcfe33b9e2fa/README.md
- https://github.com/JPTER78/pokesurvivor-live/blob/639adaf9dc019cdcfe54b16c21a5fcfe33b9e2fa/.github/workflows/live.yml
- https://github.com/JPTER78/pokesurvivor/blob/23c0d653dfd215690d4a617d6e0593231b9dccd3/js/app.min.js
- https://github.com/JPTER78/pokesurvivor/blob/23c0d653dfd215690d4a617d6e0593231b9dccd3/sw.js
- https://github.com/JPTER78/pokesurvivor/blob/23c0d653dfd215690d4a617d6e0593231b9dccd3/en/news/index.html
- https://github.com/JPTER78/pokesurvivor/commit/23c0d653dfd215690d4a617d6e0593231b9dccd3
- https://github.com/JPTER78/pokesurvivor/blob/90cdd941da04793e3023b4a28aff552819c70f21/js/app.min.js
- https://github.com/JPTER78/pokesurvivor/commit/90cdd941da04793e3023b4a28aff552819c70f21
- https://github.com/JPTER78/pokesurvivor/blob/b742e43772e37d077549bf2fad3d615d60f42961/js/app.min.js
- https://github.com/JPTER78/pokesurvivor/blob/b742e43772e37d077549bf2fad3d615d60f42961/css/style.css
- https://github.com/JPTER78/pokesurvivor/blob/b742e43772e37d077549bf2fad3d615d60f42961/en/news/index.html
- https://github.com/JPTER78/pokesurvivor/commit/e5997d563fd271168d4c801fbe46274622f92c13
- https://github.com/JPTER78/pokesurvivor/commit/b742e43772e37d077549bf2fad3d615d60f42961
- https://github.com/JPTER78/pokesurvivor/blob/5c97df2e764a11f7a99b46c2104413a073f117ad/js/net/ranking.js
- https://github.com/JPTER78/pokesurvivor/blob/5c97df2e764a11f7a99b46c2104413a073f117ad/js/net/coop.js
- https://github.com/JPTER78/pokesurvivor/blob/5c97df2e764a11f7a99b46c2104413a073f117ad/js/game.js
- https://github.com/JPTER78/pokesurvivor/blob/5c97df2e764a11f7a99b46c2104413a073f117ad/README.md
- https://github.com/JPTER78/pokesurvivor/blob/5c97df2e764a11f7a99b46c2104413a073f117ad/js/entities/player.js
- https://github.com/JPTER78/pokesurvivor/blob/5c97df2e764a11f7a99b46c2104413a073f117ad/js/data/items.js
- https://github.com/JPTER78/pokesurvivor/blob/5c97df2e764a11f7a99b46c2104413a073f117ad/js/net/net.js
- https://github.com/JPTER78/pokesurvivor/blob/5c97df2e764a11f7a99b46c2104413a073f117ad/js/core/touch.js
- https://github.com/JPTER78/pokesurvivor/blob/5c97df2e764a11f7a99b46c2104413a073f117ad/js/ui/run-ui.js
- https://github.com/JPTER78/pokesurvivor/blob/5c97df2e764a11f7a99b46c2104413a073f117ad/js/ui/test.js
- https://github.com/JPTER78/pokesurvivor/blob/5c97df2e764a11f7a99b46c2104413a073f117ad/js/entities/enemy.js
- https://github.com/JPTER78/pokesurvivor/blob/5c97df2e764a11f7a99b46c2104413a073f117ad/js/systems/spawner.js
- https://github.com/JPTER78/pokesurvivor/blob/5c97df2e764a11f7a99b46c2104413a073f117ad/contacto/index.html
- https://github.com/JPTER78/pokesurvivor/blob/5c97df2e764a11f7a99b46c2104413a073f117ad/js/data/changelog.js
- https://survivorpoke.com/version.json