Настройки мира
Часть настроек — это представление: скорость текста, боевые анимации, рамка окон. Игрок, который их меняет, меняет вид только своего экрана, и ничего больше. Они остаются на клиенте, где им и место.
Три настройки — это правила. Они меняют то, что происходит в бою. В сетевом мире они не могут жить на клиенте по самой обычной причине: игрок, выставивший себе «легко» на своей машине, меняет правила, по которым играет сервер.
Поэтому 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: один
из этих миров должен измениться, а другой — нет. Сервер, схлопнувший эти два состояния, выбросил бы
информацию, нужную, чтобы их различить.