TeaHost

обновлено 5 мин чтения

Как создать сервер 7 Days to Die

Запускаем сервер 7 Days to Die: установка SteamCMD, разбор serverconfig.xml, порты 26900-26903, генерация RWG-карты, права админа и настройка сложности

Кратко

Сервер 7 Days to Die ставится через SteamCMD (App ID 294420) и целиком настраивается в serverconfig.xml: имя, видимость, размер RWG-карты, сложность, орда и лимиты зомби. Нужны открытые TCP 26900 и UDP 26900–26903, права выдаются командой admin add, а по памяти ориентир из практики — 8 ГБ на карту 6144 и 4 игроков, 12 ГБ на 8192 и 8–10 игроков.

Кровавая луна каждый седьмой день интереснее, когда база строится всей группой, а не одним человеком в одиночной сессии. Сервер 7 Days to Die даёт именно это: общий мир, который продолжает жить между заходами, накопленный прогресс и орду, которая приходит ко всем сразу. Разберём установку, главный конфиг serverconfig.xml, генерацию карты и настройки, от которых зависит, будет ли на сервере комфортно играть.

Сервер 7 Days to Die и генерация случайного мира

Сколько ресурсов нужно

7 Days to Die — Unity-игра с полностью разрушаемым воксельным миром, и это дорого. Каждая разрушенная стена, каждая выкопанная шахта хранятся в сейве и подгружаются в память.

Официальных требований к выделенному серверу The Fun Pimps не публикует; для самой игры страница в Steam указывает минимум 8 ГБ RAM и рекомендует 12 ГБ. Рабочие цифры из практики для сервера:

ПамятьКартаОнлайн
8 ГБ6144До 4 игроков
12 ГБ81928–10 игроков, комфортная работа
16 ГБ и выше10240Большие орды и более активный онлайн

Процессор нужен с высокой частотой: подсчёт путей зомби в ночь орды — самое тяжёлое, что происходит на сервере, и распараллеливается оно плохо. Четыре быстрых ядра лучше восьми медленных.

Отдельно про диск: первая генерация случайного мира занимает от нескольких минут до получаса и грузит процессор на полную. На слабой машине сервер в этот момент выглядит зависшим — это нормально, дайте ему закончить.

Установка сервера 7 Days to Die

App ID выделенного сервера — 294420 (у клиента игры другой, 251570). Логин в SteamCMD анонимный, покупать игру на серверный аккаунт не нужно.

код
steamcmd +force_install_dir /opt/7dtd +login anonymous +app_update 294420 validate +quit

Запуск:

код
cd /opt/7dtd
./startserver.sh -configfile=serverconfig.xml

Под Linux серверу нужны 32-битные библиотеки и libgdiplus в некоторых дистрибутивах — если процесс падает сразу с ошибкой загрузки библиотек, ставьте зависимости, а не ищите проблему в конфиге.

Разбор serverconfig.xml

Весь сервер настраивается одним XML-файлом. Формат — набор строк вида <property name="..." value="..."/>. Пройдём по тому, что действительно меняют.

Основа:

код
<property name="ServerName" value="TeaHost 7DTD"/>
<property name="ServerPassword" value=""/>
<property name="ServerMaxPlayerCount" value="8"/>
<property name="ServerPort" value="26900"/>
<property name="ServerVisibility" value="2"/>
<property name="ServerDescription" value="Сервер для своих"/>

ServerVisibility: 2 — публичный, 1 — только для друзей, 0 — скрытый. Для приватной игры ставьте 0 и раздавайте IP.

Мир:

код
<property name="GameWorld" value="RWG"/>
<property name="WorldGenSeed" value="TeaHostWorld"/>
<property name="WorldGenSize" value="8192"/>
<property name="GameName" value="MyGame"/>

GameWorld принимает либо RWG (случайная генерация), либо Navezgane — рукотворную карту разработчиков. Navezgane стартует мгновенно и меньше грузит машину, RWG даёт свежий мир, но требует генерации. WorldGenSize кратен 1024, разумный диапазон — от 6144 до 10240. Больше — красиво, но каждый шаг вверх заметно поднимает потребление памяти.

Сложность и темп:

код
<property name="GameDifficulty" value="2"/>
<property name="DayNightLength" value="60"/>
<property name="DayLightLength" value="18"/>
<property name="BloodMoonFrequency" value="7"/>
<property name="BloodMoonRange" value="0"/>
<property name="BloodMoonEnemyCount" value="8"/>
<property name="XPMultiplier" value="100"/>
<property name="LootAbundance" value="100"/>
<property name="LootRespawnDays" value="30"/>

BloodMoonEnemyCount — число зомби на игрока в ночь орды. Восемь — стандарт; поднимать выше стоит только при уверенности в железе, потому что нагрузка растёт умножением на количество игроков. BloodMoonRange=0 фиксирует орду ровно на седьмой день, ненулевое значение добавляет разброс.

Производительность:

код
<property name="MaxSpawnedZombies" value="64"/>
<property name="MaxSpawnedAnimals" value="50"/>
<property name="ServerMaxAllowedViewDistance" value="12"/>

Вот эти три параметра — первое, что стоит снижать, если сервер начинает проседать. ServerMaxAllowedViewDistance в 12 вместо стандартных значений выше даёт заметный прирост при большом онлайне. Логика тут ровно та же, что с дальностью прорисовки в других играх, — принцип разбирал в тексте про настройку view distance.

Земельные претензии:

код
<property name="LandClaimSize" value="41"/>
<property name="LandClaimCount" value="3"/>
<property name="LandClaimDeadZone" value="30"/>
<property name="LandClaimExpiryTime" value="7"/>

LandClaimExpiryTime в днях определяет, когда база неигравшего человека перестаёт быть защищённой. На сервере со случайными людьми это единственная реальная защита построек от разбора.

Порты

7 Days to Die слушает диапазон: TCP 26900 и UDP 26900–26903.

код
ufw allow 26900/tcp
ufw allow 26900:26903/udp

Если сервер не появляется в браузере, но заходит по прямому подключению — обычно закрыт один из UDP-портов диапазона или ServerVisibility стоит в 0. Через клиент прямое подключение делается в Join a Game → Connect to IP с портом 26900.

Права администратора

Список админов лежит отдельно, в serveradmin.xml (каталог .local/share/7DaysToDie/Saves/). Проще всего добавить себя из консоли сервера:

код
admin add <SteamID64> 0 "owner"

Уровни от 0 (полный доступ) до 1000 (обычный игрок). Ниже 1000 открываются команды: ban, kick, give, teleportplayer, settime. Свой SteamID64 берётся в профиле Steam или из лога подключения.

Полезные консольные команды в работе:

код
saveworld
shutdown
lp
mem
gettime

saveworld перед перезагрузкой обязательна, mem показывает потребление и число загруженных чанков — удобно для диагностики.

Что настроить сразу после запуска

Три вещи, которые окупаются в первую неделю.

Автосейв и рестарт. Перезапуск раз в сутки с предварительным saveworld сбрасывает накопленную память Unity. Без него на седьмой-восьмой день многие серверы начинают ощутимо тормозить.

Бэкапы папки сейва. Мир 7 Days to Die бьётся при жёстком выключении, и лечится это только копией. Про схему копий — зачем нужны автобэкапы.

EAC. Античит включён по умолчанию (параметр EACEnabled в serverconfig.xml). Отключать его нужно только если ставите моды, которые с ним не работают, — и тогда сразу закладывайте, что читеры придут.

Итог

Схема запуска короткая: app_update 294420, правка serverconfig.xml под свою группу, открытые TCP 26900 и UDP 26900–26903, добавление себя в админы, ночной рестарт в расписании. Дальше можно крутить сложность и частоту орды, подгоняя мир под то, во что вам нравится играть.

Если возиться с генерацией мира и firewall нет желания, готовый сервер разворачивается за пару минут — тарифы посмотрите здесь. Понять, какой объём памяти брать под ваш онлайн, поможет разбор сколько игроков выдержит сервер.

ПоделитьсяTelegramVK
Все статьи рубрики