Топ-100 Roblox → NeoEngine

Срез RoVitals. У каждой игры: что это, ужатый корлуп, 10 перекрутов. «Не наш тип» — не копируем сим, а сжимаем в раунд (яйцо → steal как brainrot).

Наш тип и не наш

Это не «движок не умеет». Хост в матче и есть авторитет. Вопрос: это короткая партия 2–10 или сим, который должен жить, когда все вышли.

Что уже умеем

2–10 игроков, веб, без фермы. Уже есть: сеть, полоса препятствий, футбол, краска, толчок. Новый режим цепляется к этому, не пишем движок заново.

Сейчас

Собирается из того, что есть. MM, побег по полосе, Evade, швыряние, удар по блоку без кейсов.

Позже / мини

Тот же класс игры, но после MM или как 60–90 сек внутри другой. Volleyball после футбола. Timebomb — мини, не игра 3.

Не наш тип как сим

Хост-стар тянет почти любой раунд 2–10. Отдельный сервер нужен, если мир живёт без партии (база/пет/сад), или это город на сотни, или рейтинг со стрельбой против читов. Каталог фруктов и пушек — годы контента, не сеть. Сим не копируем, зрелище в 60–180 сек — да.

Две архитектуры

Матч всегда хост-стар. Сигналинг не выбирает хоста и не считает физику. Хост ушёл — партия не умирает: certified checkpoint уходит преемнику. B нужна, когда мир должен жить после пустой комнаты (двор, сад, пет). Логин/SQL ещё не пишем.

A. Хост-стар + передача хоста как сейчас

Хост-стар: WebRTC к хосту, handoff на hot standby
  • Один браузер — авторитет матча. Остальные шлют intents, хост валидирует и публикует state.
  • Сигналинг: roster, ICE, reconnect token. Не выбирает gameplay-хоста.
  • Хост передаётся, не «мир умер»: voluntary (beforeunload → freeze → checkpoint → standby ACK + drain), planned (лучше качество, residency/cooldown, безопасная фаза), emergency (пропал heartbeat / выпал из roster → преемник по joinOrder, затем peerId).
  • Короткий hide не отдаёт хост. Вернувшийся бывший хост не публикует epoch-0.
  • Пустая комната: same-token может вернуться в incarnation. Чужой peer начинает новую.

B. Хост-стар + сайт как БД логин / сейв

Хост-стар плюс сайт: логин, SQL сейвы
  • Матч тот же, с той же передачей хоста. Сайт хранит остаток между сессиями.
  • Грузим блоб в хост на старте раунда. Пишем на выход / конец раунда / редкий лут. Килобайты JSON, не тики.
  • Sqlite на сайте. Redis — когда несколько воркеров читают один профиль, не чтобы ускорить физику.
  • Нужно, когда двор/сад/пет должны жить после того, как комната опустела. Не вместо handoff.

Защиты в A (уже в движке)

Intents, не client authority

Клиент шлёт движение/aim. Хост режет sequence, rate 30/s, бюджет скорости, статическую коллизию. Публикует только принятое.

Certified migration

Proposal/vote/commit на rosterDigest + incarnation + revision. Преемник restore exact checkpoint. Без checkpoint публикация закрыта (кроме узкого epoch 0→1).

canPublishAuthority

Пока install не прошёл — state/checkpoint не уходят в эфир. Сигналинг membership сам по себе не доказательство, что peer может стать хостом.

Одна identity

Same-token takeover: новый сокет вытесняет старую вкладку. Occupancy считает и reservation. Лимит 10 не обходится reconnect.

Receipt на стартовые роли

Сервер подписывает epoch-zero receipt. Migrated host его не получает. Хост всё ещё может соврать про исход. Рейтинг / ценный лут — отдельный авторитетный сервис, это B или dedicated.

Когда всё-таки умерло

Не «хост закрыл вкладку». Умерло, если никого не осталось и reservation истекла. Тогда A не хранит двор до завтра — для этого B.

Подхватились

Живой срез RoVitals: вирусы за сутки, новинки в топ-100 и кто сильно поднялся по рангу. Клик — карточка, если игра уже в нашей сотне.

вирус +100% за сутки

Резкий взлёт CCU. Смотрим петлю, не только цифру.

новинка свежие в топе

Появились в наших снимках недавно и уже держат онлайн.

подхватились рост ранга

За сегодня сильно поднялись или горят +40–99%.

CCU

наведи курсор на точку, кликни — срез часа

Как выбрать хит под NeoEngine

Host-peer 2–10, веб, без огромного бэкенда. Меняешь один глагол, партия 60–180 сек. Кликеры и city RP не копируем как сим — крадём зрелище в раунд.

Плотность

Каждые несколько секунд кто-то делает что-то другому.

Общее внимание

Все смотрят на одну вещь: бомбу, убийцу, яйцо, шар.

Асимметрия знания

Кто-то знает роль или таймер. Остальные гадают.

Весело мёртвым

После смерти ты зал, не «выйти в лобби».

Клип

Падение, флинг, ошибка выстрела.

Первый раунд

Понятен без скина. Объясняется за 5 секунд.

Что реально проще сделать сейчас

Уже есть host-peer, obby, football, MECCHA. Новый gameMode, не форк хамелеона. MM в работе — это игра 2.

1. Murder Mystery

Роли, нож, пушка. Потом 10 слоёв в карточке #4.

средне · сейчас

2. Tower of Hell / Keyboard Escape

Obby уже есть. Саботаж секций.

легко

3. Evade / Tag

Одна сущность гоняет лобби.

средне

4. Fling Things

F-shove уже в движке.

легко-средне

5. Kick a Lucky Block без кейсов

Эффект из физики, не из гачи.

легко

6. Volleyball — после футбола

Не третья игра.

средне

Сто игр

Метка «сейв» — завтра заходишь, и твоё ещё там (спид, стейдж, база, сад). «Только раунд» — партия/лобби; скины и дерево скиллов не делают из ToH сад. Keyboard / Monkey / Long Arm, Kick a Lucky Block, Cars VS Tape, Fling-дом, Spiral/step carefully — сейв. ToH, MM, BedWars, поезд/рейс — раунд.

#ИграЧто этоCCUграфик24чЛучший перекрутСейвТип

10 вариантов на каждую игру

И у «не наш тип» тоже: сначала ужимаем корлуп в короткую партию, потом ещё девять глаголов. Паттерн как hide → краска. 60–180 сек, 2–10 человек.

Источник CCU: rovitals.com/top