GDD: Гильдия¶
Overview¶
Гильдия — постоянная именованная группа, к которой принадлежит игрок. Один игрок — одна гильдия. Это первая в игре социальная единица типа многие-ко-многим: всё, что у нас есть сегодня, — это либо пара (друзья + Bond), либо дуэт (пати). Гильдия — слой, где игрок принадлежит месту, а не человеку, и где его отсутствие кто-то замечает.
Целевая метрика — ретеншн D7–D30 через социальный якорь: дать игроку причину открыть приложение, не связанную с основным лупом, и людей, которые заметят, что он пропал.
Гильдии — база индустрии: каждый бенчмарк исследовательского корпуса их имеет, и эта фича строится как жанровый стандарт, а не как эксперимент. Никакой A/B-раскатки, холдаут-когорты или экспериментального гейтинга в этом документе нет — фича выкатывается всем, а её проникновение и ретеншн читаются из обычной продуктовой аналитики, как у любой другой фичи.
Доказательная база: reports/guild-research-2026-07-22.md и
reports/guild-research-addendum-2026-07-22.md. Второй содержит разборы
бенчмарков (Legend of Mushroom — где гильдия называется Family — плюс
Clash of Clans, AFK Arena, Idle Heroes, SWGoH и ещё шесть игр) и базовые
частоты жизненного цикла гильдий, на которые опирается этот документ.
Центральная проблема дизайна¶
Все гильдейские механики в корпусе бенчмарков исходят из того, что вклад — это активный выбор игрока: какой отряд отправить, как хорошо сыграл, какую энергию потратить. Бой в Lootborn серверно-авторитетный и автоматический — у игрока нет ввода во время боя. Импортированный наивно, «вклад» схлопывается в мощь × время онлайн.
Ответ дизайна — копировать формы, а не изобретать контр-устройства, и граница проходит ровно посередине фичи. Кооперативный ежедневный слой — донаты, помощь согильдейцам, гильд-босс — берёт механики Legend of Mushroom как есть, а эти механики сами по себе капованы и построены вокруг участия: донатная лесенка с бесплатным первым и плоским опытом, помощь, оплачиваемая только за первые несколько в день, сундуки босса, выдаваемые всем поровну за пороги уровней. Соревновательный сезонный слой — клан-поинты — сознательно оставлен открытым для трат: ожидается, что большие и платящие гильдии будут доминировать в таблице, как они доминируют на любой другой соревновательной поверхности игры. Кооперация капована, потому что её капует бенчмарк; соревнование открыто, потому что таков монетизационный дизайн.
Отношение к существующим социальным системам¶
Гильдия не должна переизобретать то, что уже есть. Она достраивается сверху:
| Слой | Система | Что даёт |
|---|---|---|
| Пара | Друзья + Bond | Долгая 1:1 лояльность, подарки, боевой бонус в пати |
| Дуэт | Пати | Ось билда — класс и скиллы напарника |
| Группа | Гильдия | Принадлежность, общий счёт, место, откуда тебя будет не хватать |
(Система сюзерена / вассала встречается в ранних дизайн-материалах, но не является частью живой игры; этот документ считает её несуществующей.)
Конкретно: у гильдии не будет своей системы подарков (она у друзей), своего 1:1 чата (приватные каналы есть), своего парного бонуса к мощи (эту ось держат Bond и пати). У неё будет ростер, канал чата, общая полоса прогресса и общий контент.
Mechanics¶
Спецификация продюсера — база; гильд-босс, гильдейская экономика, Guild
Showdown и Guild War спроектированы в §15–§18. Всё выходит вместе —
деление на инкременты из ранних версий снято решением, ## Scope
описывает один релиз.
1. Сущность гильдии¶
У гильдии есть:
- Эмблема — из заранее заготовленного набора. Намеренно не загружаемая игроком: не нужен пайплайн модерации изображений, нет NSFW-риска, и эмблемы остаются читаемыми на тех мелких размерах, где они реально рендерятся.
- Название — уникальное, в пределах реалма, а не глобально. Реалмы сегментированы по языку и таймзоне, у каждого своя БД, поэтому глобальное пространство имён позволило бы гильдии на одном реалме заблокировать имя на другом, с которым она никогда не встретится, и потребовало бы централизованного реестра резервирования без пользы для игрока. Прецедент из бенчмарков указывает туда же: Clash of Clans вообще не опирается на название как на ключ идентичности — кланы идентифицируются через Clan Tag, и прямой поиск по тегу там первоклассный путь, а Lootborn Warriors показывает копируемый числовой Guild ID прямо на карточке гильдии.
- Тег гильдии — короткий глобально уникальный идентификатор, отображаемый рядом с названием. Обязателен, поскольку слияния реалмов планируются. Именно он делает пореалмовые имена безопасными: саппорт, аналитика и любые будущие кросс-серверные события ссылаются на тег, а слияние не может породить неоднозначную гильдию. Глобальная уникальность обязана следовать из способа построения тега, а не из хеширования идентификатора: короткий тег, обрезанный из UUID, коллизирует, а базы реалмов независимы, так что поймать коллизию будет некому. Поэтому тег несёт компоненту реалма плюс значение, уникальное внутри этого реалма — каждый реалм выдаёт его сам, без кросс-реалмового реестра и без координации. Уникальность тогда держится по построению, в том числе через слияние, потому что два реалма никогда не выпустят одинаковую компоненту реалма.
- Описание — свободный текст, пишет игрок.
- Лидер — ровно один, всегда есть, пока в гильдии есть участники.
- Уровень и опыт — двигаются донатами участников.
- Количество участников — текущее и максимальное; максимум — функция уровня гильдии.
- Список участников — у каждой записи звание, уровень и время последнего онлайна.
- Требуемый уровень игрока — опциональный порог входа, задаёт лидер.
- Тип вступления — автоматическое или по заявке.
Политика коллизий при слиянии. Раз слияния планируются, две гильдии с одинаковым названием рано или поздно окажутся в одном реалме, и дизайн обязан сказать, что тогда происходит, а не выяснять это в инциденте. Правило: название остаётся за более старой гильдией; вторая получает автоматический суффикс и бесплатное переименование в обход кулдауна, плюс почту с объяснением. Возраст — правильный критерий, потому что он объективен, не накручивается и не коррелирует с тратами.
Ещё два следствия слияний: слияние должно приходиться на границу сезона, чтобы клан-поинты и сезонную таблицу не пришлось сводить посреди сезона, — и слияние мгновенно удваивает предложение гильдий, не трогая лимиты участников обоих реалмов, а это ровно тот момент, когда переработка мёртвых гильдий из §12 обязана уже существовать.
Информация о гильдии публична: любой игрок может посмотреть любую гильдию, состоит он где-то или нет. Это важно для рекрутинга — игрок, решающий, куда подавать заявку, должен видеть, куда именно он её подаёт.
2. Состояния членства¶
Состояний членства ровно два — не состоит в гильдии и состоит в гильдии, — а всё остальное это флаги, которые могут сосуществовать. Игрок без гильдии может одновременно держать входящие приглашения и несколько исходящих заявок; это не альтернативные состояния, и интерфейс не должен подавать их как альтернативные.
- Не состоит в гильдии. Независимо от этого у него может быть: ноль или больше входящих приглашений и ноль или больше исходящих заявок.
- Состоит в гильдии. Заявок и приглашений в этом состоянии быть не может — вступление закрывает их все (ниже).
Принятие приглашения или одобрение заявки закрывает все остальные заявки и приглашения игрока — они снимаются, и гильдии, которые их держали, видят, как они исчезают из очередей.
3. Поиск гильдии и вступление¶
Список гильдий. Игрок без гильдии листает гильдии реалма; «активность» требует определения, и документ предлагает такое: хотя бы один участник был онлайн за последние 72 часа. По решению список отсортирован по сезонному рейтингу (клан-поинты по убыванию; тайбрейки — уровень гильдии, затем возраст), а не набран случайно: список для браузинга заодно работает витриной таблицы, и новичок приземляется на реально живые гильдии сверху.
Недоступные гильдии остаются видимыми. Гильдия, куда игрок сейчас не может вступить — полная или выше его по требуемому уровню, — всё равно рисуется на своей рейтинговой позиции, с выключенным действием и причиной на нём («Полная», «Ур. 20+»). Прятать их — искажать картину гильдий реалма; показывать — ставить цель. Исключаются только Дормантные и Ретайрнутые (§12) — они в принципе не принимают заявок. Если список пуст, экран ведёт с действия «Создать гильдию», а не с пустого состояния.
В строке показываются: эмблема, название, уровень гильдии, сезонный рейтинг, участники (текущее / максимум), требуемый уровень, тип вступления и есть ли у этого игрока уже открытая заявка сюда.
Поиск — по точному названию или точному тегу гильдии, без частичных совпадений. Именно по тегу, а не по внутреннему идентификатору: тег — это то, что игрок реально может прочитать в профиле друга и перенабрать. Это осознанное упрощение: точный поиск нужен, чтобы вступить в конкретную гильдию, о которой сказал друг. Для просмотра существует рейтинговый список.
Вступление идёт одним из двух путей:
- Автоматическое — если включено авто-вступление, игрок вступает мгновенно. Сначала проверки: не состоит в другой гильдии, гильдия не заполнена, уровень соответствует требованию.
- Заявка — если авто-вступление выключено, игрок отправляет заявку. Дубликаты от одного игрока отклоняются. Лидер принимает или отклоняет; те же проверки выполняются повторно в момент принятия, потому что гильдия могла заполниться. Шарируемой инвайт-ссылки сознательно нет: вступление идёт через список, точный поиск или прямое приглашение — ничего, что может утечь в публичный канал и накачивать авто-джойн гильдии снаружи.
Приглашения. Лидер может пригласить игрока, не состоящего в гильдии. У игрока может быть несколько приглашений; в каждом видны данные гильдии и автор. Принятие проходит стандартные проверки; приглашение нельзя принять, если игрок уже успел вступить куда-то ещё.
Стимул на вступление. Игрок, вступивший в первую в жизни гильдию, получает единоразовую награду. Это единственная подтверждённая рекомендация по онбордингу во всём корпусе: механизм подбора и стимул на вступление выходят вместе с фичей, а не полировкой следом.
4. Создание гильдии¶
Доступно игроку, не состоящему в гильдии и не находящемуся под кулдауном после выхода — создание не обходит его. Требует название, описание, эмблему и списание хард-валюты. Создатель становится лидером.
Стоимость нужна, чтобы подавить тщеславные гильдии: на популяции, ограниченной реалмом, сто гильдий по одному человеку хуже, чем десять полных, потому что предложение гильдий — это то, что потребляют лидерборды и Showdown.
Название и описание — пользовательский текст, идут через тот же пайплайн
модерации, что и SetUsername, плюс кулдаун на переименование.
5. Роли и права¶
Четыре звания: лидер, заместитель, охрана, без звания. Звания несут реальные права уже в V1 — они не декоративны. Назначение званий остаётся исключительно за лидером, и это осознанно: это единственное право, которое меняет саму структуру власти.
Матрица накопительная — каждое звание имеет всё, что есть у нижних, плюс своё:
Эта таблица — единственный источник истины по правам. UX и ТЗ ниже выводятся из неё; если что-то расходится с этой таблицей, права таковы, как здесь.
| Право | Без звания | Охрана | Заместитель | Лидер |
|---|---|---|---|---|
| Донатить, писать в чат, участвовать в контенте, выйти | ✓ | ✓ | ✓ | ✓ |
| Принимать / отклонять заявки | ✓ | ✓ | ✓ | |
| Приглашать игроков | ✓ | ✓ | ✓ | |
| Исключать участников без звания | ✓ | ✓ | ✓ | |
| Исключать охрану | ✓ | ✓ | ||
| Менять настройки входа — авто-вступление, мин. уровень | ✓ | ✓ | ||
| Редактировать описание | ✓ | ✓ | ||
| Запрещать участнику писать в гильд-чат | ✓ | ✓ | ||
| Назначать и снимать звания | ✓ | |||
| Переименовывать гильдию, менять эмблему | ✓ | |||
| Передавать лидерство, распускать гильдию | ✓ |
Читается как две работы: охрана — ступень рекрутинга, заместитель — ступень операций. Обратите внимание, что осознанно остаётся только у лидера: всё, что меняет идентичность гильдии (название, эмблема) или её структуру власти (звания, лидерство, роспуск).
Четыре правила делают это безопасным, а не поверхностью для гриферства:
- Никто не действует на равного или старшего по званию. Охрана не может исключить охрану, заместитель — заместителя. На заместителя может действовать только лидер.
- Исключения ниже лидера ограничены по частоте. Clash of Clans ограничивает вторую ступень одним киком в 20 минут; та же защита не даёт скомпрометированному или обиженному офицеру опустошить ростер за минуту.
- Число слотов званий ограничено и растёт с уровнем гильдии. Ровно так делает AFK Arena — количество заместителей и офицеров растёт с уровнем. Это ограничивает радиус поражения, делает звание заслуженным и даёт уровню гильдии второе следствие помимо лимита участников.
- Каждое привилегированное действие пишется в лог событий — и кики, и смены званий, и изменения настроек. Право без аудита — это то, как гильдия теряет доверие к собственному руководству.
Причина, по которой именно рекрутинг обязан находиться ниже лидера, — это проблема живучести, а не хотелка. Как написано в спецификации, лидер — единственный, кто может кого-либо принять. Лидер, переставший играть в понедельник, оставляет гильдию неспособной рекрутить до следующего понедельника, когда сработает правило 7 дней, — а гильдия, которая неделю не может никого принять, на популяции, ограниченной реалмом, тихо умирает, выглядя живой. Рекрутинг — то единственное право, отсутствие которого активно вредит.
Все бенчмарки, в которых права задокументированы, делегируют рекрутинг ниже лидера. Clash of Clans выдаёт «принимать заявки» и «приглашать» уже второй ступени (Elder) — той самой, которая не может ни повышать, ни менять настройки, ни даже написать в клан, — а защитой от злоупотреблений служит лимит на кики: один раз в 20 минут. В Idle Heroes у Officials та же админ-панель, что у главы. В Puzzles & Survival «принимать заявки» стоит на R4, одной ступенью ниже лидера R5. Никто не выпускает гильдию с единственным рекрутером.
Ни одного GvG-права нет ни на одной ступени, и это дизайн. Ничто в слое общего контента не является опт-ином, не назначается и не планируется человеком: босс всегда активен, и запускать в нём нечего (§15); паросоставление Showdown автоматическое, и регистрироваться не на что (§17); защитники на войну выбираются из ростера автоматически (§18). Любое из этих прав было бы кнопкой, чей владелец может замолчать в среду и стоить гильдии воскресенья, — тот же аргумент живучести, что опускает рекрутинг на ступень охраны, доведённый до конца. Право, существующее только чтобы быть нажатым вовремя, — это фейл-мод с интерфейсом.
6. Передача лидерства¶
Лидерство переходит, когда лидер покидает гильдию или неактивен более 7 дней. В гильдии с участниками лидер есть всегда.
Порядок наследования обязан быть полностью детерминированным, потому что он выполняется без присмотра и две гильдии в одинаковом состоянии должны разрешаться одинаково:
- Самый давний активный заместитель. Сперва звание, затем стаж в гильдии — не мощь, не уровень и не объём донатов: ничто из этого не должно решать, кто наследует власть.
- Если такого нет — самая давняя активная охрана.
- Если и такого нет — участник с наибольшим числом дней онлайн за последние 7, при равенстве — по стажу, затем по меньшему идентификатору персонажа как финальному детерминированному тайбрейку.
- Если никто из участников не был онлайн в окне наследования вообще, гильдия не «случайно осталась без лидера» — она уходит по пути дормантности из §12, а не назначает лидером отсутствующего игрока.
«Активный» здесь означает «был онлайн в окне наследования», и это один и тот же порог везде, где он встречается, — одна ручка конфига, а не несколько.
Бывший лидер сохраняет членство и понижается до заместителя, а не исключается. Он пропал, а не сложил полномочия. Понижение вместо удаления означает, что вернувшийся основатель находит свою гильдию целой и роль можно вернуть, — это куда лучший исход, чем обнаружить, что тебя выкинули из того, что ты построил. Если слоты заместителей заняты, понижение каскадирует вниз — в охрану, а если заняты и слоты охраны, то в безранговые: бывший лидер приземляется в самое высокое звание со свободным слотом, никого не вытесняя и никогда не переполняя лимит. Добровольная передача лидерства разрешает звание уходящего лидера тем же каскадом.
И уходящему, и принимающему лидеру уходит почта, а сама передача пишется в лог событий.
Это единственное правило неактивности в спецификации продюсера, и оно покрывает только лидера. Остальное — в разделе 12.
Калибровка по бенчмаркам. 7 дней — агрессивный край, что оправдано для популяции, ограниченной реалмом, но должно сопровождаться лестницей предупреждений, а не тихим переключением. Clash of Clans держит самую подробно описанную ротацию на рынке: на 60-й день оффлайна предупреждают весь клан, на 74-й уведомляют лидера, на 83-й — обоих повторно, и только на 90-й наследует самый давний активный Co-Leader; вход в игру в любой момент отменяет процесс. Idle Heroes куда жёстче: неактивный лидер теряет роль на 20-й день, а активный участник автоматически становится офицером на 7-й. Из Clash стоит взять не таймлайн, а видимый обратный отсчёт: передача власти, которая объявляет о себе заранее, даёт гильдии решить проблему социально до того, как её решит механика.
Одно структурное правило стоит перенести: Clash никогда не назначает лидером игрока без звания — если подходящего кандидата нет, ротация просто не срабатывает. Наш фолбэк на «самого активного за 7 дней» мягче и правилен для нашего размера популяции, но означает, что гильдия может вручить лидерство тому, кто об этом не просил. Наследующему игроку надо сказать об этом ясно, а не молча подсунуть вкладку настроек.
7. Управление участниками¶
Кто и что может — это матрица §5, а не второй список здесь. Пересказ только затем, чтобы показать, где работа ложится на практике:
- Охрана и выше — принимать и отклонять заявки, приглашать игрока, не состоящего в гильдии, исключать участников без звания.
- Заместитель и выше — дополнительно исключать охрану и запрещать участнику писать в гильд-чат.
- Только лидер — менять звание участника.
Каждое из этих действий ограничено правилом относительности званий (никогда не действовать на равного или старшего) и лимитом частоты киков.
Любой участник может уйти добровольно. Кики, уходы и смены званий пишутся в лог событий.
Выход и исключение — разные события, и общего кулдауна у них быть не должно. Одно это твой выбор, второе делают с тобой, и единое правило на оба случая либо бесполезно, либо превращается в оружие.
- Добровольный выход → глобальный кулдаун 60 минут до вступления в любую гильдию — и до создания своей. Сознательно короткий, по решению. Часа достаточно, чтобы выход был обдуманным действием, а не промахом по кнопке, и чтобы игрок не прокрутил пять гильдий за одну сессию; и недостаточно, чтобы кого-то запереть. Длительность показывается в подтверждении выхода, до того как игрок его подтвердит.
Важно назвать, чего этот час не делает, потому что ранний черновик опирался на него слишком сильно: он не является средством против прыжков. Прыжки останавливаются там, где лежит награда, а не на входной двери — очки Showdown, заработанные без гильдии, сгорают; смена гильдии посреди недели даёт форфейт дня и вычищает очки игрока из старого зачёта; каждый тир награды платится раз на аккаунт; вступивший во время войны в этом раунде только зритель; донат-кап считается на игрока в день сквозь смены гильдий. Всё это работает при любой длине кулдауна. Длинная блокировка не добавила бы к ним ничего, кроме наказания обычного игрока, попавшего не в ту гильдию. - Исключение → никакого глобального кулдауна, только кулдаун на повторную заявку в эту же гильдию. Глобальная блокировка здесь выдала бы любой охране кнопку, которая выкидывает игрока из всей фичи на сутки, — это инструмент гриферства, а не тормоз. Кулдаун на конкретную гильдию нужен для другого: чтобы отклонённый или удалённый игрок не подавал заявку в цикле, превращая очередь заявок в источник раздражения. Поэтому он длиннее кулдауна выхода — предлагаемое значение по умолчанию сутки — и эта асимметрия не является более жёстким наказанием: он блокирует ровно одну гильдию, ту, которая исключила, а все остальные гильдии реалма остаются доступны немедленно.
Исключённый игрок, таким образом, может немедленно вступить в другую гильдию — и это правильный исход, потому что цель фичи в том, чтобы он состоял в какой-то гильдии, а не в том, чтобы он был наказан за чужое решение.
Членство, закончившееся роспуском или ретайром гильдии, не несёт никакого кулдауна вообще — игрок ничего не выбирал, а гильдии, на которую мог бы указывать пер-гильдейный кулдаун, больше нет.
8. Настройки гильдии¶
Согласно матрице §5, заместитель и выше может включать и выключать авто-вступление, задавать минимальный уровень для входа и редактировать описание. Переименование гильдии, смена эмблемы, передача лидерства и роспуск остаются за лидером.
9. Лог событий¶
Гильдия ведёт хронологический лог вступлений, исключений и добровольных выходов. Это память ростера: именно он позволяет вернувшемуся участнику увидеть, что гильдия жива, а лидеру — увидеть отток.
Расширение сверх спецификации продюсера: в лог стоит писать также смены званий и повышения уровня гильдии. Смены званий — потому что это единственное действие лидера, не оставляющее иных следов; повышения уровня — потому что это общие достижения гильдии, и лог как раз то место, где о них узнаёт участник, который был оффлайн.
10. Гильд-чат¶
Нет в спецификации продюсера, и он обязателен. Система чата уже
описывает канал Clan: игрок автоматически вступает в него при входе в
гильдию и покидает при выходе, читать могут все, право писать включено по
умолчанию и может быть отозвано для конкретного участника. Дизайн чата отдаёт
это главе гильдии; мы расширяем до заместителя и выше, согласно §5, по
той же причине живучести, что и рекрутинг: модераторское право, которое есть
только у лидера, — это право, пропадающее вместе с лидером.
Донаты и лог событий не создают социальной привязанности. Канал, где люди разговаривают, — создаёт. Выпустить ростер без чата — значит выпустить бухгалтерию гильдии без самой гильдии.
Исходим из того, что большинство участников не пишет никогда — данных о частоте постинга в гильд-чатах достать не удалось — и проектируем так, чтобы молчащие получали ценность от всех остальных частей фичи.
11. Донаты, опыт и уровень гильдии¶
Каждый участник может донатить до 5 раз в день. Первый донат дня бесплатный; каждый следующий стоит хард-валюту, и цена растёт внутри дня. Каждый донат даёт одинаковое количество опыта гильдии и личную награду донатеру. Уровень гильдии поднимает лимит участников; избыточный опыт переносится на следующий уровень.
Три свойства этого дизайна стоит назвать, потому что они делают настоящую работу:
- Плоский опыт за донат отвязывает прогресс гильдии от трат внутри пяти дневных слотов: пятый донат кита двигает гильдию ровно настолько же, насколько первый донат F2P-игрока. Кит всё ещё вносит впятеро больше, чем донативший один раз, но потолок у всех одинаковый — и этот потолок и есть анти-китовое устройство.
- Бесплатный первый донат — дневной крючок. Действие в один тап, ничего не стоит, вносит видимый вклад, и именно оно — причина, по которой отваливающийся игрок открывает вкладку гильдии.
- Личная награда означает, что донат никогда не является чистым альтруизмом. Вклад, который приносит пользу только другим, не выдерживает столкновения с отваливающимся игроком.
Растущая кривая цены — сток хард-валюты. Где она встанет относительно существующих стоков (арена-тикеты, скипы AFK, апгрейды сундуков) — вопрос баланса для TECHGD, а не дизайна; но форма такая: дёшево настолько, чтобы второй донат был рутинной покупкой, и круто настолько, чтобы пятый был китовым действием. В Legend of Mushroom кривая ровно такая — первый донат бесплатный, каждый следующий +20 гемов, потолок 100 — и за каждый донат платят вкладом в гильдию плюс купоном ускорения.
Lootborn Warriors (скрины из игры) несёт тот же принцип плоского XP с другой стороны: три тира донатов — Basic за софт-валюту (1/день), Premium и Exclusive за премиум-валюту (1/день и 10/день) — и каждый из них даёт гильдии одни и те же 10 Guild XP, а платные тиры платят донатеру всё больше личной гильд-валюты (200/300/500). Одиннадцать платных донатов обогащают платящего и почти не двигают гильдию: плоский XP — то, что оба бенчмарка реально запускают.
Принцип капированного вклада, и почему у нас он важнее, чем где-либо. Clan Games в Clash of Clans — эталонная реализация того анти-китового устройства, которое нужно этой фиче. Каждый участник может заработать не более фиксированного числа очков в счёт наградных тиров клана; всё сверх капа идёт только в личное достижение и никогда в клановый итог. Выплата устроена по участию: выполнив одну задачу, участник получает тот же полный набор наград, что и выбравший весь кап, а единственный бонус за максимум — один дополнительный предмет, плоский, а не пропорциональный. Заявленная Supercell причина повышения капа — дать меньшим кланам дотягиваться до всех тиров.
Все дневные потолки вклада в корпусе следуют той же логике и намеренно малы: 100 очков активности в день в AFK Arena конвертируются из квестов, которые игрок и так делает; Legend of Mushroom считает только первые 10 помощей другим участникам в день; Last War даёт 30 донатов в день, по одному раз в 20 минут. Консенсус в том, что дневной потолок участника должен быть достижим обычным игроком, чтобы связывающим ограничением был потолок, а не кошелёк. Анти-китовое устройство — это свойство, а не конкретное число.
Наш кап в 5 донатов в день уже имеет нужную форму. Защищать надо то, чтобы ничто и никогда не позволило превысить его за деньги. Кап считается на игрока в день, сквозь смены гильдий — переход в другую гильдию посреди дня не даёт свежий набор донатов.
Второй вектор вклада — и почему его нет в релизе. Legend of Mushroom платит вклад за помощь с таймерами других участников, считая только первые десять помощей в день. Помогающему это ничего не стоит, это чистая взаимность и это полностью ортогонально мощи — что делает такой вектор самой чистой полосой вклада для F2P-игрока. Он вырезан по одной причине: ему нужно видимое участникам ожидание, с которым можно помочь, а у нас его нет. Ничто в нашей петле не является таймером, который другой игрок мог бы сократить, — то есть выпустить это значит сперва построить сам примитив, а это изменение крупнее, чем оправдывает выплата, и оно должно было бы заработать себе место в кор-лупе, а не въехать на гильдии.
Он записан здесь и в явных вырезах как первое, что стоит добавить, если живые данные покажут F2P-участников без полосы вклада. Сигнал, за которым следим: донаты, сконцентрированные в платящем хвосте, а остальной ростер вкладывается только попытками по боссу.
12. Неактивность и мёртвые гильдии¶
Это не пограничный случай — это базовая частота. Единственное крупномасштабное академическое исследование жизненного цикла гильдий (>300 000 персонажей на пяти серверах WoW, 2005–06) обнаружило, что 54% гильдий, наблюдавшихся в июле, исчезли за пять месяцев, что примерно четверть всех видимых в любой момент гильдий исчезает в течение месяца, и что месячный отток участников держится около 25% и примерно одинаков во всех размерных полосах — от гильдий на двоих до гильдий на 150+. Большие ростеры не теряют людей реже; они теряют ту же долю и больше в абсолюте.
Модель выживания из того же исследования (71% точности классификации) показала размер гильдии одним из сильнейших предикторов, а модель прогресса дала размеру отрицательный знак: маленькие гильдии продвигаются быстрее.
С этими числами едут две оговорки: это данные подписочной MMO 2005–06 годов, и они измеряют эмерджентный размер без всякого капа, в игре, где рейд требовал 40 человек. Это базовая частота распада гильдий, а не рекомендация по капу. Но как базовая частота она единственная существующая, и она прямо говорит: гильдейская фича без обработки неактивности за сезон превратится преимущественно в оболочки.
Политики живых игр разбросаны широко и задают диапазон: Puzzles & Survival автоматически распускает альянс после 7 дней неактивности или при падении ниже пяти активных участников — самое агрессивное найденное правило. Idle Heroes автоматически кикает любого нелидера, неактивного 30 дней. Clash of Clans не имеет автокика участников вообще, только ротацию лидера. Единственный задокументированный в корпусе инструмент слияния — слияние гильдий в AFK Journey рукопожатием двух лидеров.
Что дизайн обязан обработать:
- Неактивные участники, занимающие места. Ростер уже показывает время последнего онлайна, так что информация у лидера есть; чего нет — так это причины действовать и инструмента, который масштабируется. Предложение: выводить маркер «неактивен» после настраиваемого порога и дать лидеру массовое исключение таких участников. Автоматический кик в V1 не предлагается: игрок, вернувшийся после недели отсутствия и обнаруживший, что его выкинули, — исход хуже, чем слегка протухший ростер.
- Мёртвые гильдии — где неактивны все. Они хуже неактивных участников, потому что занимают имена и засоряют список рекомендованных. Поэтому у гильдии есть явный жизненный цикл, а не подразумеваемый:
Активна → Дормантна → Ретайрнута.
Гильдия становится Дормантной, когда ни один участник не был онлайн настраиваемое окно. Дормантные гильдии исчезают из списка рекомендованных и не могут принимать заявки и приглашения, но в остальном не затронуты: ростер, уровень, история чата и название сохраняются. Вход любого участника немедленно возвращает гильдию в Активную — дормантность это состояние видимости, а не наказание, и для вернувшегося игрока она должна быть незаметна дальше строчки в логе событий.
Гильдия становится Ретайрнутой только после гораздо более длинного окна без единого входа. Ретайр — это разрушительный шаг, и его надо проговорить, потому что «имя освобождается» тихо подразумевает всё остальное: членства расторгаются, ожидающие заявки и приглашения снимаются, гильдия исчезает из всех списков и лидербордов, её сезонный счёт уходит из таблицы, а имя освобождается для повторного использования — но тег никогда. Сама сущность мягко удаляется и хранится аудиторное окно, чтобы саппорт мог ответить на вопрос «что случилось с моей гильдией».
Тег выводится из обращения навсегда, а не перевыдаётся. Это тот идентификатор, на который смотрят аналитика, тикеты саппорта, история модерации и любая будущая кросс-реалмовая запись; перевыдача его другой гильдии тихо склеила бы две несвязанные истории под одним ключом, и никто ниже по течению этого бы не заметил. Названия — отображаемый текст и могут переиспользоваться свободно: новая гильдия «Ironclad» это другая гильдия с другим тегом, а все системы, которым это важно, ключуются по тегу.
Игрок, вернувшийся после ретайра своей гильдии, безгильдиен, узнаёт об этом на входе — с названием гильдии и датой — и направляется на экран без гильдии, а не в пустое представление гильдии. Его личная гильд-валюта и личные наградные треки сохраняются; что именно сохраняется, а что нет — в следующем пункте.
Заметьте, что Ретайр сейчас единственный путь, расторгающий населённую гильдию, поскольку в V1 нет автоматического исключения. Гильдия из тридцати игроков, бросивших игру в один день, простоит Дормантной всё окно, прежде чем с ней что-то произойдёт, — и это правильный размен: альтернатива это уничтожать гильдии, которые всего лишь уехали в отпуск. - Экономическая форма той же проблемы: в любом дизайне, где доступ гильдии к контенту финансируется общим ресурсом участников, простаивающие места тормозят всех. Это становится несущим на гильд-боссе. - Изоляция, которая делает всё это переносимым, — сформулированная точно, потому что наивная её версия ломает коллективную прогрессию. Что привязано к игроку и переживает выход, исключение и ретайр гильдии: личная гильд-валюта, прогресс личных наградных треков и всё, что уже на них куплено. И AFK Arena, и Idle Heroes подтверждают это явно: уход не отнимает уже заработанное.
Что привязано к гильдии и не переносится: уровень гильдии, её опыт, гильд-технологии и сезонный счёт клан-поинтов гильдии. Это коллективное по определению; если бы оно ходило за игроком, всю прогрессию гильдии можно было бы собрать, рекрутируя тех, кто накопил её в другом месте, и прыжки стали бы оптимальным способом качать гильдию.
Граница такая: что заработал ты — остаётся у тебя; что построила группа — остаётся у группы. При 54% смертности гильдий за пять месяцев первая половина не даёт смерти одной гильдии превратиться в отток нескольких игроков, а вторая не даёт фармить весь коллективный слой.
13. Клан-поинты и сезонный лидерборд¶
Спецификация продюсера: за каждый бой между двумя реальными игроками, состоящими в гильдиях, гильдия победителя получает +1 клан-поинт. Очки считаются на игрока за сезон (по этому и сортируется внутригильдейский лидерборд) и сбрасываются в конце сезона. Лидерборд гильдий сортирует их по клан-поинтам и выходит вместе с существующими сезонными лидербордами игроков.
Учёт — два счётчика, оба в рамках сезона.
- Сезонный счёт гильдии, инкрементируемый в момент квалифицирующей победы. Он принадлежит гильдии: более поздние вступления, выходы и кики его не двигают, потому что он никогда не выводился из ростера — это бегущий счётчик побед, случившихся под знаменем гильдии.
- Личные сезонные очки игрока — по ним сортируется внутригильдейская таблица и по ним выплачиваются личные сезонные награды. Они принадлежат игроку и ходят за ним.
Траты сознательно не изолированы, и это решение, а не недосмотр. Размер ростера покупается донатами, дополнительные арена-тикеты покупаются за гемы, и то и другое поднимает потолок гильдии в таблице. Сезонная таблица — соревновательная поверхность этой фичи, и она вознаграждает большие, активные, платящие гильдии так же, как любая другая соревновательная поверхность игры уже вознаграждает платящих игроков. Ранняя версия этого документа несла три устройства, отвязывавших таблицу от трат: дневной кап на игрока по числу бесплатных тикетов, срез top-N при подсчёте и сезонные слоты вкладчиков. Все три сняты решением: кооперативный слой (донаты, босс) остаётся капованным, потому что его капует бенчмарк; соревновательный слой открыт. Одноимённый конкурент запускает ровно эту форму: внутриигровая таблица Guild CP Rankings в Lootborn Warriors ранжирует гильдии по сырой суммарной боевой мощи участников, поверх слитых серверов, без какого-либо капа.
Остаются две границы, и ни одна из них не кап на траты:
- Квалифицирующие бои: только арена. Арена — единственная живая PvP-поверхность против реальных игроков, и каждый её бой стоит тикет — бесплатный или купленный, — так что у каждого клан-поинта есть цена. Если когда-нибудь появится другая PvP-поверхность, она квалифицируется, только если каждый бой несёт сопоставимую цену: бесплатный цикл рематчей позволил бы двум сговорившимся аккаунтам чеканить очки без ограничений. Помеченные арена-боты исключаются как нереальные оппоненты, а бои между участниками одной гильдии не дают ничего — иначе любая внутригильдейская пара, которую случайно подсунет матчмейкер, была бы гарантированным +1 гильдии независимо от того, кто победил.
- Оппонент тоже должен быть в гильдии — спецификация продюсера как написана, подтверждена как осознанный рекрутинговый инструмент. Победа над безгильдейным оппонентом не даёт клан-поинт, и если сказать игроку почему, каждая сессия арены подталкивает обоих игроков к вступлению в гильдию. На раннем этапе это означает, что многие победы не платят ничего — принято: пустая награда и есть реклама. Гильд-статус обоих бойцов читается вживую в момент завершения матча, никогда не из сохранённого снапшота защитника — тот мог быть снят до смены гильдии.
Сезонные награды гильдии получают участники гильдии на момент закрытия сезона, по полосе финального места гильдии, через существующий почтовый путь недельных рейтингов. Личные сезонные награды идут по собственным очкам игрока и следуют за ним независимо от гильдии. Членство на закрытии — самое простое правило отбора; оно впускает в гильдейскую награду вступившего в последний день, и это принято по той же причине, по которой открыта сама таблица. При кулдауне выхода в один час (§7) это единственное место, где короткий кулдаун реально чувствуется: игрок может оказаться внутри высокорейтинговой авто-джойн гильдии за минуты до ролловера. Остаётся принятым: гильдии, в которые стоило бы прыгнуть на закрытии сезона, заполнены или работают по заявкам именно потому, что выигрывают. Если живые данные покажут всплеск текучки ростеров в последние часы сезона, чинить надо минимальным возрастом членства только для полосовой награды гильдии, а не более длинным кулдауном для всех.
Что сезон реально платит и в чём настоящий приз. Три вещи, осознанно разделённые:
- Полосовые награды гильдии — гильд-валюта и сундук каждому участнику гильдии на закрытии сезона, по полосе финального места. Материально, но достаточно скромно, чтобы низкое место не было откатом прогресса. Проигранный сезон должен стоить статуса, а не мощи.
- Личные полосовые награды — та же форма, но по собственным сезонным очкам игрока, и они следуют за игроком.
- Престиж — вот настоящий приз. Топ-3 гильдии реалма носят сезонный бейдж на рамке эмблемы весь следующий сезон; топ-гильдия объявляется на весь реалм в чате при ролловере, а её участники носят уникальную рамку сезон. Всё это косметика, и она истекает — никогда не мощь и никогда не множитель валюты. Lootborn Warriors платит своим топам ровно эксклюзивной косметикой по той же причине: приз, дающий мощь, превращает таблицу в петлю «богатые богатеют», а приз, который истекает, — это приз, который приходится защищать, ради чего и запускается второй сезон.
14. Идентичность гильдии в игровом мире¶
Эмблема и название рендерятся рядом с игроком везде, где рендерится игрок, — карточка профиля, сообщения в чате, лидерборды, списки оппонентов на арене, пати, друзья. Это самая дешёвая ретеншн-механика во всей фиче: она делает членство видимым, а именно видимость превращает его в идентичность, а не в пункт меню.
GDD профиля уже резервирует слот «Clan / Guild link» ровно под это.
15. Гильд-босс¶
Ростеру нужно что-то делать вместе. Гильд-босс — самый дешёвый способ дать ему общий счёт с недельным ритмом.
Модель — Blazing Cave из Legend of Mushroom, взятая целиком, а не собранная из нескольких игр. Соблазнительная альтернатива — совместить каденс попыток оттуда с наградой за убийство из сквад-RPG и капом вклада из Clash of Clans: три хорошо подтверждённые механики, которые ни одна вышедшая игра не крутит вместе и чьи взаимодействия никто не проверял. Один связный источник лучше трёх хороших идей, которые никогда не встречались.
-
Лестница босса бесконечна и никогда не сбрасывается. Каждый уровень — босс, которого гильдия изматывает и добивает вместе; финального уровня нет, гонки за последним ударом нет, и никакая награда не привязана к тому, кто его нанёс. Лестница — постоянная запись гильдии: гильдия не начинает заново в понедельник, а продолжает с того места, где остановилась, и именно это делает босса единственной гильд-активностью, которая вознаграждает долгое, ничем не примечательное членство. Поэтому «цикла босса» не существует. Таймеров в этой системе два, и ни один не трогает прогресс: восстановление попыток и сгорание несобранных сундуков.
-
Что такое уровень и как он масштабируется. Уровень — это одна строка конфиг-таблицы
{ level, hp_pool, chest_tier }, и ничего больше. HP растёт по кривой круче, чем растёт мощь гильдии, поэтому лестница — всегда стена, в которую гильдия упирается, а не чек-лист, который она дочитывает: счётом является темп продвижения, а не номер уровня. Тир сундука поднимается полосами (каждый десятый уровень), а не каждый уровень, чтобы уровень был маленькой видимой победой, а полоса — тем, ради чего стоит организоваться. Где именно сидит кривая — вопрос TECHGD; форма не обсуждается, потому что выполаживающаяся кривая превращает бесконечную лестницу в решённую, а общую активность гильдии — в дневную рутину без горизонта. -
Урон складывается по всей гильдии, и этот пул продвигает босса по лестнице уровней. Достижение порога уровня даёт сундук всей гильдии — гарантированный плюс шанс на лучший.
-
Награда коллективная и одинаковая. Она не масштабируется долей индивидуального урона. Это несущее свойство, и именно оно делает дизайн безопасным в автобое: раздельной выплаты на участника нет, а значит нет и публичного недельного рейтинга согильдийцев по тратам — риска, названного в начале документа. Участник, внёсший мало, и участник, внёсший много, открывают один и тот же сундук.
-
Попытки восстанавливаются по таймеру и копятся неглубоко — одна попытка раз в 8 часов, банк максимум на две. Достаточно глубоко, чтобы простить одну пропущенную сессию, и достаточно мелко, чтобы наказать за две. Это мягче жёсткого дневного сброса и ложится на нашу существующую схему данжей с дневными ключами. Попытки не покупаются и не выдаются за траты в других системах.
-
Несобранные сундуки сгорают на дневном сбросе сервера — ровно там, где их чистит источник. Гильдия либо забрала, либо нет.
-
Вклад каждого участника видим всей гильдии, чтобы она могла координироваться. Попытки каждого за сегодня видны всей гильдии, рядом с общим прогрессом гильдии по текущему уровню. Попытки, никогда не урон. Это весь социальный слой — ни в одной игре корпуса нет резинки, буста урона или механики «протащить».
От чего этот дизайн осознанно отказывается, чтобы потом это не переоткрыли как баг:
-
Участник мёртвой гильдии не получает от босса ничего. Награды чисто коллективные, так что личного трека, на который можно опереться, нет. Это настоящая цена при задокументированных 54% гильдий, умирающих за пять месяцев, и именно поэтому важна личная изоляция из §12: гильд-валюта и личные наградные треки — вот где защищена выплата отдельного игрока. Босс — нет.
-
Гильдия, которую тащит один очень сильный участник, всё равно возьмёт уровни выше, чем сбалансированная гильдия того же размера. Коллективные пороги полностью убирают проблему ранжирования по тратам внутри гильдии, но не выравнивают гильдии между собой. Это остаточный эффект, и именно за ним стоит следить после релиза: если уровни босса коррелируют с мощью одного участника, а не с явкой, тогда можно будет ввести кап вклада на участника.
-
Как сундук делится между участниками, не описано ни в одном источнике. Наш ответ — самый простой из совместимых с остальным: сундук получает каждый участник гильдии на момент взятия порога. Для клейма нужно всё ещё состоять в гильдии — вышедший или кикнутый с несобранным сундуком теряет его.
В Legend of Mushroom есть и второй, другой гильд-босс — событие с окном регистрации, фиксированным коротким боем и наградами за регистрацию, участие, вклад по урону и первое убийство. Это формат под лайв-опс, а не постоянно доступный, и он отложен, а не смешан с этим.
Собственный Guild Raid у Lootborn Warriors (скрины из игры) стоит по другую сторону той же развилки: босс уровней с HP-пулом, три попытки на участника в день, аффиксы, ротируемые по таймеру, межгильдейский рейд-лидерборд — и публичный внутригильдейский рейтинг по урону. Последний элемент — ровно то, чего модель Legend of Mushroom избегает и что запрещает секция центральной проблемы этого документа; босс остаётся LoM по решению, а рейд LW записан здесь, чтобы никто не завёз его доску урона по случайности.
16. Гильд-валюта, магазин и технологии¶
Как только появляется босс, у гильдии есть фаусет, и можно строить экономику.
- Гильд-валюта зарабатывается вкладом в босса и ежедневной гильдейской активностью и является личной — участник тратит свою.
- Гильд-магазин продаёт то, чему на этом этапе прогрессии нет надёжного другого источника. Эксклюзивность — то, что даёт вкладке гильдии незаменимую причину существовать, и одновременно то, что превращает отказ от участия в ощутимый штраф; поэтому в магазине должно лежать ускоряющее, а не обязательное.
- Гильд-технологии — коллективный трек исследований, финансируемый донатами и дающий небольшие пассивные бонусы всем участникам.
Две валюты, два магазина, никакой конвертации. У фичи получается три поверхности выплат — босс, Showdown, война — и их легко было бы слить в один кошелёк, о котором никто не сможет рассуждать. Они не сливаются:
| Источник | Валюта | Сток |
|---|---|---|
| Донат — личная награда донатеру, за каждый донат | Guild Coin | Гильд-магазин |
| Дневная гильд-активность — первая за день попытка по боссу | Guild Coin | Гильд-магазин |
| Guild Showdown — недельный тир награды, победный или утешительный | Guild Coin | Гильд-магазин |
| Guild War — награда за матч, по результату | Honor Coin | Военный магазин |
| Гильд-босс — сундуки за уровни | предметы напрямую | — |
| Guild Gifting — подарочные сундуки | предметы напрямую | — |
Держат это три правила. Guild Coin — личная валюта: заработана участником, потрачена участником, и она переживает смерть гильдии (§12) — именно это защищает человека в ситуации, когда босс ничего не платит умирающему ростеру. Honor Coin — только военная и не конвертируется: ровно поэтому военный магазин может держать то, чего не может держать гильд-магазин, не удваивая ничью общую покупательную способность. Босс и Gifting платят предметами, а не валютой, чтобы у каждой валюты было ровно одно семейство источников и дизайнер мог перетюнить один режим, не сдвинув молча цены другого.
Lootborn Warriors крутит ровно этот сплит: донаты платят донатеру 200/300/500 гильд-валюты по тирам, Showdown платит 1200/600 Guild Coins по результату, а война платит собственные Honor Coins в собственный отдельный магазин.
Guild Gifting — взят из Lootborn Warriors. Участник покупает подарочный пак в молле за реальные деньги, и подарок получает каждый участник гильдии. Шесть тиров паков; отправитель может остаться анонимным. Скрины из игры добавляют вторую половину системы: подарочные сундуки генерируются и достижениями участников — ежедневные квесты, дневные и недельные ранги арены, недельные тиры событий, первое прохождение этажей — так что дождь сундуков — это двигатель взаимности, а не только монетизационный хук. У каждого участника — дневной кап на клейм (в источнике щедрый — 200/день), и он не сбрасывается при выходе из гильдии: прыжки между дарящими гильдиями ничего не фармят. Систему 1:1-подарков друзей это не трогает — она остаётся единственным каналом личных подарков: Guild Gifting — это трата одного игрока на пользу всему ростеру, ровно та монетизационная форма, которую этот дизайн уже принял на таблице.
Гильд-технологии дают боевые бонусы, и это решение несёт одно жёсткое
требование. Поскольку наша Арена — снапшотный PvP с матчмейкингом по
character_power, гильдейский бафф, меняющий поведение персонажа в бою,
обязан входить в то значение мощи, которое читает матчмейкер, и в
снапшот, снятый с оппонента. Бафф, применяющийся в бою, но не входящий в
число, по которому бой подбирается, — это ровно тот режим отказа, и это тот
же класс бага, который проект уже однажды выпускал с
отображаемой-против-канонической мощью на Арене. Это надо явно
верифицировать, а не предполагать, с обеих сторон: живая мощь атакующего и
сохранённый снапшот защищающегося. И поскольку вступление и выход из
гильдии меняют баффы, смена гильд-статуса обязана обновлять или
инвалидировать сохранённый защитный снапшот игрока — иначе он искажает
его мощь до следующего естественного переснятия.
Политики, которую можно скопировать, рынок не даёт. По тринадцати играм нет ни одного заявления разработчика, патчноута или вики-страницы с явным правилом нейтрализации, ограничения или исключения гильд-баффов из PvP-матчмейкинга. Два наблюдаемых прецедента противоположны: одна игра полностью нормализует свою гильд-войну (фиксированный уровень, одинаковая экипировка, баффы у всех), две другие просто заворачивают забаффанную силу в число матчмейкинга. Мы идём вторым путём — тем, который наша Арена уже поддерживает.
Величины остаются консервативными, потому что бенчмарки, публикующие числа, консервативны по бою и щедры по экономике. Полностью прокачанное классовое дерево в ближайшей сопоставимой idle-RPG упирается в районе +25–30% по базовым боевым характеристикам. Два реальных перка Clash of Clans кончаются на +50% ёмкости казны и +25% военного лута — оба экономические, ни один боевой. Единственный четырёхзначный множитель, найденный в корпусе, принадлежит индивидуальной системе, а не гильдейской. Гильдейский боевой бафф заметно выше этой полосы был бы уже не бонусом, а второй системой прогрессии, и делал бы игрока без гильдии или со слабой гильдией неконкурентоспособным на Арене, а не просто отстающим.
Поэтому дерево несёт оба типа узлов, осознанно разделённых: экономические
(шансы дропа, восстановление ключей, добыча золота, выхлоп данжей) —
безопасные, могут быть щедрыми; и боевые (стандартные характеристики) —
жёстко капированные и обязанные проходить через character_power.
Остаточный риск тот, который не закрывает ни один источник: гильд-баффы делают членство в гильдии конкурентным требованием на Арене, превращая социальную фичу в гейт по мощи. После релиза смотреть на распределение аренного рейтинга у гильдейских и негильдейских игроков: если разрыв превышает величину баффов, дерево делает больше, чем написано в его числах.
Гильдейская неделя — один соперник, две поверхности¶
Оба GvG-режима ложатся на один календарь, и по отдельности они сталкиваются: Showdown идёт со вторника по воскресенье с понедельником под награды, война — подготовка вторник–суббота, воскресный бой, понедельничное перемирие. Воскресенье — одновременно самый тяжёлый очковый день Showdown и день войны.
Столкновение разрешается в самую сильную сторону: у гильдии один соперник в неделю, а два режима — две поверхности одного соперничества. Пара составляется один раз, в понедельник, по сезонной таблице клан-поинтов. Гильдия, с которой вы гоняетесь всю неделю, — та самая, с которой вы деретесь в воскресенье.
| День | Showdown | Война |
|---|---|---|
| Понедельник | день наград, задач нет | перемирие; публикуется пара на следующую неделю |
| Вторник–четверг | дневные задачи, 1 медаль в день | подготовка; соперник известен, заполнять нечего |
| Пятница–суббота | дневные задачи, 2 медали в день | подготовка; девятка защитников выбирается и замораживается с концом субботы |
| Воскресенье | дневные задачи, 2 медали | боевая фаза |
Воскресные атаки войны сами по себе являются очковыми действиями Showdown — атака тратит заряд атаки, а Showdown платит именно за траты. Так у недели появляется один настоящий пик вместо двух событий, конкурирующих за один вечер: бой и есть последний и самый тяжёлый день гонки, и гильдия, выигравшая бой, обычно выигрывает и воскресные медали. Это фича, а не двойное начисление: обе метрики меряют одно и то же усилие, а платят в разных валютах (§16).
Из этого следуют две вещи, и обе наши, а не источника:
- Один пул паросоставления вместо двух. На популяции, ограниченной реалмом, это важнее аккуратности: два независимых паросоставления потребовали бы вдвое больше подходящих гильдий и регулярно выдавали бы гильдии двух несоразмерных соперников в одну неделю. Если реалм когда-то окажется достаточно глубоким для раздельных матчапов, разделение — это ручка, а не редизайн.
- Требования на вход разные, хотя соперник один. Showdown требует порога активных участников, война хочет девять способных защищаться участников. Гильдия, взявшая одно и не взявшая другое, всё равно играет то, что взяла: у короткого ростера оставшиеся слоты защитников занимает слабый ИИ-подкреп (§18) — ровно то, что делает с ними источник.
17. Guild Showdown¶
Гильдия против гильдии едет последней по причинам предложения, а не трудозатрат. Модель — Guild Showdown из Lootborn Warriors, целиком — то же правило, что дало боссу один связный источник вместо коллажа. Ближайший конкурент запускает полностью задокументированный GvG-формат, построенный для вертикальной idle-RPG, и мы копируем его, а не собираем свой из механик сквад-игр, предполагающих по-боевые решения, которых наш бой не имеет.
Формат:
- Две гильдии ставятся в пару лицом к лицу на неделю. Showdown идёт со вторника по воскресенье; понедельник — день наград, без задач.
- Вход гейтится порогом участия. Бенчмарк требует 12+ активных участников; у нас это конфиг-ручка, настроенная под кап ростера.
- Очки showdown платятся за траты, а не за явку. Это правильно прочитанная форма источника: задачи showdown в Lootborn Warriors — это «использовать N свитков», «использовать N молотов», то есть валютой гонки является собственный запас расходников игрока, и именно поэтому источник может оставить задачи безлимитными. У нас так же и по той же причине. Каждое очковое действие обязано быть тратой; действие без ресурсной цены не может попасть в эту таблицу, иначе гонка платит ни за что и превращается в соревнование по тапанью.
| Очковое действие | Очки (предварительно) |
|---|---|
| Потрачен тикет арены | 200 |
| Потрачена попытка данжа | 200 |
| Потрачена попытка гильд-босса | 300 |
| Потрачена атака войны (воскресенье) | 300 |
| Гильд-донат | 500 |
| Открыт сундук | 100 |
| Пулл гачи | 400 |
| Золото, потраченное на апгрейды | 1 за 100 |
Задачи повторяются без предела, и каждое очко идёт и в личный зачёт игрока, и в дневной счёт гильдии. Личные очки ничем не капируются, и капировать их не нужно: капом является запас и кошелёк игрока — ровно тот открытый соревновательный слой, который документ уже выбрал (§13). Что это делает с дневно-капированными системами: пять донатов и две забанченные попытки босса по-прежнему вносят вклад, они просто не могут быть всей гонкой, и гильдия, которая хочет выиграть, тратит сверх них. Относительные веса выше — это дизайн; абсолютные числа — вопрос TECHGD. - Каждый день гильдия с большим счётом получает медаль, и медали взвешены: по одной вт–чт, по две пт–вс — решают выходные, и один неудачный ранний день не делает неделю безнадёжной. Очки фиксируются в коротком локауте перед полуночью. Ничья дня даёт медаль обеим гильдиям; ничья недели уходит большему недельному счёту, а при равенстве и его — более высокому посеву. - Неделю забирает гильдия с большим числом медалей, и тир наград положен обеим — победный и утешительный, клеймится в понедельник (§19), — но тир платится, только если собственные недельные очки этой гильдии берут порог активности (источник гейтит оба тира на 1 000 000 собственных очков гильдии). Гильдии, которая реально не играла, не платят за сам факт пары — и неделю-уокновер нельзя отсидеть. Миллион источника выражен в его собственных единицах очков и не переносится: у нас это конфиг-ручка, откалиброванная по таблице выше так, чтобы гильдия на пороге участия при обычной игре его брала, а гильдия, которая пришла, но не играла, — нет. Калибровка этого числа блокирует релиз: порог, поставленный слишком высоко, не платит никому, а слишком низко — делает всё правило декоративным. - Личный рейтинг считается по объединённому пулу обеих гильдий, дневной и недельный, с эксклюзивной косметикой наверху и накопительными личными майлстоунами ниже. - Анти-хоппинг, скопированный дословно: очки, заработанные без гильдии, сгорают и задним числом не засчитываются; каждый тир наград платится раз на аккаунт независимо от выхода и возврата; смена гильдии посреди showdown — форфейт дня и очистка очков игрока из зачёта старой гильдии. Две границы этого правила — наши: кик — не смена: кик никогда не трогает зачёт гильдии, форфейт-и-очистка применяются только к добровольной смене, так что киком нельзя стереть вклад скорера; и вступивший из безгильдейных посреди showdown может приносить очки с этого момента — правила бьют по прыжкам, а не по рекрутингу.
Три вещи источник не документирует, поэтому это наш дизайн, и он так и помечен: паросоставление — матчапы сеются по сезонной таблице клан-поинтов, что даёт таблице из V1 продолжение работы как метрике квалификации и посева; нечётное число гильдий — гильдия без пары получает неделю отдыха, а не техническую победу; и форфейт оппонента — если гильдия-противник распустилась или ретайрнулась посреди недели, выжившая гильдия забирает оставшиеся дневные медали и недельную победу. Её тир наград по-прежнему гейтится её собственным порогом активности, так что уокновер всё равно надо отыграть — а роспуском проигранную неделю не улучшить.
Для протокола: у Legend of Mushroom есть собственный GvG — Family Brawl (Битва кланов): группы из четырёх кланов, сматченных по уровню, три боевых линии, вечернее боевое окно (среда–пятница, 20:00–22:00 серверного времени, победа на двух из трёх линий) и дебафф за серию побед, срезающий атаку и защиту серийного победителя (−15% на трёх победах подряд, −20% на четырёх, −35% на пяти, вплоть до −99%). Мы следуем Showdown из Lootborn Warriors — по решению, и потому что синхронное вечернее окно предполагает одновременное присутствие, которого асинхронная idle-игра не может требовать. Но дебафф за серию побед — задокументированное рынком анти-кэрри устройство, и именно за ним стоит идти, если данные Showdown покажут доминирование мощи одного участника в счёте гильдии.
Очковая гонка к тому же строго лучше сеточной лиги ложится на предложение, ограниченное реалмом: ей нужен ровно один оппонент на гильдию в неделю, она масштабируется вниз вплоть до двух гильдий на тонком реалме, и никакой структуре повышений/понижений не нужно переживать сжимающийся пул. Асинхронная снапшот-война ранней версии — атаки по сохранённым оборонительным расстановкам, юниты, закреплённые за обороной или атакой, — была форматом сквад-игры, чья центральная механика предполагает по-боевые решения о ростере; она ушла тем же путём, что и kill-crate босса, когда было применено правило «копируй один источник».
18. Guild War¶
Второй режим «гильдия против гильдии», и второй, взятый из Lootborn Warriors целиком — на этот раз с внутриигровых экранов правил, а не с вики-страниц. Режимы дополняют друг друга ровно так, как их запускает источник: Showdown — недельная гонка активности, Guild War — воскресный боевой пик.
- Недельный каденс: вторник–суббота — фаза подготовки, воскресенье — фаза боя, понедельник — перемирие.
- Паросоставление идёт по сезонной таблице клан-поинтов, против единственного соперника недели (см. «Гильдейская неделя» выше). Источник матчит по собственной системе дивизионов между серверами; у нас дивизионов нет, а реалмы не объединяются под контент, поэтому работу делает та таблица, которую мы и так ведём: соседние по ней гильдии ставятся в пару, непарная лишняя гильдия получает неделю отдыха, и это то же самое паросоставление, что у Showdown. Это наше, и это помечено как наше.
- Девять защитников выбираются автоматически — это сильнейшая девятка
гильдии. В момент окончания подготовки игра ранжирует всех подходящих
участников по
character_powerи берёт топ-9: первые трое — элитные, следующие шестеро — корные. Элитный держит 3 звезды победы, корный — 2, то есть гильдия выставляет на поле 21 звезду (числа предварительные, и это единственные числа, решающие, сколько длится боевая фаза). Защитник теряет звёзды по режиму каждого поражения и отступает на нуле, после чего атаковать его нельзя.
В источнике это работа Guild Master и Vice Masters. Мы это не копируем по решению: недельная рутина назначения — это кнопка, чей владелец может отсутствовать, а гильдия, потерявшая воскресенье потому, что никто не заполнил форму, — худший провал, который эта фича может себе позволить. Ранжирование по мощи к тому же единственный порядок, который может защитить игра с автобоем: формации не собираются, контр-пик не делается, поэтому у вопроса «кто защищает» ровно один правильный ответ, и просить человека вбивать его еженедельно — значит не добавить решения, а добавить способ ошибиться.
Автоматический выбор делают безопасным три правила. Подходящие — это уже сформулированное анти-хоп правило: выбраны могут быть только те, кто состоял в гильдии до начала подготовки. Выбор детерминирован и фиксируется на локе: равенство мощи разрешается датой вступления, затем меньшим идентификатором персонажа, и девятка не меняется после начала боевой фазы — гильдия не может перекатить свою защиту посреди боя, тасуя участников. Защитник, вышедший из гильдии после лока, вырождается в ИИ-подкреп в том же слоте, сохраняя звёзды — слот никогда не добирается из ростера заново, что было бы тем же перекатом с другого конца.
Чем мы за это платим — единственным тактическим решением, которое было у руководства. Это принято: по-атачный выбор режима боя ниже и есть место, где война реально играется, и он принадлежит каждому участнику, а не двум офицерам. - Билды защиты лочатся в конце подготовки. Каждый защитник сохраняет оборонительный билд; не сохранивший получает залоченным свой текущий, и поздние апгрейды залоченный состав не меняют — правило снапшота, прямо из источника. Мы оставляем лок и убираем сохраняемый билд: у наших персонажей нет отдельного оборонительного лоадаута, который можно было бы собрать, поэтому лочится просто билд защитника, каким он есть на конец подготовки. Одно событие, один снапшот — тот же момент, который выбирает девятку, её и замораживает. Если подходящих участников меньше девяти, оставшиеся слоты занимает слабый ИИ-подкреп. - Бой: атакуют все, попытки ограничены, атакующий выбирает. Каждый участник получает ограниченное число атак (ручка; предварительно три). Бой выигрывается убийством главного персонажа оппонента или большим остатком HP по таймеру; защитники тоже могут атаковать. Против каждого защитника атакующий выбирает один из трёх режимов боя:
| Режим | Что он делает с дуэлью | Снимает звёзд |
|---|---|---|
| Дуэль | без модификатора — решает чистая мощь | 1 |
| Осада | максимум HP поднят обеим сторонам, урон не тронут: долгий бой, который выигрывает лучше отскейленная сторона | 1 |
| Засада | урон поднят обеим сторонам, HP срезано: короткий и нестабильный бой, где у слабейшего есть реальный шанс | 2 |
Модификатор симметричен, и именно это означают «одинаковые
корректировки статов обеим сторонам» из источника в нашем прочтении:
режим — общее условие дуэли, а не бафф атакующего. Никакой глобальной
нормализации статов в нашей войне нет. За вычетом модификатора режима
бои идут по той же модели мощи, что и Арена, поэтому шмот, уровни и
гильд-технологии §16 заходят в войну ровно так же, как работают везде.
Нормализация войны обездвижила бы дерево технологий, которое документ
только что провёл через character_power, и сделала бы единственный
режим, где идентичность гильдии важнее всего, единственным местом, где
прогрессия не работает, — разумный размен в игре с формациями и ручным
управлением и плохой в нашей, где мощь и есть геймплей.
Выбор режима — то самое по-атачное решение, которого дизайну иначе не хватает, и решение, которое за тебя не примут деньги: безопасная звезда в Дуэли против защитника, которого ты перескейлил, или две в Засаде против того, кого не перескейлил. - Анти-хоп, дословно: вступившие во время подготовки или боя в этом раунде только зрители; атакуют и защищаются только те, кто вступил до подготовки; не участвовавший в фазе боя не получает ни доступа к Vault, ни наград матча; смена гильдии теряет доступ к Vault. - Форфейт, дословно: гильдия, распустившаяся во время подготовки, оставляет оппонента против гильдии целиком из ИИ-подкрепа — матч всё равно идёт, и живая гильдия всё равно получает оплату. - Как война выигрывается. По окончании боевой фазы побеждает гильдия, снявшая больше звёзд с защитников соперника. При равенстве побеждает та, что потеряла меньше своих; при равенстве и здесь — гильдия с более высоким посевом, тот же последний тайбрейк, что у Showdown. Разгром всех девяти защитников до истечения времени завершает матч немедленно. - Куда идёт результат. Результат войны не чеканит клан-поинты: правило «только арена» из §13 держится, а массовое начисление затопило бы метрику, собранную из одиночных побед. Вместо этого каждая война пишется в сезонную запись гильдии — счёт побед и поражений, показываемый в профиле гильдии и в экране рейтинга и используемый как тайбрейк в таблице клан-поинтов, когда две гильдии заканчивают сезон вровень. Это всё следствие, и оно намеренно маленькое: война платит Honor Coins и Vault, а статус решает только там, где таблица решить не может. Режим, кормящий таблицу напрямую, сделал бы таблицу военной, и аренные победы, из которых её строит ТЗ продюсера, перестали бы иметь значение. - Награды: Guild Honor Coins и Vault. Honor Coins — собственная валюта войны, тратится в отдельном Guild War Shop: победа платит много, поражение мало, добивание побеждённого — минимум. Каждый матч даёт одно открытие Vault (у победителей Vault лучше), а неоткрытый Vault сгорает в конце следующей фазы боя.
19. Клейм — ничего не выдаётся автоматически¶
Каждую награду в этой фиче игрок забирает сам, явным действием. Ничто не начисляется само. Ни сундук босса, ни тир Showdown с его майлстоунами, ни выплата войны с Vault, ни сезонные награды, ни награда за первое вступление, ни гильдейский подарок. Это правило про фичу целиком, а не свойство одного экрана, и оно держится даже там, где автоначисление было бы технически проще.
Причина в том, что клейм и есть момент выплаты. Гильдейская награда, молча появившаяся в инвентаре, — это число, изменившееся, пока игрок не смотрел, а это ровно неверный исход для единственной фичи, вся работа которой — делать присутствие других людей ощутимым. Тап — это место, где игрок видит, что ростер ему заработал, и одновременно самая дешёвая причина открыть гильд-вкладку завтра.
Из этого следуют четыре вещи, и каждая является требованием, а не пожеланием:
- У каждого клеймабельного есть срок, и он написан на нём самом. Экономика ручного клейма без сроков молча превращается в бесконечный список ожидающего. Сундуки босса сгорают на дневном сбросе сервера (§15); тир Showdown и личные майлстоуны клеймятся до дня наград следующей недели; выплата войны и Vault сгорают в конце следующей боевой фазы (§18); сезонные награды живут по окну хранения почты. Где срок короткий, предмет показывает обратный отсчёт, а не статичную подпись.
- Что означает истечение, зависит от частоты: редкое и ценное падает в почту, дневное теряется. Игрок не должен терять недельную работу из-за непоказанного бейджа, потерянного пуша или отпуска — но почтовый ящик, принимающий каждую дневную мелочь, перестаёт быть ящиком.
| Клеймабельное | При истечении |
|---|---|
| Недельный тир Showdown | → почта |
| Личные майлстоуны Showdown | → почта |
| Выплата войны (Honor Coins) | → почта |
| Сезонные полосовые награды | уже почта |
| Награда за первое вступление | → почта |
| Сундук гильд-босса | теряется |
| Гильд-подарки | теряются |
| Vault войны | теряется |
Три исключения сделаны осознанно. Сундук босса сгорает на дневном сбросе сервера, потому что этот сброс — единственный дневной бит босса, и ровно туда его кладёт источник. У подарков уже есть щедрый дневной кап клейма (200 в источнике) — загонять такой объём в почту значит уничтожить почтовый ящик ради мелочей. Vault — это не предметы, а одно открытие со случайностью внутри; присланное по почте «открой меня» хуже как объект, чем честное сгорание, и он умирает вместе со своей боевой фазой ровно как в источнике.
-
Членство оценивается в момент истечения, а не в момент клейма. Именно это правило не даёт почтовой страховке стать дырой в §12: гильдейская награда отправляется письмом, только если её владелец всё ещё состоял в гильдии, когда она истекла. Иначе страховка позволила бы вступить, дождаться, пока гильдия что-то заработает, выйти и всё равно забрать это из почты. Окно хранения почты после этого является настоящим, окончательным сроком — дальше уже правда ничего нет.
-
Почтовая страховка не смягчает требование к бейджам. Это защита от нашей ошибки, а не замена показу клейма. Риск, который она приносит, организационный: если ничего никогда не теряется, никто не замечает, что бейджи сломаны. Правило трёх уровней ниже остаётся требованием, а «почта поймает» не является допустимым ответом на непоказанный бейдж.
- Несобранное обязано находиться без поисков. Бейдж на точке входа в гильдию в HUD, бейдж на конкретной вкладке и блок ожидающих клеймов на «Обзоре» — три уровня, чтобы игрок, заходящий раз в день, не вспоминал, какая из шести поверхностей ему должна. Награда, сгоревшая при том, что бейдж ни разу не показался, — это баг, а не ошибка игрока.
- Членство проверяется и в момент клейма, а исход решает разделение личного и коллективного из §12. Гильдейские награды — сундук босса, тир Showdown, полосовая награда гильдии за сезон — требуют, чтобы забирающий всё ещё состоял в гильдии; вышедший или кикнутый с ожидающей теряет её, и письмом она тоже не приходит (проверка в момент истечения выше). Личные награды — полоса по собственным сезонным очкам, личные майлстоуны Showdown, уже заработанные Honor Coins — ходят за игроком и клеймятся независимо от судьбы гильдии.
- Клейм серверный и идемпотентный. Двойной тап, реконнект посреди клейма или повторный запрос платят ровно один раз. Массовый Claim All есть там, где количество может быть большим (гильд-подарки), но массовая кнопка — всё равно действие игрока: конфигурации, в которой игра клеймит за игрока, не существует.
Одна вещь осознанно не является вторым тапом: личная награда за донат. Игрок нажал «Донат», попап результата является чеком, и награда — часть исхода этого действия, а не ожидающий предмет. То же с гильд-опытом. Это решение, записанное здесь, чтобы не читалось как недосмотр: если донат должен вместо этого порождать клеймабельное, это однострочное изменение в той же машинерии.
Progression / economy¶
Гильдия добавляет вторую ось прогрессии, коллективную, а не личную, и сток хард-валюты, конкурирующий с существующими стоками.
Уровень гильдии. Уровень гильдии делает четыре вещи, и вместе они — причина, по которой донаты имеют смысл:
- Лимит участников — ростер растёт по мере роста уровня (см. проблему предложения, ограниченного реалмом, ниже).
- Слоты званий — сколько заместителей и охраны гильдия может назначить (§5).
- Ассортимент гильд-магазина — более высокие уровни открывают следующие ряды магазина. Это собственное применение уровня гильдии из Lootborn Warriors, и это его безопасная половина: гейт на доступ к стоку не отнимает у игрока ничего, что у него было.
- Порог входа в GvG — гильдию, основанную в субботу, не бросают в воскресную войну. Планка низкая (ручка; нормально активная гильдия берёт её за считанные дни) и существует только чтобы одноразовые гильдии не фармили неделю наград и не распускались.
Чего уровень гильдии осознанно не делает — так это не даёт мощь. Вектор мощи гильдии — дерево технологий (§16), и оно там же и капировано; второй вектор, едущий на уровне, посчитал бы те же донаты в боевую силу дважды и превратил бы потолок из §16 в фикцию. Lootborn Warriors гейтит уровнем гильдии целые фичи — донаты, магазин, рейд, война открываются по мере роста; мы берём тиринг магазина и порог GvG, а остальное оставляем открытым, потому что новая гильдия, в которой нечего делать, — самый быстрый способ убить новую гильдию.
Кривую надо сформировать так, чтобы новая гильдия быстро брала второй и третий уровни — гильдия, которая в первые дни не может вырасти сверх стартового размера, не привлечёт новичков, — а дальше жёстко уплощалась, чтобы верхние гильдии реалма отделяли месяцы устойчивых донатов, а не один китовый вечер.
Кривая цены доната — это сток хард-валюты. Её форма: донат 1 бесплатный, донаты 2–3 по цене рутинной покупки, донаты 4–5 по цене осознанной. Дневной кап в пять штук и есть то, что ограничивает сток — это не слив валюты, масштабирующийся с размером кошелька, и это правильно для системы, чей выхлоп общий.
Клан-поинты не валюта и не тратятся. Это сезонный счёт, который сбрасывается. Их единственная экономическая роль — определять награды в конце сезона, а те доставляются существующим почтовым путём недельных рейтингов, а не новым механизмом.
Гильд-валюта — параллельный цикл «заработал-потратил», чей фаусет — участие, а сток — гильд-магазин. Его дизайнерское ограничение в том, что он не должен становиться альтернативным путём к той же мощи, что продаёт основной луп: магазин ускоряет, а не заменяет.
Что гильдия потребляет из общей экономики: хард-валюту (донаты) и — через босса — долю уже существующих ежедневных трат игрока, перемаркированную в гильдейский вклад. Второе не стоит экономике ничего нового: это учётный слой поверх трат, которые и так происходят. Именно поэтому это правильный примитив.
Проблема предложения, ограниченного реалмом¶
Реалмы сегментированы по языку и таймзоне и рассчитаны на ≤3000 одновременных пользователей. Это ограничивает предложение гильдий на реалм и вынуждает к явному компромиссу, которого большинство гильдейских дизайнов не знает:
- Большой лимит участников даёт мало гильдий на реалм, делает любую пул паросоставления GvG тонким и увеличивает число мёртвых мест в гильдии.
- Малый лимит даёт гораздо больше гильдий, делает сетки жизнеспособными, делает вклад каждого участника видимо весомым и позволяет собрать гильдию с нуля — ценой меньшей социальной поверхности и более тонких абсолютных пулов наград.
Документ рекомендует меньший лимит и рекомендует сделать его наградой за уровень гильдии, а не константой. Паросоставление showdown потребляет количество гильдий; мёртвые места растрачивают размер ростера.
Рынок делится на два лагеря. Плоские лимиты: 50 в Clash of Clans и в сквад-RPG-бенчмарке, 100 в одном 4X-тайтле, и ничем не поднимаются. Лимит-как-прогрессия: AFK Arena растёт 30 → 70 по +5 за уровень гильдии; Idle Heroes 15 → 30 за тридцать уровней; Mythic Heroes 40 → 55 за семь; один тайтл расширяет 50 → 100 через альянсовое исследование; Legend of Mushroom поднял свой 90 → 110 патчем; Lootborn Warriors (скрины из игры) капится на 50 при максимальном 23-м уровне гильдии, и уровень гильдии там гейтит целые фичи — донаты, магазин, рейд и война открываются по мере прокачки. Лагерь прогрессии использует место в ростере как то, что руководство зарабатывает, а значит новые гильдии стартуют намеренно маленькими — и маленькая новая гильдия это та, где первые вступившие имеют значение.
Против копирования любых больших чисел есть два довода. Первый: каждый большой лимит в корпусе принадлежит игре с настоящим контентом на большие группы — войны 50 на 50, шестьдесят игроков на полосу брала, осады на тридцать укреплений. У Lootborn нет ничего подобного, а лимит сильно выше того, что требует контент, воспроизводит задокументированную патологию: в исследовании WoW у гильдии 90-го перцентиля было 35 участников при рейде на 40, поэтому большинство гильдий структурно не могло собрать собственный формат.
Второй: наблюдаемое распределение куда меньше любого проектного лимита — медиана 9, среднее 16,8, 90-й перцентиль 35 — и модель прогресса дала размеру гильдии отрицательный знак, то есть маленькие гильдии продвигались быстрее. Лимит в полосе 20–35 соответствует и этому распределению, и нашему предложению на реалм, и оставляет доступным паттерн «лимит-как-прогрессия».
И предостережение, применимое к любому выбранному лимиту: то же исследование нашло месячный отток около 25%, ровный по всем размерным полосам. Больший ростер не покупает стабильность — он покупает больше людей, которых можно потерять.
Ещё два следствия, к которым стоит готовиться:
- Возраст реалма важнее его размера. У свежеоткрытого реалма предложения гильдий нет вовсе; у зрелого есть окопавшаяся топ-гильдия и длинный хвост оболочек. Холодный старт на запуске реалма и переработка оболочек на зрелом — это две разные задачи, и первая из них — задача дизайна, а не операций: она описана ниже.
- В V1 держим гильдии в пределах реалма. Реалмы уже сегментированы по языку и таймзоне — а это ровно тот подбор, который нужен гильдейскому рекрутингу и способ делать который не описывает ни один источник. Ломая границы реалма ради предложения гильдий, мы возвращаем себе задачу подбора, которую сейчас получаем бесплатно. Если предложения окажется мало, сперва понижаем лимит участников, и только потом рассматриваем кросс-реалмовые пулы.
Холодный старт на новом реалме¶
Всё едет одним релизом, а значит пять систем приезжают разом на реалм, где в первый день ноль гильдий. Что нужно каждой из них, чтобы работать, — разное, и дизайн обязан прямо сказать, в каком порядке они включаются, иначе первые недели каждого нового реалма показывают игроку набор тёмных вкладок без объяснений.
- Гильдии, чату, донатам, боссу, магазину и Gifting нужна ровно одна гильдия. Первая созданная на реалме гильдия может пользоваться всем этим в тот же час. Это сильнейший аргумент за всегда-активного босса с коллективной выплатой: это единственный гильд-контент, работающий при популяции в одну гильдию, и именно он тащит фичу через первые недели.
- Showdown и войне нужны пары, поэтому у них есть кворум. Каждый режим запускается на реалме только когда там есть минимум четыре подходящие гильдии: двух хватило бы, чтобы составить пару, четырёх хватает, чтобы пара не была одним и тем же матчапом каждую неделю. Ниже кворума режимы видимы, но тёмные, и называют условие и текущий счёт («Откроется на 4 гильдиях — сейчас 2»). Тёмный режим с названным условием рекрутит; спрятанный просто выглядит поломкой, а режим, который вечно ставит в пару одного и того же соперника, приучает игроков его игнорировать.
- Порог участия — ручка на реалм, а не константа. Реалм на первом месяце живёт с пониженным порогом, и операционка поднимает его по мере наполнения. Это единственный рычаг, решающий, поиграют ли ранние гильдии вообще, поэтому он обязан крутиться без релиза.
Чего этот дизайн не делает — так это не засевает пустые гильдии, чтобы взять кворум. Предсозданная гильдия без участников — оболочка с первого дня, а §12 существует именно потому, что оболочки и есть то, что отравляет список гильдий. Кворуму позволено набираться неделю; фальшивому списку не позволено вовсе.
UX¶
Точка входа и гейтинг¶
Гильдия — точка назначения верхнего уровня, гейтится по уровню главы, как и все прочие фичи. Анлок поставлен на два стейджа после Арены — временное значение по явному решению; пересматривать по живым данным о прохождении, а не спорить дальше на бумаге.
Два следствия этой позиции стоит держать в поле зрения. Каждый игрок, дошедший до гильдии, уже имеет Арену — доска клан-поинтов никогда не бывает пустым экраном: вкладка лидерборда показывает обе доски с первого дня, и клан-поинты значат что-то с момента вступления. И анлок стоит за самыми ранними главами, так что работа гильдии смещается к якорению тех, кто уже пережил первые дни, а не к спасению тех, кто их не пережил.
Данные о времени анлока слабые и противоречивые; единственный конкретный бенчмарк — игра, предлагающая вступить после срединно-раннего майлстоуна в паре с бесплатной наградой. Уцелевшая часть принципа: сопровождать анлок стимулом на первое вступление.
До вступления точка входа ведёт на экран без гильдии. После — на экран гильдии.
Экран 1 — Без гильдии¶
Вкладки: Рейтинг · Поиск · Приглашения, на существующей полосе вкладок категорий.
- Рейтинг — гильдии реалма в сортировке по сезонному рейтингу плюс
заметное действие «Создать гильдию» с указанной ценой в хард-валюте.
Строка гильдии: эмблема (слева, в позиции, которую в других местах
занимает avatar-badge), название, уровень гильдии, сезонный рейтинг,
участники
текущее / максимум, требуемый уровень и замыкающее действие — Вступить (зелёная) для гильдий с авто-вступлением, Подать заявку для гильдий по заявке, неактивное состояние Заявка подана, если у игрока уже есть открытая, и неактивное действие с причиной («Полная», «Ур. 20+») там, куда вступить нельзя. Это существующая анатомия player-row с эмблемой вместо аватара, поэтому экран читается знакомым с первого взгляда. - Поиск — одно поле, принимающее точное название или тег гильдии, с явным пустым состоянием, где сказано, что поиск точный. Результаты — та же строка.
- Приглашения — входящие приглашения, в каждом строка гильдии плюс отправитель, с кнопками Принять / Отклонить. Счётчик — бейджем на вкладке.
Экран 2 — Гильдия¶
Шапка с идентичностью гильдии: эмблема, название, уровень, полоса опыта до следующего уровня и количество участников. Ниже — вкладки:
Обзор — экран общего состояния и вкладка по умолчанию. Содержит виджет доната (ниже), текущее положение гильдии в сезонной таблице и последние записи лога событий. Это то, что видит игрок, открывающий гильдию раз в день; здесь должно быть бесплатное дневное действие и ничего, что требует чтения.
Участники — ростер. Строки сортируются по званию, затем по последнему онлайну. В строке: аватар, никнейм, звание, уровень, последний онлайн (по существующей конвенции относительного времени) и — после порога неактивности — маркер неактивности. Тап по строке открывает карточку профиля игрока, что является универсальным поведением игры для любого аватара.
У строк есть контекстное меню, пункты которого выводятся из матрицы §5 и из звания смотрящего относительно звания строки: исключить появляется только для целей строго ниже смотрящего, запретить писать в чат — у заместителя и выше, сменить звание — только у лидера. Участник, у которого применимых прав нет, не видит меню вовсе, а не видит меню из неактивных пунктов.
Донат — поток доната. Показывает состояние дня как использовано / 5,
цену следующего доната (первый явно помечен как бесплатный), сколько опыта
гильдии даёт каждый донат и личную награду. Ниже — недавняя история донатов
всех участников: это социальное доказательство, из-за которого донат
ощущается замеченным, а не анонимным.
Лидерборд — две подвкладки: по уровню игрока и по клан-поинтам, обе по убыванию, обе с закреплённой строкой самого игрока по существующей конвенции sticky-self-row. На доске клан-поинтов — таймер сезона.
Лог — хронологический лог событий.
Настройки — видны заместителю и выше, а сами контролы гейтятся матрицей §5. Заместитель видит тумблер авто-вступления, минимальный уровень и редактирование описания. Лидеру дополнительно доступны смена эмблемы, переименование, передача лидерства и роспуск — последние два за двухшаговым подтверждением, поскольку оба необратимы. Используем существующий паттерн settings-form popup (строки «подпись + контрол»), а не сделанную с нуля раскладку.
Заявки — охране и выше; для остальных вкладка скрыта целиком, чтобы полоса вкладок не несла мёртвый пункт. Строки — обогащённый вариант player-row (с превью билда и последним онлайном, как в подборе пати), с кнопками Принять / Отклонить и массовыми Принять все / Отклонить все.
Экран 3 — Создание гильдии¶
Одна форма: название (с живой проверкой уникальности и результатом модерации), описание, выбор эмблемы (грид-пикер, как выбираются скиллы и прочие инвентари) и кнопка подтверждения с ценой в хард-валюте. Подтверждение явное — здесь тратится хард-валюта.
Экран 4 — Рейтинг гильдий (сезонная таблица)¶
Гильдии реалма, ранжированные по сезонным клан-поинтам; выходит рядом с
существующими сезонными лидербордами игроков и доступен также из блока
сезонного положения на экране гильдии. Топ-3 гильдии получают подиум
(эмблемы приподняты); ниже — строки гильдий: эмблема, название + тег,
уровень, участники текущее / максимум, сезонные очки справа и
сезонная военная запись гильдии (П–П) как видимый тайбрейк;
собственная гильдия закреплена по конвенции sticky-self-row. Гильдии с
бейджем топ-3 прошлого сезона несут его на рамке эмблемы. Баннер несёт
таймер сезона. Тап по строке открывает публичный вид гильдии. Таблицу
видят и безгильдейные — это витрина рекрутинга.
Чат¶
Гильдейский канал появляется в существующем чате как вкладка канала и подчиняется существующим правилам нотификаций. Новая чат-поверхность не строится.
Состояния¶
- Загрузка — скелетон-строки, никогда не пустой список.
- Гильдия заполнена — Вступить/Заявка отрисованы неактивными с причиной, а не падают после тапа.
- Уровень не соответствует требованию — то же: строка показывает требование, действие неактивно.
- Заявка подана — действие показывает это состояние и предлагает отозвать.
- Лидер неактивен, передача власти ожидается — ростер прямо показывает неактивность лидера. Гильдия, молча переставшая принимать людей, — худшая версия этого состояния.
- Уходит последний участник — подтверждение предупреждает, что гильдия будет распущена.
- Исключён / гильдия распущена, пока игрока не было — вернувшемуся говорят, что произошло, и направляют на экран без гильдии, а не бросают в пустое представление гильдии.
- Достигнут кап донатов — действие доната показывает таймер сброса.
- Сезон завершён — доска клан-поинтов показывает финальное положение и таймер нового сезона.
- Есть несобранная награда — бейдж на точке входа в гильдию, бейдж на владеющей вкладке и блок ожидающих клеймов на «Обзоре» (§19). Каждое клеймабельное показывает свой срок; короткие — обратным отсчётом.
- Клейм отклонён — истёк срок либо потеряно членство: предмет говорит, что именно, вместо кнопки. Никогда не молчаливое исчезновение.
- Истекло в почту — там, где клейм почтовый, поверхность, которая его была должна, говорит об этом один раз («тир прошлой недели у вас в почте»), чтобы игрок не сравнивал пустой экран с воспоминанием.
- GvG ниже кворума реалма — Showdown и война отрисованы, но тёмные, с названным условием и живым счётом («Откроется на 4 гильдиях реалма — сейчас 2»). Никогда не спрятаны: названное условие рекрутит, отсутствующая вкладка не учит ничему.
- Гильдия подходит, но без пары (неделя отдыха) — явное состояние недели отдыха, отличимое от «пара ещё не опубликована», с днём, когда приходит следующее паросоставление.
- Гильдия не проходит в режим — причина называет провалившееся условие
и текущее значение: ниже порога участия (
n / порогактивных), ниже уровня гильдии для GvG, или подходящих участников меньше девяти — причём последнее является пометкой, а не блокировкой, потому что оставшиеся слоты займёт ИИ-подкреп. - Фаза войны — каждая военная поверхность несёт фазу и её обратный отсчёт. До лока список защитников является прогнозом («кто защищал бы, если бы фаза кончилась сейчас») и прямо это говорит; после лока это замороженный состав. Разница должна быть сказана словами, а не намёком через таймер.
Нотификации¶
Сдержанность здесь важнее полноты — это фича, наиболее способная порождать чувство повинности. Уведомляем: заявка принята, получено приглашение, гильдия взяла уровень, изменено звание. Не уведомляем о каждом донате, каждом вступлении и каждом сообщении в чате — последнее закрывает собственный бейдж непрочитанного у чата.
Локализация и доступность¶
Все статические строки локализуются. Название и описание гильдии — пользовательский контент, не локализуются. Числа форматируются с учётом локали. Названия званий, подписи уровней и названия валют используют существующие i18n-ключи. Эмблемы должны оставаться различимыми для игроков с нарушением цветовосприятия — набору нужно разнообразие форм, а не только цветов.
Visual identity¶
Эмблемы — лицо гильдии и главная выразительная поверхность фичи. Они рендерятся в четырёх размерах: крошечном рядом с сообщением в чате, малом в строке игрока, среднем в шапке гильдии, большом в пикере. Рисовать в наибольшем размере и проверять читаемость в наименьшем: эмблема, которая превращается в пятно рядом с ником в чате, провалилась в том размере, в котором рендерится чаще всего.
Набору нужно достаточно разнообразия силуэтов, чтобы две гильдии никогда не путались в крошечном размере. Одного цвета недостаточно.
Шапка гильдии — единственное место, где гильдия получает холст: крупная эмблема, заметное название, уровень и полоса опыта под ними. Уровень гильдии должен читаться визуально — рамка или баннер, меняющиеся на майлстоунах, — чтобы заход в гильдию высокого уровня ощущался иначе, чем заход в новую, без чтения цифры.
Повышение уровня — общий момент, и его надо глорифицировать для всех, кто онлайн, а не молча писать в лог. Это один из очень немногих моментов в игре, принадлежащих группе, а не игроку.
Эмблема рядом с именем везде, где рендерится игрок, должна оставаться подчинённой собственной идентичности игрока — она стоит рядом с аватаром, а не конкурирует с ним.
VFX остаются сдержанными: подтверждение доната, заполнение полосы опыта и момент повышения уровня. Ничего фонового, ничего зацикленного — экраны гильдии посещают коротко и часто.
Scope¶
Всё нижеперечисленное выходит вместе — деление на инкременты из ранних версий снято решением. Один релиз содержит спецификацию продюсера, дополнения этого документа, гильд-босса, гильдейскую экономику и Guild Showdown.
Входит — спецификация продюсера:
- Сущность гильдии: эмблема, название (уникально в пределах реалма), описание, лидер, уровень, опыт, количество и лимит участников, список участников со званиями и последним онлайном, требуемый уровень игрока, тип вступления.
- Состояния членства, подбор (рейтинговый список + точный поиск), авто-вступление, заявки, приглашения.
- Создание гильдии за хард-валюту.
- Четыре звания, назначает лидер. Передача лидерства при выходе или 7 днях неактивности.
- Управление участниками: исключение, смена звания, работа с заявками, приглашения, добровольный выход.
- Настройки гильдии: тумблер авто-вступления, минимальный уровень.
- Лог событий: вступления, исключения, выходы.
- Донаты: 5 в день, первый бесплатный, растущая цена в хард-валюте, плоский опыт, личная награда, перенос избыточного опыта.
- Внутригильдейские лидерборды по уровню игрока и по клан-поинтам.
- Клан-поинты за победы на арене; сезонный лидерборд гильдий; сброс сезона.
- Эмблема и название гильдии рядом с игроком повсюду.
Добавлено этим документом и является несущим:
- Гильд-чат — канал
Clan, уже описанный системой чата. Без него фича — бухгалтерия. - Настоящая матрица прав у званий — охрана как ступень рекрутинга, заместитель как ступень операций, с ограничением частоты киков, слотами званий по уровню гильдии и запретом действовать на равного или старшего. Это убирает лидера как единственную точку отказа для рекрутинга.
- Глобально уникальный тег гильдии рядом с пореалмовым названием плюс политика коллизий при слиянии — обязательны, поскольку слияния реалмов планируются.
- Стимул на первое вступление в гильдию.
- Два отдельных кулдауна — глобальный 60-минутный после добровольного выхода и более длинный только-на-эту-гильдию после исключения.
- Точное разделение личного и коллективного: личная гильд-валюта и прогресс личных наградных треков следуют за игроком и переживают смерть гильдии; уровень, опыт, технологии и сезонный счёт гильдии остаются у гильдии.
- Навсегда выведенный из обращения тег при ретайре — названия можно переиспользовать, теги никогда.
- Жизненный цикл гильдии — Активна → Дормантна → Ретайрнута, с маркерами неактивности в ростере, инструментом массового исключения для лидера, скрытием дормантных гильдий из рекомендаций и определением ретайра вплоть до того, что происходит с членствами, ожидающими приглашениями, сезонным счётом, названием и тегом.
- Разные правила для выхода и для исключения, чтобы киком нельзя было заблокировать игроку доступ ко всей фиче.
Входит — блоки общего контента (§15–§18):
- Гильд-босс — бесконечный босс по модели Legend of Mushroom: урон складывается по всей гильдии, пороги уровней дают одинаковый сундук каждому участнику, попытки по одной в 8 часов с банком на две, несобранные сундуки сгорают на дневном сбросе сервера.
- Гильдейская экономика — гильд-валюта, гильд-магазин,
гильд-технологии с боевыми баффами внутри
character_powerи Guild Gifting (платный подарочный пак, который получает каждый участник). - Guild Showdown — парные недельные матчапы вт–вс со взвешенными дневными медалями, очками строго за траты ресурсов, пер-гильдейным порогом активности, гейтящим оба тира наград, и дословным анти-хоппингом; паросоставление сеется по сезонной таблице клан-поинтов.
- Guild War — воскресный боевой пик: подготовка вт–сб с девятью
автоматически выбранными защитниками — сильнейшая девятка гильдии по
character_power(3 элитных × 3 звезды, 6 корных × 2), замороженная в конце подготовки, — воскресный бой с ограниченными атаками и тремя симметричными режимами боя, победа по снятым звёздам, Honor Coins с отдельным военным магазином и собственные правила форфейта и анти-хопа источника. - Гильдейская неделя — один соперник в неделю на оба режима, пара составляется в понедельник по таблице клан-поинтов, а воскресный бой войны одновременно является очковым днём Showdown.
- Правила холодного старта — кворум в четыре гильдии на оба GvG-режима с видимым названным условием открытия и порог участия на реалм.
- Две валюты, два магазина, никакой конвертации — Guild Coin из донатов, дневной активности и Showdown в гильд-магазин; Honor Coin из войны в военный магазин; босс и Gifting платят только предметами.
- Единый механизм клейма — любая награда фичи является ожидающим клеймом, который игрок забирает руками: срок, проверка членства в момент клейма, бейджи на трёх уровнях, идемпотентность на сервере. Ничто в этой фиче не начисляется автоматически. Клеймы недельной и более редкой частоты при истечении падают в почту (и там тоже клеймятся руками); сундук босса, подарки и Vault теряются.
Явно не входит:
- Гильдейские квесты или отдельный трек ежедневных квестов гильдии.
- Загружаемые игроками эмблемы.
- Кросс-реалмовые гильдии.
- Чат между гильдиями, альянсы гильдий и любой второй уровень группировки.
- Автоматическое исключение неактивных участников.
- Вклад за помощь другим участникам (§11) — ему нужно видимое участникам ожидание, с которым можно помочь, а в нашей петле такого нет. Первое, что стоит добавить, если у F2P-участников не окажется полосы вклада.
- Засев гильдий-пустышек на новом реалме — кворум вместо этого ждёт.
Вырезано осознанно, а не по забывчивости¶
- Нет 1:1-подарков в гильдии. Личные подарки принадлежат друзьям; Guild Gifting — это рассылка всему ростеру, а не личный канал.
- Нет парного бонуса к мощи от гильдии. Эту ось держат Bond и пати; третий складывающийся источник делает мощь нечитаемой.
- Нет обязательного гильд-эксклюзивного контента. Всё в гильд-магазине и в наградах босса ускоряет прогрессию; ничто её не гейтит. Эксклюзивность, становящаяся необходимостью, — прямая дорога к повинности и оттоку.
- Нет собственных эмблем гильдий до появления владельца модерации.
TЗ / tech spec¶
Не реализация — то, что должно существовать, чтобы продукт и платформа построили фичу.
Форма конфига¶
Новая секция guild в GameConfig, содержащая только тюнящиеся параметры,
организованная так, чтобы дизайнер балансировал её, не трогая контент:
- Лимиты сущности — мин/макс длина названия, макс длина описания, кулдаун переименования, длина и алфавит тега гильдии, ссылка на каталог эмблем.
- Создание — цена создания (валюта + количество), минимальный уровень игрока или глава для создания.
- Членство — базовый лимит участников и таблица «лимит на уровень гильдии»; два кулдауна — глобальный после добровольного выхода (по умолчанию 60 минут) и только-на-эту-гильдию после исключения (по умолчанию сутки) — отдельные ручки; это не одна и та же политика, и близких значений от них не ждут; число слотов званий на уровень гильдии (сколько заместителей и охраны может быть у гильдии данного уровня); лимит частоты исключений для званий ниже лидера.
- Уровни — таблица уровней гильдии
{ level, required_experience, member_cap }. Плоские строки, тюнятся независимо, в той же форме, что иcharacter_levels. - Донаты — дневной кап донатов, лестница цен за донат внутри дня (первая запись бесплатная), опыт за донат и ссылка на бандл награды донатеру.
- Неактивность — порог маркера неактивности участника, окно передачи лидерства, порог дормантности гильдии, порог ретайра гильдии и окно аудиторного хранения после ретайра. Пять отдельных ручек; это осознанно не одно и то же число.
- Клан-поинты — очков за квалифицирующую победу, какие типы боёв квалифицируются, длина сезона, шаблоны почты с сезонными наградами по полосам и ссылки на косметические сезонные бейджи для верхних полос (сами бейджи — контент, их назначение — конфиг).
- Гильд-босс — таблица уровней
{ level, hp_pool, chest_tier }, интервал восстановления попыток и глубина банка, якорь сгорания сундуков (дневной сброс сервера). Длины цикла не существует: лестница не сбрасывается. - Showdown — таблица начисления
{ действие, очки }(только траты), недельный порог активности на гильдию, веса медалей по дням недели, окно локаута при фиксации, порог участия по полосе возраста реалма и бандлы наград по тирам. - Guild War — атак на участника за боевую фазу, звёзд на элитного и на
корного защитника, три режима боя как
{ id, hp_modifier, damage_modifier, stars_on_win }, границы фаз по дням недели, сила ИИ-подкрепа, содержимое Vault по результату и выплаты Honor Coins по результату. - Доступность GvG — кворум подходящих гильдий на реалм (по умолчанию четыре) и минимальный уровень гильдии для входа в GvG.
- Подбор — размер списка рекомендованных, окно активности, определяющее «активную» гильдию.
- Стимул на вступление — ссылка на бандл награды за первое вступление.
Отдельная контентная коллекция guild_emblems: { id, ссылка на ассет,
i18n-название }. Это контент, а не баланс — живёт рядом со скинами.
Гейтинг идёт в game_config.gatings рядом со всеми прочими анлоками фич, по
уровню главы; начальное значение — два стейджа после гейта Арены (временное
по решению, ожидается сдвиг). Соответствующую запись в feature_thresholds на пути
авторизации коннекта тоже необходимо расширить — иначе гильдия не появится
в когортной аналитике проникновения, а для этой фичи именно в ней весь
смысл.
Бекенд (концептуально)¶
Новые персистентные сущности:
- Guild — идентичность (эмблема, название, описание, тег), уровень и опыт, настройки (тип вступления, минимальный уровень), время создания и ссылка на лидера. Уникальность названия обеспечивается в пределах БД реалма; тег глобально уникален по построению — компонента реалма плюс значение, которое реалм выдаёт локально, — поэтому кросс-реалмовый реестр имён или тегов не нужен, а слияние реалмов не может породить неоднозначную ссылку на гильдию.
- Guild membership — связь персонаж↔гильдия со званием, временем вступления и состоянием запрета писать в чат. У персонажа не более одной. Клан-поинтов она не несёт — итог гильдии и личные очки игрока живут в сезонных счётчиках ниже, поэтому уничтожение членства никогда не трогает счёт.
- Сезонные счётчики очков — сезонный итог клан-поинтов гильдии и личные
сезонные очки игрока: два простых счётчика, оба сбрасываются на границе
сезона. Ведение вклада по паре
(гильдия, игрок)не требуется. Рядом с ними — сезонная запись гильдии: счёт побед и поражений, который пишет каждый результат войны; используется как тайбрейк таблицы и показывается в профиле. - Прогресс гильд-босса — текущий уровень гильдии и накопленный на нём урон, баланс попыток каждого участника и метка восстановления, израсходованные сегодня попытки по участникам, несобранные выдачи сундуков со сроком сгорания. Постоянный; ничто здесь не сбрасывается по расписанию.
- Недельная пара гильдий — соперник недели для гильдии, пишется один раз на понедельничном ролловере и читается и Showdown, и войной. Одна запись на гильдию на неделю; два режима никогда не составляют пары независимо.
- Начисление очков Showdown — на игрока на день внутри недели: заработанные очки плюс дневной и недельный агрегаты гильдии и реестр дневных медалей. Очки пишутся тратами из таблицы начисления, то есть путь записи — это учётный хук на существующие траты, а не новая игровая поверхность.
- Раунд войны — пара, фаза, девять выбранных защитников с их залоченными снапшотами билдов, остаток звёзд у каждого защитника, остаток атак у каждого участника, снятые каждой стороной звёзды, результат и выдачи Vault со сроком сгорания.
- Guild application и guild invite — записи в ожидании со сроком жизни и ограничением уникальности, не допускающим дубликаты от одного игрока в одну гильдию.
- Guild event log — только на добавление, хронологический, с окном хранения.
- Donation record — на игрока на день (не на членство), достаточно, чтобы отрисовать историю донатов и обеспечить дневной кап сквозь смены гильдий.
Новые проекции, по существующему паттерну, где составной payload на чтение собирается на сервере:
- GuildSummary — эмблема, название, уровень, участники текущее/максимум, требуемый уровень, тип вступления и статус заявки запрашивающего игрока. Форма строки для любого списка.
- GuildDetails — все поля гильдии плюс список участников.
- GuildMemberEntry — аватар, никнейм, звание, уровень, последний онлайн, сезонные клан-поинты.
Пути чтения — пары request/response (с пагинацией там, где это списки), по тому же образцу, что уже работают лидерборд арены и список рефералов: рекомендованные гильдии, точный поиск, детали гильдии, список участников, заявки, лог событий, история донатов, два внутригильдейских лидерборда, сезонная таблица гильдий и состояние донатов на сегодня.
Мутации — клиентские sync-события с валидацией на сервере, по тому же образцу, что и любое другое изменение состояния: создать гильдию, переименовать, изменить описание, сменить эмблему, изменить настройки, подать заявку, отозвать заявку, принять/отклонить заявку, пригласить, принять/отклонить приглашение, вступить автоматически, покинуть, исключить, сменить звание, запретить/разрешить участнику писать в гильд-чат, передать лидерство, распустить гильдию, задонатить и забрать награду (одна мутация на любое клеймабельное, по его id — сундук босса, тир Showdown, майлстоун Showdown, выплата войны, Vault, сезонная полоса, подарок, награда за первое вступление).
Поведение, которое должно существовать на сервере:
- Клейм — один механизм, а не шесть. Любая награда, которую порождает
фича, пишется записью ожидающего клейма —
{ owner, source, payload, expires_at, state, mail_on_expiry }, — и мутация клейма является единственным путём, превращающим её в предметы. Она идемпотентна (повторный или двойной тап платит один раз), перепроверяет членство для гильдейских источников в момент клейма и отказывает по истёкшим записям, а не платит молча задним числом. Плановая задача разрешает несобранное, и она является единственным местом, где живёт страховка: для источника, помеченного как почтовый, она перепроверяет членство в этот момент и кладёт пейлоад в существующий почтовый путь; для остальных — удаляет запись. Оба исхода пишут событие аналитики, потому что «истекло потерянным» и «ушло в почту» отвечают на разные вопросы о том, работают ли бейджи. Построить это один раз — то, что делает §19 правилом, а не шестью почти-одинаковыми реализациями, которые разъедутся. -
Счётчики ожидающих клеймов едут в пейлоаде игрока, чтобы бейджу в HUD, бейджам вкладок и блоку на «Обзоре» не требовалось по своему запросу.
-
Каждый путь вступления выполняет одну и ту же валидацию — не состоит в гильдии, гильдия не заполнена, уровень соответствует и не активен применимый кулдаун — глобальный после добровольного выхода либо кулдаун на эту же гильдию после исключения, блокирующий только ту гильдию, которая исключила. Валидация выполняется в момент принятия, а не только в момент запроса. Создание гильдии тоже проверяет глобальный кулдаун; членства, расторгнутые роспуском или ретайром, не ставят никакого кулдауна вообще.
- Принятие любого вступления закрывает остальные заявки и приглашения игрока.
- Передача лидерства работает как плановая проверка, а не только при следующем входе лидера: отсутствующий лидер — это ровно тот случай, когда ничто другое её не запустит. Должна быть идемпотентной и никогда не оставлять населённую гильдию без лидера.
- Уход последнего участника немедленно ретайрит гильдию — пустая гильдия минует стадию дормантности и идёт сразу по пути ретайра, поскольку не осталось никого, кто мог бы её оживить.
- Донат атомарен: списание, начисление опыта гильдии, вычисление повышения уровня с переносом остатка, выдача награды донатеру, запись в историю.
- Начисление клан-поинтов вешается на существующее завершение матча на арене, ограничивается настроенным списком квалифицирующих типов боёв, проверкой «оба игрока в гильдиях» — по живому состоянию в момент завершения, никогда по сохранённому снапшоту — и исключением одногильдейных боёв. За квалифицирующую победу сезонный итог гильдии победителя и личные сезонные очки победителя инкрементируются на единицу, атомарно. Дневного капа нет, происхождение потраченного тикета не проверяется — купленные тикеты считаются, по решению.
- Отбор на сезонную награду гильдии — членство на момент закрытия сезона, по полосе финального места гильдии. Доставка — существующим путём «недельный крон + почта» несобранным предметом: письмо несёт награду, игрок её клеймит (§19).
- Недельное паросоставление выполняется один раз на понедельничном ролловере тем же кроном: читает таблицу клан-поинтов, отфильтровывает гильдии, не берущие уровень для GvG и порог участия реалма, ставит в пары соседних выживших и пишет по одной записи соперника на гильдию. Лишняя непарная гильдия получает явную запись «неделя отдыха», а не отсутствие записи — «нет соперника» и «пара ещё не составлена» обязаны различаться в UI. Если реалм ниже кворума подходящих гильдий, задача не пишет ничего, и оба режима сообщают своё условие открытия с текущим счётом.
- Очки Showdown — учётный хук на существующие траты, а не новое действие: каждая трата из таблицы начисления инкрементирует дневные очки игрока и дневной с недельным агрегаты гильдии в той же транзакции, которая расходует ресурс. Трата безгильдейного игрока или трата вне парной недели не пишет ничего. Дневная фиксация выполняется на границе локаута и выдаёт медаль.
- Переходы фаз войны плановые, идемпотентные, и у каждого есть жёсткий
побочный эффект: конец подготовки выбирает девять защитников и
снимает снапшоты их билдов одной транзакцией — ранжировать подходящих
участников по
character_power, взять топ-9, заморозить билд каждого, добить оставшиеся слоты ИИ-подкрепом. Порядок обязан быть детерминированным (мощь, затем дата вступления, затем идентификатор персонажа), чтобы повтор задачи давал тот же состав; конец боя считает звёзды, пишет результат в сезонные записи обеих гильдий, выдаёт Honor Coins и открытия Vault и сжигает неоткрытые Vault прошлого раунда. Залоченные снапшоты неизменны в пределах раунда — поздние смены шмота не должны до них доходить. - Сгорание сундуков босса выполняется на дневном сбросе сервера и чистит несобранные выдачи. Восстановление попыток выводится из метки времени, а не тикается, и банчится до настроенного максимума. Ни одна из задач не трогает уровень босса и накопленный урон — пути сброса у них нет вовсе.
- Проверки прав выполняются на сервере и выводятся из матрицы §5, которая является единственным источником истины. Исключение и запрет писать требуют, чтобы звание действующего было строго выше звания цели; смена звания доступна только лидеру независимо от разницы званий. Лимит частоты киков считается на действующего, а число слотов званий валидируется против уровня гильдии при каждом повышении.
- Слияние реалмов обязано детерминированно переименовывать конфликтующие гильдии (название остаётся за более старой), выдавать переименованной гильдии бесплатное переименование в обход кулдауна и отправлять почту обеим сторонам. Слияния планируются на границы сезонов, чтобы клан-поинты никогда не приходилось сводить посреди сезона.
- Смена сезона переиспользует существующий путь «недельный крон + доставка почтой» — ту же машинерию, что уже используют недельные награды рейтингов, — а не новый планировщик. Для оффлайн-игроков письмо ждёт несобранным до конца окна хранения — ничего не начисляется, пока их нет.
- Название и описание вызывают существующий пайплайн модерации при записи, кулдаун переименования проверяется на сервере. Существует саппортовый принудительный ренейм для контента, проскочившего фильтр на записи: переименовывает гильдию, выдаёт бесплатный ренейм и пишет в лог событий.
- Удаление аккаунта анонимизирует записи удалённого игрока в логах событий гильдий и истории донатов (ник заменяется плейсхолдером); агрегаты гильдии — опыт, уровень, сезонные итоги — не трогаются.
- Идентичность гильдии в payload игрока — общий ответ с информацией об игроке несёт статус членства, id и тег гильдии, звание, сезонные клан-поинты игрока, состояние донатов на сегодня, а также эмблему и название гильдии, поскольку эмблема и название рендерятся рядом с игроком почти на каждом экране и не должны требовать второго round-trip.
- События аналитики на каждое значимое действие: гильдия создана, вступление (с указанием пути: авто / заявка / приглашение), выход, исключение, донат (с индексом слота), сообщение в чате, заявка отправлена / принята / отклонена, сработала передача лидерства, гильдия ретайрнута. Плюс события общего контента, которые понадобятся балансу: потрачена попытка босса, взят уровень босса, клейм выдан / истёк потерянным / истёк в почту (по источнику — эта тройка и есть проверка здоровья правил про бейджи), начислены очки showdown (по типу действия), зафиксирована дневная медаль, недельный тир выплачен или удержан за непрохождение порога активности, выбраны защитники войны (с размером ростера, чтобы серия слотов, добитых ИИ, была видна), сделана атака войны (по режиму), результат войны. Событие удержанного тира — то самое, что скажет, верно ли откалиброван порог.
- Переходы жизненного цикла гильдии (Активна → Дормантна → Ретайрнута) выполняются сервером по плановой проверке, идемпотентны, и каждый пишет запись в лог событий и событие аналитики. Ретайр расторгает членства, снимает ожидающие заявки и приглашения, убирает сезонный счёт гильдии из таблицы, освобождает название, но навсегда выводит из обращения тег (теги не перевыдаются — это стабильный ключ для аналитики, саппорта и аудита) и мягко удаляет сущность на аудиторное окно.
UI / Unity / арт¶
- Экран без гильдии с тремя вкладками (Рейтинг / Поиск / Приглашения), построенный на существующей анатомии player-row с эмблемой в позиции аватара.
- Экран гильдии: шапка (эмблема, название, уровень, полоса опыта, количество участников) плюс набор вкладок — Обзор, Участники, Донат, Лидерборд, Лог, Настройки, Заявки — с видимостью вкладок по роли.
- Форма создания гильдии с живой проверкой названия, откликом модерации и грид-пикером эмблем.
- Строка участника со званием, последним онлайном, маркером неактивности и контекстным меню для лидера/заместителя.
- Виджет доната:
использовано / 5, следующая цена, начисляемый опыт, награда донатеру и общий список истории донатов. - Два внутригильдейских лидерборда с закреплённой строкой себя и сезонная таблица гильдий.
- Канал гильд-чата, добавленный в существующую полосу каналов чата; новый UI чата не строится.
- Чип «эмблема + название гильдии», смонтированный на каждую существующую поверхность, где рендерится игрок: карточка профиля, сообщение в чате, строка лидерборда, строка оппонента на арене, пати, список друзей.
- Все состояния, перечисленные в
## UX, включая те, что появляются, только когда что-то пошло не так.
Поставки арта: каталог эмблем, нарисованный в большом размере, с проверенной читаемостью в размере сообщения чата и разнообразием форм, достаточным для различения при нарушении цветовосприятия; трактовки рамок или баннеров по уровням гильдии на майлстоунах; празднование повышения уровня; фон шапки гильдии.