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

Переменные окружения

Меняется. Следите: #278

На этой странице перечислены все переменные окружения MCRS_*, которые читают сервер, клиент и тестовые инструменты, и их значения по умолчанию. Список получен командой grep -rn 'MCRS_' crates src на коммите 51d45c26a. Сервер читает 11 переменных. Клиент читает намного больше, и большинство из них нужны для замеров производительности.

Бинарник сервера mcrs читает переменные из таблицы ниже. Если переменная не задана, сервер берет значение по умолчанию. Если значение не удалось разобрать, сервер пишет предупреждение в лог и тоже берет значение по умолчанию. Код находится в ServerSettings::read из crates/mcrs_minecraft_server_settings/src/server_settings.rs, а вызывает его src/main.rs.

Переменная-переключатель включается значениями on, 1, true и yes и выключается значениями off, 0, false и no, регистр букв не важен. Пробелы по краям значения отбрасываются до разбора.

Переменная По умолчанию Что делает
MCRS_PORT 25565 Порт, на котором сервер слушает. Сервер слушает на всех интерфейсах (0.0.0.0). Допустимо от 1 до 65535.
MCRS_COMPUTE_THREADS по умолчанию плагина Размер пула вычислительных потоков. Положительное число.
MCRS_WORLD_SEED 0 Сид мира, знаковый или беззнаковый 64-битный. Отрицательный сид сохраняет свои биты, как Java long.
MCRS_WORLD_PRESET normal Пресет мира, короткий (flat) или с пространством имен (minecraft:flat), приводится к нижнему регистру.
MCRS_DEFAULT_GAMEMODE creative Режим игры нового игрока: survival, creative, adventure или spectator.
MCRS_MOB_AI вкл Думают ли мобы. При выключении убирается плагин мозга мобов.
MCRS_LAN_ANNOUNCE вкл Объявляет ли сервер себя в локальной сети. Сервер, который слушает только loopback, никогда не объявляет себя.
MCRS_COMPRESSION_THRESHOLD 256 Размер пакета в байтах, начиная с которого пакеты сжимаются. Отрицательное число выключает сжатие.
MCRS_ACCEPT_TRANSFERS выкл Принимает ли сервер игроков, которых переносит (transfer) другой сервер.
MCRS_ENABLE_STATUS вкл Отвечает ли сервер на запросы статуса (пинг списка серверов).
MCRS_HIDE_ONLINE_PLAYERS выкл Скрывает ли статус имена игроков онлайн. Счетчики остаются.

Сервер также читает ops.json, whitelist и файлы банов из рабочего каталога. Это файлы, поэтому в таблице их нет.

Бинарник клиента собирает все переменные MCRS_* процесса и отрезает префикс. Этот код лежит в crates/mcrs_minecraft_client/src/native.rs. Если имя встречается дважды, берется первое значение. Если значение неверное, нативный клиент печатает его в stderr и не запускается. Браузерная сборка берет те же имена из строки запроса в нижнем регистре, например ?time=6000.

У клиента, собранного с singleplayer, есть встроенный сервер, и он тоже читает серверные переменные из таблицы выше, например WORLD_SEED и WORLD_PRESET.

Переменная По умолчанию Что делает Файл
MCRS_SERVER нет host:port сервера, к которому надо подключиться. Без нее сборка singleplayer поднимает собственный сервер. native.rs
MCRS_USERNAME Player Имя игрока. config.rs
MCRS_VIEW 96 Дальность прорисовки в колонках, от 2 до 96. Приоритетнее файла настроек. config.rs
MCRS_OPTIONS нет Путь к JSON-файлу с полями fov, fov_effect_scale, smooth_light, clouds, brightness, view_distance. Неизвестные поля дают ошибку. options.rs
MCRS_FULLSCREEN выкл Занять весь дисплей. config.rs
MCRS_OPEN_TO_LAN выкл Встроенный сервер слушает на всех интерфейсах и объявляет себя. Аутентификации нет, поэтому любой в сети может зайти под любым именем. config.rs
MCRS_GUI_SCALE 0 (авто) Фиксированный масштаб GUI. config.rs
MCRS_HISTORY нет Файл, в котором хранится история команд. config.rs
MCRS_VSYNC выкл Вертикальная синхронизация. По умолчанию выключена, чтобы время кадра оставалось читаемым. config.rs
MCRS_OCCLUSION вкл Тест окклюзии по пирамиде глубины. 0 рисует каждую группу, которая проходит пирамиду видимости (frustum) и граф пещер. config.rs
MCRS_CAVE вкл Отсечение по графу пещер. config.rs
MCRS_CHUNK_MAP, MCRS_LIGHT_LEVELS выкл Отладочные оверлеи. config.rs
MCRS_ASYNC половина ядер, не меньше 4 Потоки асинхронного вычислительного пула (построение мешей, декодирование колонок, освещение). config.rs
MCRS_MESH, MCRS_MESH_FLIGHT 2048, 2048 (web: 32, 128) Сколько секций построитель мешей берет за кадр и сколько задач может быть в работе одновременно. config.rs
MCRS_UPLOAD 4 Бюджет загрузки на кадр, в МБ. config.rs
MCRS_ARENA 192,640,512 (web: 32,208,80) Размеры арен в МБ для квадов, моделей и граней, в виде quads,models,faces. config.rs
MCRS_JAR_WORKERS по умолчанию крейта Число воркеров загрузки в онлайн-тесте крейта клиентского JAR. native.rs
MCRS_CERT нет Хеш сертификата для веб-клиента, который подключается к серверу. Только веб-сборка. config.rs

Переменные из этого раздела нужны, чтобы замер производительности можно было повторить. Не задавайте их для обычной игры, потому что некоторые намеренно меняют то, что измеряется. Метод описан на странице Производительность и в PERF.md.

Переменная По умолчанию Что делает
MCRS_HOT выкл Держит одно ядро CPU занятым, чтобы производительные ядра не снижали частоту. Время движка при этом получается в два-три раза короче. Это не настройка для игрока.
MCRS_GPU_HOT нет Сжигает столько рабочих групп GPU после кадра, чтобы GPU оставался на полной частоте.
MCRS_STATS нет Секунды между строками F3, которые пишутся в лог при скрытом оверлее.
MCRS_PROBE авто 0 оставляет проходы GPU без замера, 1 замеряет каждый кадр.
MCRS_RESOLUTION нет Открывает окно размером ровно <width>x<height>.
MCRS_LATENCY нет На сколько изображений swapchain окно может убежать вперед.
MCRS_MONITOR самый быстрый дисплей primary открывает окно на основном дисплее.
MCRS_CENSUS нет Секунды между строками, где подсчитаны трассированные колонки по стадиям.
MCRS_TRACY_PREVIEW выкл Отправляет изображения кадров в Tracy. Стоит одного считывания (readback) за кадр.
MCRS_CHUNK_GUARD, MCRS_LIGHT_GUARD выкл 1 роняет клиент, когда игрок стоит в колонке, которой у клиента нет, warn только пишет в лог. MCRS_LIGHT_GUARD читается так же, но для света.
MCRS_GPUTRACE нет Путь для записи трассы GPU.
MCRS_RASTER нет Доля от 0 до 1 для растрового прохода.
MCRS_DRAWS все Список номеров отрисовок через запятую, которые надо оставить.
MCRS_SKY все Список проходов неба через запятую, которые надо рисовать: disc,twilight,celestial,stars,clouds.
MCRS_FLY, MCRS_TURN нет Скорость скриптового полета в блоках за тик и секунды до одного полного оборота.
MCRS_TIME нет Фиксирует все часы на заданном числе тиков.
MCRS_POS, MCRS_LOOK, MCRS_SCREEN, MCRS_CURSOR нет Стартовая позиция x,y,z, направление взгляда yaw,pitch, экран (inventory) и позиция курсора для скриптовых снимков.
MCRS_CAPTURE нет Записать один скриншот в путь .png и выйти.
MCRS_SCREENSHOT_DIR нет Каталог для скриншотов.
MCRS_SCENE_DIR, MCRS_SCENE_RECORD нет Каталог для съемки сцены без окна и запись клиента ванили, из которой берутся сущности.

Клиент читает их все в crates/mcrs_minecraft_client/src/config.rs, dev/knobs.rs и scene_capture.rs.

Переменная Кто использует Что делает
MCRS_BLESS тесты мешей, моделей сущностей и анимации сущностей Если она задана, тест перезаписывает устаревший ожидаемый файл. Без нее тест падает и сообщает об этом.
MCRS_CLIENT_JAR тест отрисовки сущностей Путь к клиентскому JAR.
MCRS_VANILLA_SERVER_JAR, MCRS_SCENE_CLIENT, MCRS_SCENE_ENTITIES тест scene_frames клиента Серверный JAR, другой бинарник клиента и источник сущностей сцены: summon, record или skip (по умолчанию).
MCRS_MOLANG_CORPUS, MCRS_GPU_FUZZ_PROGRAMS тесты Molang Путь к файлу корпуса и число fuzz-программ (по умолчанию 10000).
MCRS_BENCH_WORLD, MCRS_BENCH_AREA бенч random_ticks_save Каталог сохраненного мира и <dimension> <x> <z> <radius>, чтобы загрузить только эту область.
MCRS_BIN mob-bench/run.sh Путь к бинарнику mcrs. Серверные переменные бенч задает сам.
MCRS_VANILLA_SERVER vanilla-server/run.sh Адрес vanilla-сервера, который скрипт передает тесту подключения mcrs.
MCRS_DRAW_ONLY, MCRS_GPU_HOT, MCRS_SPLIT_DRAW пример stress_field отрисовки сущностей Рисовать только full_rigs или impostors, число рабочих групп для удержания GPU (по умолчанию 16384) и разделение отрисовки на два прохода.
MCRS_COMMIT_HASH время сборки сетевого крейта Хеш коммита, который сообщает сервер. Крейт читает его через option_env! во время сборки, поэтому значение во время работы ни на что не влияет.
  1. Работает#278 Решение настраивать сервер только через его плагин. ↩

  2. В работе#82 Отслеживает онлайн-режим: шифрование и аутентификацию сессии. ↩

Источники и проверка

Проверено: 26.4-snapshot-7, 51d45c26a, 2026-11-09

Переведено с версии 51d45c26a

Следить: #278