О чем не пишут в инструкциях - тюнинг SRCDS

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
То, о чем я здесь буду рассказывать,обычно не требуется для нормального функционирования игрового сервера. Однако, когда у вас стоит не один, и не два сервера, и на многих серверах высокий онлайн, наверно многие задумывались об оптимизации (любой, начиная от плагинов и заканчивая настройкой ОС). Здесь я расскажу о стандартных настройках и параметрах сервера, которые мало где описаны, либо описаны недостаточно понятно/полно, но которые позволяют "тюнинговать" Source-серверы для уменьшения использования одних ресурсов и более аккуратного распределения других.
Большинство данных параметров актуально для обоих ОС (Windows/Linux).
Многие помнят строчку в консоли
Network: IP 77.232.128.228, mode MP, dedicated Yes, ports 27015 SV / 27005 CL
Однако, при запуске уже второго сервера появляется строчка
WARNING: Port 27005 was unavailable - bound to port 27006 instead
И соответственно
Network: IP 77.232.128.228, mode MP, dedicated Yes, ports 27016 SV / 27006 CL
Все бы ничего, в принципе этот порт CL особо ни на что не влияет, проблемы возникают когда серверов больше десяти - если скажем на порту 27015 сервер не был запущен, то при запуске одиннадцатого сервера займется порт 27015 - и вот тут уже начинаются проблемы.
В SRCDS есть стандартная переменная, которую можно указывать при запуске - clientport Итого, можно написать в строке запуска "+clientport 27115" - и порты не будут пересекаться. Если же у вас количество серверов огромное - можно и 28015 поставить...
В итоге можно использовать любой диапазон портов для сервера, не ограничиваясь началом с 27015. Хотя, есть еще проблема с портами от 27020, но об этом в следующем разделе
В продолжение предыдущего, опять же, при запуске второго сервера появляется
WARNING: Port 27020 was unavailable - bound to port 27021 instead
В итоге такая же ситуация, как и в первом пункте, только сервер уже не поставится на порт 27020 и выше...
Решения: Если вам не нужен SourceTV (А он нужен практически только для CW), можно добавить в параметры запуска "-nohltv" - это отключит STV на корню, то есть не будет выделяться отдельный порт и соответственно ен будет работать tv_enable 1 и подобные. Если же вам нужен STV, то можно прописать в параметрах запуска "+tv_port 27215", опять же, порт любой, но для упрощения можно например последние две цифры оставить на совпадение с портом сервера, а третью изменить.
Данный вопрос особенно актуален сейчас для серверов TF2 Mann vs. Machine, поскольку в принципе все серверы MvM особо ничем не отличаются.
Если у вас стоит SourceBans, то такой трюк не получится, поскольку для SB требуется прописывать ID сервера в конфиге, путь к которому нельзя изменить. Так же, на серверах будет одинаковая база админов, поскольку нет возможности указывать различные конфиги админов.
В параметрах запуска SRCDS есть параметр "+servercfgfile", при помощи которого можно изменить автоматически выполняемый при смене карты файл (То есть server.cfg).
Удобнее будет создать обычный файл server.cfg с настройками, общими для всех или больинства серверов, и отдельные конфиги, которые и будут файлами конфигурации для отдельных серверов, но которые вначале будут выполнять server.cfg
То есть, например (для TF2 MvM), в файле server.cfg указаны параметры RCON, логов, встроенных голосований, базовые параметры MvM, а в файле скажем srv_1.cfg, который является главным конфигом для первого сервера (то есть в строке запуска указано "+servercfgfile srv_1.cfg"), первой строчкой идет "exec server", а дальше идет имя сервера и параметры игровой авторизации на мастерсеврере (tf_server_identity_account_id/token)
Так же в данном случае можно закомментировать определенные строчки в конфигах в папке SM и указать их в srv_1, если необходимо различие этих переменных на серверах.
Для такого разделения пригодятся так же следующие команды и параметры:
mapcyclefile - позволяет изменить путь/имя файла mapcycle.txt, например можно создать файлы mc_1.txt mc_2.txt и в отдельных серверных конфигах (srv_1...) указать например mapcyclefile mc_1.txt - РАСШИРЕНИЕ ВАЖНО!
sv_logsdir - возволяет прописать путь стандартных логов сервеа (по умолчанию это папка logs)
motdfile - путь к файлу MotD (по умолчанию это motd.txt)
motdfile_text - путь к текстовой версии файла MotD (по умолчанию это motd_text.txt)

Благодарю Vit_ amin за напоминание о списке переменных и за новые переменные :)
Список таких вот "Трюков" думаю постепенно пополнять...
 
Последнее редактирование:

Vit_ amin

Добрая душа
Сообщения
1,504
Реакции
660
В дополнении сказаному.
Я все свои сервера запуская из 1-ой папки есть еще парочка консольных переменных :
sm_basepath указывает новый путь к папке sourcemod (def addons/sourcemod)
mapcyclefile указывается новый путь к файлы mapcycle.txt (def mapcycle.txt)
mm_pluginsfile указывает на новый путь к файлу metalist.ini (по умолчанию addons/metamod/metalist.ini)
P.S. думаю надо добавить это в 1-ый пост.
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424

Во, думал, что еще из того что у меня используется забыл, спасибо что напомнил =)
А про две других - действительно, получается довольно удобно, надо будет попробовать )) У меня сейчас симлинками папки карт/моделей/материалов на общие, а остальное в отдельных папках
 

Vit_ amin

Добрая душа
Сообщения
1,504
Реакции
660
Во, думал, что еще из того что у меня используется забыл, спасибо что напомнил =)
А про две других - действительно, получается довольно удобно, надо будет попробовать )) У меня сейчас симлинками папки карт/моделей/материалов на общие, а остальное в отдельных папках
Я также использую adminmenu_customs.txt и параметр type mapcycle для создания списка карт для каждого серва

Добавлено через 3 минуты
Также добавлю (если для всех серверов данный файл общий)
sm_corecfgfile указывает новый путь файлу core.cfg (def addons/sourcemod/config/core.cfg)

Добавлено через 8 минут
Ах да еще можно использовать это
sv_logsdir путь до папки с логами (def cstrike/logs)
Я лично использую разные папки с логами для разных серверов
 
Последнее редактирование:

Vit_ amin

Добрая душа
Сообщения
1,504
Реакции
660
motdfile указывает на новый путь к файлу mod.txt (def motd.txt)
motd_text_file указывает на новый путь к файлу mod_text.txt (def motd_text.txt)
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
Смотрел тут, переделывал...
Я также использую adminmenu_customs.txt и параметр type mapcycle для создания списка карт для каждого серва

А зачем? Ведь есть же maplists.cfg, в котором можно везде указать "target" "mapcyclefile"и тогда не нужно будет отдельно выделять список карт, на каждом сервере список карт будет равен мапциклу, который указывается через mapcyclefile - я довольно активно это использую...
 
Сверху Снизу