Конфигурация сервера
vimp-server читает config.json из working directory. Если файл отсутствует, сервер создаёт полную конфигурацию по умолчанию.
{
"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.
Справочник полей
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
host | string | "127.0.0.1" | Адрес, на котором game server принимает подключения. |
server_name | string | "VIMP Server" | Публичное название сервера. |
port | integer | 7777 | Игровой TCP- и UDP-порт. |
max_players | integer | 100 | Максимальное число одновременных игроков. |
max_vehicles | integer | 1000 | Максимальное число транспорта, созданного сервером. |
max_objects | integer | 2000 | Максимальное число объектов, созданных сервером. |
max_markers | integer | 2000 | Максимальное число серверных markers. |
max_blips | integer | 2000 | Максимальное число серверных blips. |
max_checkpoints | integer | 2000 | Максимальное число серверных checkpoints. |
max_colshapes | integer | 2000 | Максимальное число серверных colshapes. |
max_peds | integer | 1000 | Максимальное число peds, созданных сервером. |
shard_size | number | 100 | Размер одного streaming shard в игровых координатах. |
world_radius | integer | 100 | Радиус мира в shards. |
streaming_tick_rate_ms | integer | 40 | Интервал пересчёта видимости в миллисекундах. |
streaming_visibility_radius | integer | 2 | Радиус видимости в shards; для voice требуется не меньше 1. |
scripts_path | string | "./scripting" | Корень с server/main.js и клиентскими ресурсами. |
script_ready_timeout_secs | integer | 30 | Время ожидания вызова vimp.markReady() скриптом. |
devtools | object | {} | Политика доступа к DevTools для скриптов. |
devtools.enabled | boolean | false | Включить выполнение кода через DevTools. |
devtools.allowed_social_clubs | array | [] | Разрешённые идентификаторы Social Club. |
devtools.allowed_names | array | [] | Разрешённые имена игроков. |
devtools.allow_localhost | boolean | true | Разрешить DevTools с localhost. |
devtools.max_code_bytes | integer | 65536 | Максимальный размер отправленного кода в байтах. |
heartbeat | object | {} | Heartbeat и авторизация в каталоге серверов. |
heartbeat.enabled | boolean | false | Публиковать heartbeat. |
heartbeat.server_token | string | "" | Секретный токен каталога серверов. |
voice | object | {} | Настройки встроенного voice. |
voice.enabled | boolean | true | Включить voice service. |
voice.proximity | object | {} | Поведение proximity voice. |
voice.proximity.enabled | boolean | true | Включить proximity routing. |
voice.proximity.full_volume_distance | number | 3 | Дистанция, после которой громкость начинает падать. |
voice.proximity.max_distance | number | 25 | Максимальная слышимая дистанция; не больше shard_size. |
voice.codec | object | {} | Настройки Opus encoder. |
voice.codec.bitrate | integer | 24000 | Bitrate Opus в битах в секунду. |
voice.codec.expected_packet_loss_percent | integer | 10 | Ожидаемый процент потери пакетов. |
voice.limits | object | {} | Лимиты ёмкости и защиты voice. |
voice.limits.max_channels | integer | 1024 | Максимальное число voice channels. |
voice.limits.max_memberships_per_player | integer | 8 | Максимальное число channels для игрока. |
voice.limits.max_members_per_channel | integer | 256 | Максимальное число участников channel. |
voice.limits.max_simultaneous_speakers_per_channel | integer | 8 | Максимум одновременно говорящих в channel. |
voice.limits.max_packets_per_second | integer | 60 | Лимит пакетов в секунду на игрока. |
voice.limits.packet_burst | integer | 10 | Допустимый кратковременный 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 останавливают запуск с ошибкой конфигурации.