Skip to content

Конфигурация сервера

vimp-server читает config.json из working directory. Если файл отсутствует, сервер создаёт полную конфигурацию по умолчанию.

json
{
  "host": "0.0.0.0",
  "server_name": "My VIMP Server",
  "port": 7777,
  "max_players": 100,
  "max_vehicles": 1000,
  "max_objects": 2000,
  "max_markers": 2000,
  "max_blips": 2000,
  "max_checkpoints": 2000,
  "max_colshapes": 2000,
  "max_peds": 1000,
  "shard_size": 100,
  "world_radius": 100,
  "streaming_tick_rate_ms": 40,
  "streaming_visibility_radius": 2,
  "scripts_path": "./scripting",
  "script_ready_timeout_secs": 30,
  "devtools": {
    "enabled": false,
    "allowed_social_clubs": [],
    "allowed_names": [],
    "allow_localhost": true,
    "max_code_bytes": 65536
  },
  "heartbeat": {
    "enabled": false,
    "server_token": ""
  },
  "voice": {
    "enabled": true,
    "proximity": {
      "enabled": true,
      "full_volume_distance": 3,
      "max_distance": 25
    },
    "codec": {
      "bitrate": 24000,
      "expected_packet_loss_percent": 10
    },
    "limits": {
      "max_channels": 1024,
      "max_memberships_per_player": 8,
      "max_members_per_channel": 256,
      "max_simultaneous_speakers_per_channel": 8,
      "max_packets_per_second": 60,
      "packet_burst": 10
    }
  }
}

Пример слушает все interfaces для удалённых игроков. Оставьте стандартный 127.0.0.1, если нужен только local access.

Справочник полей

ПолеТипПо умолчаниюОписание
hoststring"127.0.0.1"Адрес, на котором game server принимает подключения.
server_namestring"VIMP Server"Публичное название сервера.
portinteger7777Игровой TCP- и UDP-порт.
max_playersinteger100Максимальное число одновременных игроков.
max_vehiclesinteger1000Максимальное число транспорта, созданного сервером.
max_objectsinteger2000Максимальное число объектов, созданных сервером.
max_markersinteger2000Максимальное число серверных markers.
max_blipsinteger2000Максимальное число серверных blips.
max_checkpointsinteger2000Максимальное число серверных checkpoints.
max_colshapesinteger2000Максимальное число серверных colshapes.
max_pedsinteger1000Максимальное число peds, созданных сервером.
shard_sizenumber100Размер одного streaming shard в игровых координатах.
world_radiusinteger100Радиус мира в shards.
streaming_tick_rate_msinteger40Интервал пересчёта видимости в миллисекундах.
streaming_visibility_radiusinteger2Радиус видимости в shards; для voice требуется не меньше 1.
scripts_pathstring"./scripting"Корень с server/main.js и клиентскими ресурсами.
script_ready_timeout_secsinteger30Время ожидания вызова vimp.markReady() скриптом.
devtoolsobject{}Политика доступа к DevTools для скриптов.
devtools.enabledbooleanfalseВключить выполнение кода через DevTools.
devtools.allowed_social_clubsarray[]Разрешённые идентификаторы Social Club.
devtools.allowed_namesarray[]Разрешённые имена игроков.
devtools.allow_localhostbooleantrueРазрешить DevTools с localhost.
devtools.max_code_bytesinteger65536Максимальный размер отправленного кода в байтах.
heartbeatobject{}Heartbeat и авторизация в каталоге серверов.
heartbeat.enabledbooleanfalseПубликовать heartbeat.
heartbeat.server_tokenstring""Секретный токен каталога серверов.
voiceobject{}Настройки встроенного voice.
voice.enabledbooleantrueВключить voice service.
voice.proximityobject{}Поведение proximity voice.
voice.proximity.enabledbooleantrueВключить proximity routing.
voice.proximity.full_volume_distancenumber3Дистанция, после которой громкость начинает падать.
voice.proximity.max_distancenumber25Максимальная слышимая дистанция; не больше shard_size.
voice.codecobject{}Настройки Opus encoder.
voice.codec.bitrateinteger24000Bitrate Opus в битах в секунду.
voice.codec.expected_packet_loss_percentinteger10Ожидаемый процент потери пакетов.
voice.limitsobject{}Лимиты ёмкости и защиты voice.
voice.limits.max_channelsinteger1024Максимальное число voice channels.
voice.limits.max_memberships_per_playerinteger8Максимальное число channels для игрока.
voice.limits.max_members_per_channelinteger256Максимальное число участников channel.
voice.limits.max_simultaneous_speakers_per_channelinteger8Максимум одновременно говорящих в channel.
voice.limits.max_packets_per_secondinteger60Лимит пакетов в секунду на игрока.
voice.limits.packet_burstinteger10Допустимый кратковременный burst пакетов.

Масштаб streaming

Примерный размер мира равен world_radius × shard_size. Visibility radius измеряется в shards. Больший radius, частые ticks и высокие entity caps повышают CPU, bandwidth и client load; измеряйте их на реальном движении игроков.

Secrets

heartbeat.server_token является секретом. Не коммитьте production token и не помещайте config.json в client resource tree. DevTools allowlists также должны оставаться только на сервере.

Voice validation выполняется при startup. Неверные distances, bitrate, packet-loss или capacity settings останавливают запуск с ошибкой конфигурации.

VIMP developer documentation