Свой сервер

Создание нескольких серверов в одной папке Killing Floor

Эта инструкция описывает, как запустить несколько выделенных серверов Killing Floor из одной папки с игрой, не создавая отдельные копии игры.

Зачем это нужно?

Это полезно, если вы хотите запустить несколько серверов на разных портах, чтобы не создавать отдельные копии игры из-за конфликтов портов и конфигурационных файлов.

Подготовка файлов

В папке System создайте копии следующих файлов для каждого сервера:

  1. kf_server_launcher.bat → kf_server_launcher1.bat, kf_server_launcher2.bat, kf_server_launcher3.bat
  2. ucc.exe → ucc1.exe, ucc2.exe, ucc3.exe
  3. KillingFloor.ini → KillingFloor1.ini, KillingFloor2.ini, KillingFloor3.ini

Настройка bat-файлов

Вариант 1: Запуск всех серверов одновременно

batch
start ucc1 server KF-EvilSantasLair.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6?ini=killingfloor1.ini
start ucc2 server KF-EvilSantasLair.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6?ini=killingfloor2.ini
start ucc3 server KF-EvilSantasLair.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6?ini=killingfloor3.ini

Вариант 2: Защита от крашей с автоперезапуском

Для каждого сервера создайте отдельный bat-файл с защитой от крашей:

kf_server_launcher1.bat:

batch
@echo off
cls
echo Protecting srcds from crashes...
title log
:srcds
echo (%time%) KF server started.
start /wait ucc1 server KF-EvilSantasLair.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6?ini=killingfloor1.ini
echo (%time%) WARNING: srcds closed or crashed, restarting....
goto srcds

Аналогично создайте kf_server_launcher2.bat и kf_server_launcher3.bat с соответствующими номерами.

batch
start kf_server_launcher1.bat
start kf_server_launcher2.bat
start kf_server_launcher3.bat

Настройка портов в KillingFloor.ini

Важно! Для каждого сервера необходимо настроить разные порты в соответствующих ini-файлах.

Пример настройки портов:

  • Сервер 1 (KillingFloor1.ini):

    • 7707 UDP/IP (игровой порт)
    • 7708 UDP/IP (порт запросов)
    • 7717 UDP/IP (порт запросов)
    • 28852 TCP/IP и UDP (порт запросов)
    • 8075 TCP/IP (порт WebAdmin)
  • Сервер 2 (KillingFloor2.ini):

    • 7709 UDP/IP (игровой порт)
    • 7710 UDP/IP (порт запросов)
    • 7718 UDP/IP (порт запросов)
    • 28853 TCP/IP и UDP (порт запросов)
    • 8076 TCP/IP (порт WebAdmin)
  • Сервер 3 (KillingFloor3.ini):

    • 7711 UDP/IP (игровой порт)
    • 7712 UDP/IP (порт запросов)
    • 7719 UDP/IP (порт запросов)
    • 28854 TCP/IP и UDP (порт запросов)
    • 8077 TCP/IP (порт WebAdmin)

Также не забудьте настроить разные порты для Steam (20560 UDP/IP для первого сервера, 20561 для второго и т.д.).

Важные замечания

  • Убедитесь, что все порты уникальны для каждого сервера
  • Проверьте, что порты не заняты другими приложениями
  • Настройте файрвол и роутер для проброса всех необходимых портов
  • Каждый сервер должен иметь свою уникальную конфигурацию
  • Не ставьте второму серверу игровой порт 7717: его уже занимает первый сервер как порт GameSpy, и второй сервер из-за этого просто выключается. В теме «Доп.нформация» (форум killingfloor.ru) для второго сервера предложили набор со сдвигом +100: 7807 UDP (игра), 7808 UDP (запросы), 7817 UDP (GameSpy), 28952 TCP и UDP (мастер-сервер), 20660 UDP (Steam).

Несколько серверов и клиент на одном ПК: ошибка Q_UTF16ToUTF8

По темам форума killingfloor.ru (2012).

  • Ошибка. При смене карты сервер выдаёт окно «Точка входа в процедуру Q_UTF16ToUTF8 не найдена в библиотеке DLL vstdlib_s.dll», и пока окно не закрыть, карта не сменится (тема «смена карты»). По словам denfil777, так бывает, если клиент и сервер или две копии сервера запущены на одной машине под одним пользователем Windows; после запуска сервера под другой учётной записью ошибка у него пропала. Самому автору темы помог другой совет оттуда же: в файле KillingFloor.ini в папке System поменять значения bUseMapList= и bMapVote= на True.
  • Кодировка KillingFloor.ini. В теме «Точка входа в процедуру» Kkos запускал 3 сервера из одной папки (Windows 7 x64, клиент и сервер Steam). Он связал ошибку (в её тексте есть UTF16toUTF8) с тем, что пересохранил KillingFloor.ini из ANSI в UCS-2, чтобы писать сообщения сервера по-русски: после возврата родной кодировки ошибка пропала, хотя позже появлялась снова. В итоге он написал, что после появления ошибки достаточно закрыть оба сервера и запустить их заново.
  • Клиент не запускается рядом с сервером. В теме «Проблема с запуском 2 клиентов одновременно» игра не стартовала, пока на том же ПК работал выделенный сервер. Советовали запускать сервер под отдельным пользователем Windows, а игру - под своим, или воспользоваться программой Sandboxie. Rainishе предупредил, что в Sandboxie статистика каждого сервера сохраняется отдельно и об общей базе для нескольких серверов речи не идёт; Proton ответил, что Sandboxie можно настроить так, чтобы сервер мог изменять любые файлы в любой папке.