Sons of the Forest: сервер не запускается — диагностика
Запускаете SonsOfTheForestDS.exe, консольное окно мигает и закрывается — или вообще не появляется — и никакого понятного сообщения об ошибке. Знакомая ситуация для дедик-сервера Sons of the Forest, особенно на свежем VPS, где ещё не стоит куча Windows-компонентов, которые обычно тянутся вместе с игрой на клиентской машине. Причин у такого поведения немного, и почти все они диагностируются за 10-15 минут, если проверять по порядку, а не гадать наугад. Ниже — рабочий чек-лист от простого к сложному: лог запуска, зависимости, целостность установки, порты и права на файл.
Содержание
Смотрим лог запуска, а не гадаем по симптомам
Первая ошибка большинства админов — сразу лезть переустанавливать сервер, не посмотрев, что именно он пишет перед закрытием. SonsOfTheForestDS.exe — консольное приложение, и если запускать его напрямую через cmd.exe (а не через ярлык или службу, которая скрывает окно), последние строки перед крашем обычно видны прямо в терминале — просто окно закрывается слишком быстро, чтобы успеть прочитать.
Способ поймать вывод без спешки — перенаправить его в файл:
cd C:\sotf-server
SonsOfTheForestDS.exe > startup_log.txt 2>&1
После краша открываем startup_log.txt и ищем последнюю осмысленную строку — обычно это либо явная ошибка (не найден файл, не удалось открыть порт, ошибка парсинга конфига), либо просто обрыв на инициализации движка, что чаще всего указывает на нехватку системной зависимости, а не на баг самого сервера.
Если сервер запущен как служба через NSSM, у неё есть встроенное перенаправление логов, которое полезно включить сразу при настройке:
nssm set SonsOfTheForestServer AppStdout C:\sotf-server\logs\stdout.log
nssm set SonsOfTheForestServer AppStderr C:\sotf-server\logs\stderr.log
Если ни в консоли, ни в файле нет вообще ничего — процесс падает настолько рано, что не успевает даже начать логирование. Это почти всегда означает крах на уровне системных зависимостей, а не игровой логики, и здесь стоит сразу проверить журнал событий Windows:
eventvwr.msc
Идём в Windows Logs → Application, ищем записи с источником Application Error рядом со временем последнего запуска. В строке «Faulting module» часто виден конкретный виновник — например, отсутствующая vcruntime140.dll или msvcp140.dll прямо указывает на недостающий Visual C++ Redistributable, о котором дальше. Общий подход к чтению логов и крash-репортов игровых серверов разобран в статье про логи и краш-репорты: как читать и искать причину.
Отсутствующие зависимости: VC++ Redistributable и DirectX
Sons of the Forest построен на Unity, и хотя headless-сборка сервера не рисует картинку, она всё равно тянет за собой часть тех же системных библиотек, что и полноценный клиент. На чистом Windows Server (особенно Core-редакции без GUI-компонентов) их часто просто нет из коробки.
Обязательный минимум для стабильного старта:
- Microsoft Visual C++ Redistributable 2015-2022 (x64) — самая частая причина немого краша сразу после старта. Ставится за минуту:
winget install --id Microsoft.VCRedist.2015+.x64 -e
Если winget недоступен на сервере, скачайте vc_redist.x64.exe напрямую с сайта Microsoft и установите вручную — это стандартный офлайн-инсталлятор, безопасный для запуска на игровом VPS.
- DirectX End-User Runtime — иногда нужен даже для headless-режима, если движок пытается инициализировать часть графического стека при старте. Ставится через
dxwebsetup.exeс сайта Microsoft. - .NET Desktop Runtime — некоторые вспомогательные утилиты и панели управления, через которые вы можете запускать сервер, требуют актуальный .NET, хотя сам
SonsOfTheForestDS.exeот него не зависит напрямую.
После установки зависимостей обязательно перезагрузите VPS, а не просто переоткройте консоль — часть системных изменений (регистрация DLL, обновление PATH) применяется только после ребута.
Поднять сервер Sons of the Forest за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверПроверяем целостность установки через SteamCMD
Если зависимости на месте, а сервер всё равно падает или зависает на загрузке без вывода в лог, вероятна повреждённая установка — недокачанные или битые файлы после прерванной загрузки, обрыва сети или конфликта с антивирусом, который успел удалить один из файлов сервера как «подозрительный».
Симптом именно этой причины: сервер либо крашится не сразу, а через несколько секунд после старта (успевает частично инициализироваться), либо зависает на загрузке ассетов и не отвечает вообще, не давая ни ошибки, ни рабочего порта.
Лечится принудительной валидацией через SteamCMD — она сверяет хэши всех файлов сервера с манифестом Steam и докачивает то, что отличается:
steamcmd.exe +force_install_dir C:\sotf-server +login anonymous +app_update 2465200 validate +quit
Если валидация проходит, но проблема осталась, — верный признак более глубокой порчи установки. В этом случае быстрее и надёжнее не гоняться за отдельными файлами, а снести директорию сервера полностью и поставить заново:
rmdir /s /q C:\sotf-server
steamcmd.exe +force_install_dir C:\sotf-server +login anonymous +app_update 2465200 validate +quit
Перед сносом не забудьте забэкапить dedicatedserver.cfg и папку сохранений — переустановка самого сервера их не трогает, но если вы сносите всю директорию целиком, унесёте и их. Подробный процесс первой установки — в статье про установку и обновление игровых серверов через SteamCMD, там же общие грабли SteamCMD, актуальные не только для Sons of the Forest.
Отдельно стоит проверить свободное место на диске — билд сервера весит около 10 ГБ, и если установка обрывается из-за нехватки места, SteamCMD не всегда явно на это указывает, а просто оставляет часть файлов недокачанными.
Конфликт порта: кто-то уже занял 8766, 8767 или 27016
Sons of the Forest слушает три порта — GamePort (по умолчанию 8766/UDP), BlockingPort (8767/UDP) и QueryPort (27016/UDP). Если хотя бы один из них уже занят другим процессом, сервер либо откажется стартовать с ошибкой в логе, либо — что хуже — стартует, но будет вести себя нестабильно, не принимая часть подключений.
Частый сценарий на VPS с несколькими игровыми серверами: предыдущий процесс SonsOfTheForestDS.exe завершился некорректно (например, после краша по нехватке зависимостей из раздела выше) и продолжает висеть в диспетчере задач, удерживая порт, хотя формально уже не отвечает.
Проверяем, что реально слушает нужные порты:
Get-NetUDPEndpoint -LocalPort 8766,8767,27016
Если в выводе есть строка с PID, который не ожидаете увидеть, — смотрим, что это за процесс, и завершаем его, если это действительно зависший старый инстанс:
Get-Process -Id <PID>
Stop-Process -Id <PID> -Force
Если порт занят не игрой, а сторонним сервисом (иногда бывает конфликт с другим игровым сервером на той же машине, поднятым на похожих портах по умолчанию), проще сменить порты Sons of the Forest в dedicatedserver.cfg — поля GamePort, QueryPort и BlockingPort — чем разбираться, что и почему заняло диапазон первым. После смены портов не забудьте открыть новые значения в файрволе Windows. Общий разбор диагностики портов и файрвола — в статье порт не проброшен: как проверить и исправить.
Права на исполняемый файл и блокировка антивирусом
Ещё один типичный, но неочевидный источник тихого отказа — Windows или антивирус блокирует запуск SonsOfTheForestDS.exe, не показывая явной игровой ошибки, потому что до игровой логики дело просто не доходит.
Первое, что стоит проверить: не помечен ли файл как скачанный из интернета (Mark of the Web) — это происходит, если архив с сервером или сам exe попал на машину через браузер или сетевой диск, а не был установлен напрямую SteamCMD. Проверить и снять блокировку:
Get-Item C:\sotf-server\SonsOfTheForestDS.exe | Unblock-File
Если сервер ставился штатно через SteamCMD, эта проблема обычно не возникает — файлы приходят напрямую от Steam без пометки браузера, но стоит проверить, если директорию сервера копировали вручную с другой машины.
Второй частый случай — Windows Defender или сторонний антивирус помещает SonsOfTheForestDS.exe или одну из его DLL в карантин как «подозрительный» файл. Дедик-серверы игр на Unity нередко ловят ложные срабатывания эвристики именно из-за нестандартного способа выделения памяти движком. Проверить карантин:
Get-MpThreatDetection
Если сервер там — восстанавливаем файл и добавляем всю директорию C:\sotf-server в исключения антивируса, чтобы это не повторялось после каждого обновления:
Add-MpPreference -ExclusionPath "C:\sotf-server"
Третий вариант — банальная нехватка прав на запись в директорию сервера или в папку сохранений у пользователя, от имени которого запущена служба (актуально, если сервер поднят через NSSM или Task Scheduler под отдельной учётной записью, а не под тем же пользователем, что ставил SteamCMD). Убедитесь, что учётная запись службы имеет полный доступ к C:\sotf-server и к пути сохранений — без этого сервер может стартовать, но падать на попытке первой записи в лог или в сейв.
Ошибка в dedicatedserver.cfg
dedicatedserver.cfg — это JSON-файл, несмотря на расширение .cfg, и сервер довольно нетерпим к нарушениям синтаксиса: лишняя запятая перед закрывающей скобкой, незакрытая кавычка или пропущенная фигурная скобка — и парсер конфига падает ещё до попытки открыть сеть. В зависимости от версии сборки это либо явно видно в логе запуска («failed to parse config» или похожая строка), либо сервер просто тихо закрывается без внятного сообщения — тогда это ещё одна причина проверить лог из первого раздела, прежде чем переходить к более сложным гипотезам.
Самый надёжный способ найти опечатку — прогнать файл через любой валидатор JSON (например, встроенную проверку в VS Code или онлайн-линтер) перед тем, как копировать его обратно на сервер:
{
"ServerName": "Мой сервер Sons of the Forest",
"SaveSlot": 1,
"MaxPlayers": 4,
"GamePort": 8766,
"QueryPort": 27016,
"BlockingPort": 8767
}
Обратите внимание на последнее поле в объекте — запятая после него не ставится, это классическая опечатка при ручном редактировании конфига копипастой. Если сомневаетесь, что именно сломали, проще временно откатиться к дефолтному конфигу (сервер создаёт его заново при первом запуске в пустой директории) и внести правки заново по одному полю, перезапуская сервер после каждого изменения — так проще локализовать, какое именно значение вызывает проблему.
Поднять сервер Sons of the Forest за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверЧастые вопросы
Сервер запускается, но сразу же закрывается без единой строки в консоли — с чего начать?
С перенаправления вывода в файл (SonsOfTheForestDS.exe > startup_log.txt 2>&1) и проверки журнала событий Windows (eventvwr.msc) — в 9 случаях из 10 такое немое поведение означает отсутствующий VC++ Redistributable.
Помогла переустановка через SteamCMD, но через пару дней проблема вернулась — почему?
Скорее всего, файлы снова портит антивирус при каждом обновлении сервера. Добавьте директорию сервера в исключения (Add-MpPreference -ExclusionPath) и проверяйте карантин после каждого app_update.
Можно ли понять, что дело именно в порте, не разбирая процесс через диспетчер задач?
Да, команда Get-NetUDPEndpoint -LocalPort 8766,8767,27016 в PowerShell сразу покажет, слушает ли что-то эти порты и с каким PID — не обязательно лезть в GUI.
Стоит ли пробовать запуск через Proton на Linux, если на Windows никак не завести сервер?
Только как крайний план — официальной поддержки Linux у dedicated-сервера нет, и часть описанных здесь проблем (особенно с зависимостями) на Proton диагностировать сложнее из-за дополнительного слоя Wine-префикса. Подробнее об этом пути — в статье про установку сервера Sons of the Forest.
После смены портов в конфиге сервер стартует, но по старым портам его по-прежнему кто-то слушает — это нормально?
Нет, это означает, что старый процесс сервера так и не завершился и продолжает висеть в фоне на прежних портах. Проверьте диспетчер задач или Get-Process SonsOfTheForestDS и завершите зависший процесс явно.