Если ваш игровой сервер запускается, только когда вы входите в систему и открываете его двойным щелчком, после каждой перезагрузки (обновления Windows, перезагрузки из панели) он остаётся выключенным, пока вы этого не заметите. С Task Scheduler (Планировщик заданий) он запускается сам при загрузке Windows, и входить в систему для этого никому не нужно.
1. .bat-файл, который запускает сервер
Создайте, например, файл C:\servers\start.bat. Главное в нём — строка cd /d: перед запуском сервера она переходит в его папку.
@echo off
cd /d C:\FXServer\server
FXServer.exe
Замените папку и исполняемый файл на те, что нужны вашей игре (например, java -Xms6G -Xmx6G -jar paper.jar nogui для Minecraft). Сначала проверьте файл двойным щелчком: если так сервер не запускается, то и по расписанию не запустится.
2. Создайте задание
В PowerShell от имени администратора:
schtasks /Create /TN "Game server" /SC ONSTART /DELAY 0001:00 /RU SYSTEM /RL HIGHEST /TR "C:\servers\start.bat"
/SC ONSTART: при загрузке Windows, даже если никто не входит в систему./DELAY 0001:00: ждёт одну минуту, чтобы сеть и база данных успели подняться./RU SYSTEM: работает в фоне, как служба.
Проверьте задание без перезагрузки: schtasks /Run /TN "Game server".
Что меняется при таком запуске
Сервер работает в фоне, и его окна вы не увидите, когда войдёте по удалённому рабочему столу. Управляйте им через его веб-панель или удалённую консоль:
- FiveM: txAdmin по адресу
http://VASH_IP:40120. - Minecraft, Rust, ARK…: через RCON или прямо из игры с правами администратора.
Чтобы остановить сервер, выполните schtasks /End /TN "Game server" или завершите его в Task Manager (Диспетчер задач). А чтобы отключить задание: schtasks /Change /TN "Game server" /DISABLE.
Автоматический перезапуск, если сервер упал
Для игр без панели, которая сама перезапускает сервер (txAdmin делает это для FiveM), добавьте в .bat цикл — он снова запустит сервер, когда тот закроется:
@echo off
cd /d C:\servers\rust
:start
RustDedicated.exe -batchmode +server.port 28015 +server.identity "main"
timeout /t 10
goto start
Если однажды понадобится остановить сервер насовсем, просто закрыть его недостаточно: цикл запустит его снова. Завершите задание командой schtasks /End (и закройте сервер, если он ещё работает), а затем отключите задание, чтобы оно не запускалось вместе с Windows.