Мы сделали opolyx быстрее
Числа на кубиках теперь появляются почти мгновенно, страницы загружаются быстро, где бы вы ни были, а между ходами стало куда меньше ожидания.

Простыми словами
Скорость — это тоже фича. Мы посвятили целый этап тому, чтобы opolyx ощущался шустрым, и вы заметите это, как только сядете за стол.
Нажмите "Бросить кубики", и кубики тут же оживают — раньше числам требовалось полторы секунды, чтобы устаканиться, а теперь они выпадают в мгновение ока. Продолжить ход, купить имущество, заплатить аренду — всё откликается в тот же миг, как вы действуете.
- Числа на кубиках появляются почти мгновенно после броска.
- Главная страница и руководство загружаются быстро из любой точки мира.
- Меньше ожидания между ходами, когда игра за столом раскачивается.
- Больше никакой паузы "the game server is waking up" при открытии доски.
Ничто из этого не меняет того, как играют, — те же правила, та же доска. Просто теперь она быстрее уходит у вас с дороги.
Для тех, кому интересны детали
Время от клика до чисел на кубиках упало с ~1.5s примерно до 0.3–0.75s. Накладывались две вещи: анимация устаканивания ~700ms после прихода ответа и медленный сетевой путь. Мы укоротили перекат до 250ms, и теперь ходящий игрок проигрывает кубики оптимистично на 0ms, а затем применяет авторитетное состояние и события от daemon, как только они возвращаются, — не дожидаясь более медленной realtime-рассылки.
Главный выигрыш был в сети. Игровой сервер (daemon) авторизует собственный JWT игрока, а не серверный секрет, поэтому браузер теперь может обращаться к нему напрямую, не отскакивая через server action на Vercel. Прямые вызовы проверяют токен HS256 локально на daemon (signature, exp, audience) — аутентификация ушла с ~40ms до ~1–5ms — и откатываются к ретранслятору server action при любой ошибке, так что ничего никогда не отправляется дважды.
# Browser → daemon directly (with a verified server-action fallback)
NEXT_PUBLIC_DAEMON_URL=https://opolyxgame-daemon-production.up.railway.app
# Daemon verifies the player's token locally (HS256), ~40ms → ~1-5ms
SUPABASE_JWT_SECRET=<legacy HS256 secret from Supabase → Settings → API>Под капотом daemon и база данных теперь сидят рядом: мы перенесли продовый Supabase из Tokyo в Singapore, разместив его рядом с daemon на Railway, так что вызовы daemon↔db стали локальными — аутентификация ~200ms → ~40ms, а игровая работа ~250ms → ~45ms. Модульный node:https keep-alive Agent держит это соединение тёплым между ходами (первый бросок хода больше не подключается заново «вхолодную»). И каждая маркетинговая и контентная страница — home, how-to-play, rules, guide, юридические страницы, sign-in — теперь пререндерится по локали для всех десяти языков, так что они отдаются из edge cache без холодного старта lambda.
