Запуск несколько инстансов сервера из одной папки

Сообщения
207
Реакции
420
Помог
10 раз(а)
Запуск несколько инстансов разных серверов из одной папки
Движок Source, и аддоны MetaMod/SourceMod имеют функционал, позволяющий работать нескольким сборкам серверов со своими конфигами, плагинами и т.д. - из одной папки. Это позволяет сэкономить место на диске сервера (если его не так уж и много), и запустить, скажем, 10 серверов CS:GO с своими плагинами, конфигами, картами, заняв всего лишь 30ГБ места.
В этой небольшой статье разберём, как именно это сделать.
Для реализации подобного запуска применяются параметры запуска сервера. Сам движок позволяет нам поменять список карт (mapcycle.txt), стандартный конфиг (server.cfg). Этого вполне достаточно для запуска нескольких голых серверов.
  • mapcyclefile - имя файла с списком карт для ротации. По-умолчанию, mapcycle.txt
  • servercfgfile - имя файла с основным конфигом сервера. По-умолчанию, server.cfg
Но как быть с MetaMod? Разработчики предоставили нам два параметра для смены путей поиска VDF и файла с алиасами плагинов MM. Их-то мы и можем прописать в параметры запуска сервера. Ознакомимся с ними:
  • mm_pluginsfile - путь к файлу metaplugins.ini. По-умолчанию, addons/metamod/metaplugins.ini
  • mm_basedir - путь к корневой папке MM:S, в которой MM должен искать VDF-файлы плагинов для загрузки. По-умолчанию, addons/metamod
Эти параметры по сути являются серверными консольными переменными, потому должны прописываться с плюсом перед именем в параметрах запуска.

У SourceMod тоже есть аналогичная переменная, которая тоже требует изменений. И не только она.
Допустим, файлы плагинов MetaMod для сервера #1 будет лежать в addons/metamod_ash, а для сервера #2 - в addons/metamod_allmaps. В таком случае, в каждой папке должен лежать хотя бы подобного плана metaplugins.ini:
Код:
;If your plugin came with a .vdf file, you do not need to use this file.
;
;List one plugin per line.  Each line should contain the path to the plugin's binary.
;Any line starting with a ';' character is a comment line, and is ignored.
;
;You do not need to include the _i486.so or .dll part of the file name.  Example:
; addons/sourcemod/bin/sourcemod_mm
;You may also put an alias in front of the file, for example:
; sm addons/sourcemod/bin/sourcemod_mm
;Will allow you to use "meta load sm" from the console.
;
;********* LIST PLUGINS BELOW ***********
Можно его вообще пустым оставить.
И файл для SourceMod-плагина. Он должен выглядеть так:
Код:
"Metamod Plugin"
{
	"alias"		"sourcemod"
	"file"		"addons/sourcemod_ash/bin/sourcemod_mm"
}
Так же, нам необходимо прописать переменную sm_basepath в параметры запуска. Она должна содержать в себе путь до новой копии SourceMod относительно папки игры (cstrike, csgo, tf и т.д.).

Получаем следующее по итогу на примере двух серверов.
  • В папке addons должно лежать 5 папок:
    • metamod, в котором должны лежать бинарники MetaMod: Source.
    • metamod_ash, в которой должен лежать metaplugins.ini и sourcemod.vdf
    • metamod_allmaps, в которой должен лежать metaplugins.ini и sourcemod.vdf
    • sourcemod_ash, в которой должен лежать весь SourceMod с нужными плагинами, конфигами и т.д..
    • sourcemod_allmaps, в которой должен лежать весь SourceMod с нужными плагинами, конфигами и т.д..
  • В параметрах запуска для каждых серверов должно быть прописано что-то вроде следующего:
    • Для сервера #1: srcds_run -game tf -console +maxplayers 32 +map vsh_crevice_b5 +mm_basedir "addons/metamod_ash" +mm_pluginsfile "addons/metamod_ash/metaplugins.ini" +sm_basepath "addons/sourcemod_ash" +servercfgfile ashserver.cfg +mapcyclefile ashmaps.txt
    • Для сервера #2: srcds_run -game tf -console +maxplayers 32 +map cp_dustbowl +mm_basedir "addons/metamod_allmaps" +mm_pluginsfile "addons/metamod_allmaps/metaplugins.ini" +sm_basepath "addons/sourcemod_allmaps" +servercfgfile allmapsserver.cfg +mapcyclefile allmapscycle.txt
  • В addons/metamod_ash/sourcemod.vdf должно быть прописано следующее:
    Код:
    "Metamod Plugin"
    {
    	"alias"		"sourcemod"
    	"file"		"addons/sourcemod_ash/bin/sourcemod_mm"
    }
  • В addons/metamod_allmaps/sourcemod.vdf должно быть прописано следующее:
    Код:
    "Metamod Plugin"
    {
    	"alias"		"sourcemod"
    	"file"		"addons/sourcemod_allmaps/bin/sourcemod_mm"
    }

Вот, в принципе, и вся базовая настройка. Дальше сервер будет загружать разные папки плагинов, конфигов, мапцикла и прочего. По мере необходимости, можно отредактировать или добавить загрузку иных конфигов.

Ещё можно сэкономить место на симлинках на дубликаты файлов, но это уже тема отдельной статьи...
 
Последнее редактирование:
Сообщения
207
Реакции
420
Помог
10 раз(а)
Larsalex, для CS:GO была переменная для указания файла гейммода. Чуть позже раскатаю сервер, найду, дополню.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу