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

Тема в разделе "Статьи и мануалы", создана пользователем KorDen, 2 янв 2013.

  1. KorDen

    KorDen Atra esterní ono thelduin! Ньюсмейкер

    Сообщения:
    2.194
    Симпатии:
    1.398
    То, о чем я здесь буду рассказывать,обычно не требуется для нормального функционирования игрового сервера. Однако, когда у вас стоит не один, и не два сервера, и на многих серверах высокий онлайн, наверно многие задумывались об оптимизации (любой, начиная от плагинов и заканчивая настройкой ОС). Здесь я расскажу о стандартных настройках и параметрах сервера, которые мало где описаны, либо описаны недостаточно понятно/полно, но которые позволяют "тюнинговать" 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 за напоминание о списке переменных и за новые переменные :)
    Список таких вот "Трюков" думаю постепенно пополнять...
     
    Последнее редактирование: 28 янв 2013
    Серый™, Sam_Fisher, Johan 76 и 7 другим нравится это.
  2. Vit_ amin

    Vit_ amin BotManager001

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

    KorDen Atra esterní ono thelduin! Ньюсмейкер

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

    Vit_ amin BotManager001

    Сообщения:
    1.052
    Симпатии:
    345
    Я также использую adminmenu_customs.txt и параметр type mapcycle для создания списка карт для каждого серва

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

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

    Vit_ amin BotManager001

    Сообщения:
    1.052
    Симпатии:
    345
    motdfile указывает на новый путь к файлу mod.txt (def motd.txt)
    motd_text_file указывает на новый путь к файлу mod_text.txt (def motd_text.txt)
     
  6. KorDen

    KorDen Atra esterní ono thelduin! Ньюсмейкер

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