Перейти к основному содержимому

Настройки мира

Часть настроек — это представление: скорость текста, боевые анимации, рамка окон. Игрок, который их меняет, меняет вид только своего экрана, и ничего больше. Они остаются на клиенте, где им и место.

Три настройки — это правила. Они меняют то, что происходит в бою. В сетевом мире они не могут жить на клиенте по самой обычной причине: игрок, выставивший себе «легко» на своей машине, меняет правила, по которым играет сервер.

Поэтому MCE их разделяет. Представление остаётся локальным. Правила приходят с сервера.

Что к чему относится​

Перепись шестнадцати настроек экрана делит их на три группы:

ГруппаСколькоГде живёт
Правило3Сервер, засеивает оператор
Представление12Клиент, выбор самого игрока
Скрыто в сети1Не показывается вовсе

Три правила — сложность, уровень тренеров и стиль боя. Скрытая — автосохранение при телепортации, и она скрыта, а не показана только для чтения, потому что в сетевой игре сохранением владеет сервер: переключатель автосохранения описывал бы то, чего больше не происходит.

Как клиент их использует​

Клиент один раз забирает три значения вызовом mce_world_options_get по пути в мир.

Важное проектное решение — то, чего он с ними не делает: он не записывает их в собственные настройки игрока. Так было в первой версии, и это было ошибкой. Настройки сохраняются, поэтому мир со значением Фиксированный перезаписал бы сохранённое игроком Смена — и унёс бы это в его автономную игру, где никакой сервер ничем не распоряжается.

Поэтому вместо записи движок спрашивает. Каждое место, которое использует правило, вызывает его читатель и получает значение мира, когда мир есть, или значение самого игрока, когда его нет. Настройки игрока остаются нетронутыми.

Экран настроек внутри сетевой сессии

Estilo: Fijo сверху на этом экране — значение мира, а не этого игрока: у него вполне может быть сохранено Смена из автономной игры, и оно там, нетронутое, его ждёт. Всё, что ниже правил, — обычные локальные предпочтения: язык, громкость, скорость анимации. У сервера нет мнения на этот счёт, и он его никогда не спрашивает.

Экран настроек собран так, чтобы показывать эти три только для чтения, когда ими распоряжается мир: игрок видит, на какой он сложности, и не может её изменить — середина между тем, чтобы спрятать их (не узнать) и оставить изменяемыми (можно сжульничать).

Проверено в игре

Измерено 29.08.2026 на живом сервере, засеянном в Hard/Set. Собственный журнал игры по пути в мир:

[R-OPCIONES] el mundo dice: dificultad=Hard estilo=Set aLaCaja=False sembrado=True
[R-OPCIONES] el mundo manda: dificultad=Hard estilo=Set aLaCaja=False

Две строки, и значение имеет вторая: клиент забрал правила и передал им власть. Обе половины обмена говорят одно и то же.

Что с ними делает сервер​

Сложность сдвигает уровень соперников‑тренеров — и только тренеров, так же, как это делает ядро в автономной игре:

СложностьМножитель
Легко0,8
Нормально1,0
Сложно1,2

Результат ограничивается диапазоном 1–100. Он применяется в buildTrainerParty — единственном месте, где сервер создаёт соперника‑тренера, так что второго пути, который мог бы с ним не согласиться, нет.

Как их засеять​

mce_world_options_seed — только между серверами. Он отвергает любой вызов с пользовательской сессией и требует http_key среды выполнения Nakama — те же учётные данные и те же правила, что у засева видов, а значит, их нельзя ни коммитить, ни включать в сборку.

Путь для покупателя — вкладка Online в Hub: там выставляются три значения, и он засеивает их сам, читая ключ вне репозитория.

Он отвергает то, что не моделирует, и называет это по имени​

Пришлите сложность или стиль, которых движок не знает, — и засев будет отвергнут, а ошибка скажет, какое именно значение было неверным.

Заманчивая альтернатива — принять и откатиться к Normal. Это хуже, чем кажется. Оператор ушёл бы с уверенностью, что настроил мир, мир молча был бы другим, и ничто никогда об этом не сказало бы. Правило, которое сервер не может смоделировать, отвергается, а не сводится к нейтральному.

«Не засеяно» — отдельное состояние​

Хранилище начинается пустым, и пустота означает не засеяно — что намеренно не то же самое, что Normal, хотя сегодня оба дают множитель 1,0.

Сейчас это одно и то же число. Разница в том, что случится в день, когда Normal перестанет быть 1,0: один из этих миров должен измениться, а другой — нет. Сервер, схлопнувший эти два состояния, выбросил бы информацию, нужную, чтобы их различить.

Права​

Запись world_options хранится с permissionRead: 2 и permissionWrite: 0.

Любой может прочитать правила, по которым играет. Никто не может записать их с клиента. Глагола для отправки нет — mce_world_options_get только скачивает, и это отсутствие является частью замысла, а не упущением.