Сервер Skyrim Together Reborn маленький, не хранит состояния и почти вызывающе прост: один процесс, один порт, один файл настроек и ни одного сохранения мира, которое можно потерять. Он держит правила, часы и связь между игроками, а каждый персонаж, каждый флаг квеста и каждая добыча лежат в локальном сохранении Skyrim у самого игрока. Такая схема делает хостинг дешёвым - 1-2 ГБ памяти хватает на размер группы, который на самом деле рекомендуют разработчики, - и означает, что сложности запуска лежат вообще не на сервере. Это версия игры, на которой обязаны сидеть все, моды, которых не должно быть ни у кого, и несколько настроек в STServer.ini, от которых зависит, как играется кооператив.
Что такое Skyrim Together Reborn и что ему нужно#
Skyrim Together Reborn - это мод от сообщества, а не функция Bethesda. Он построен на кодовой базе Tilted Online, которую разработала команда Tilted Phoques и выложила с открытым исходным кодом, и состоит из двух половин: клиентского мода, который ставится в Skyrim через менеджер модов, и отдельного выделенного сервера, который может запустить кто угодно. Версии у них общие, поэтому клиент 1.8 разговаривает только с сервером 1.8.
К клиентской половине требований больше, чем к большинству модов, и определиться с ними надо раньше, чем вы что-то арендуете или собираете:
- Skyrim Special Edition на последней сборке 1.6.x. На странице поддерживаемых игр в вики перечислены копии из Steam и GOG. Anniversary Upgrade не нужен, а разработчики советуют играть без него и отключить контент Creation Club, который он добавляет.
- Не поддерживаются и не будут никогда: Skyrim VR, оригинальный Skyrim и Legendary Edition, версия из Epic Games, версия из Game Pass и все консольные издания. Обхода для них нет.
- Windows для клиента. Сервер работает и в Windows, и в Linux, а сам мод - нет.
- Менеджер модов. Для Mod Organizer 2 и Vortex есть пошаговые руководства в официальной вики, а на сервере есть переключатели, которые разрешают или запрещают каждый из них.
Серверная половина - лёгкая. Это один исполняемый файл: SkyrimTogetherServer.exe в Windows, аналогичный бинарник в Linux и официальный образ Docker, - и он распространяется бесплатно вместе с модом. Ему не нужна копия Skyrim, вход в Steam или токен игрового сервера любого рода, так что хлопот с ним намного меньше, чем с играми Steam из статьи токены игровых серверов Steam простыми словами.
Что именно хранит сервер, стоит сказать прямо, потому что от этого меняется взгляд на бэкапы. Официальная команда Docker монтирует ровно три папки: config, Data и logs. Каталога мира нет. Сервер держит время суток, сложность, состав группы и живое состояние сессии; когда он останавливается, сессия закончена, а прогресс каждого игрока лежит в его собственном сохранении Skyrim на его собственной машине. Потерять мир здесь нельзя, но и восстановить его тоже.
Требования и потребление ресурсов#
Сервер ничего не симулирует. Он передаёт между клиентами положение, анимации, бой и состояние инвентаря, держит часы мира и следит за соблюдением правил из конфига. Стоимость растёт с числом игроков, а не с тем, как много Skyrim исследовано.
| Группа | RAM | CPU | Примечания |
|---|---|---|---|
| 2-4 игрока | 1 GB | 1 ядро | Обычный случай, запаса хватает |
| 5-8 игроков | 2 GB | 1-1,5 ядра | Рекомендуемый максимум группы |
| 9-16 игроков | 3-4 GB | 2 ядра | Возможно, но без поддержки, ждите рассинхрона |
| Сервер со скриптами (ресурсы на Lua) | +1 GB | 2 ядра | Целиком зависит от того, что вы запускаете |
Официальный ответ про число игроков такой: жёсткого предела в коде нет, а разработчики рекомендуют от 2 до 8 человек для хорошего опыта. Значение uMaxPlayerCount по умолчанию - 8, и это рекомендация, а не проверка лицензии. Квестовая и диалоговая системы Skyrim создавались для одного игрока, и каждое лишнее тело умножает число способов, которыми два клиента могут разойтись во мнении о том, что делает NPC.
Диск почти не важен. Сервер со всеми зависимостями занимает несколько сотен мегабайт, растут только логи, а единственный файл, который вы можете добавить, - это loadorder.txt в несколько килобайт. Сеть нагружается умеренно, но чувствительна к задержке, как и все экшен-игры: положения и анимации игроков передаются непрерывно, поэтому канал в 40 мс ощущается не так, как в 140 мс, хотя ни один из них ничем не перегружен. В статье задержка, джиттер и потеря пакетов разобрано, как понять, какая из трёх проблем у вас на самом деле, прежде чем винить мод.
Установка и запуск сервера#
В Linux поддерживаемый способ - Docker, а официальный образ называется tiltedphoques/st-reborn-server. Создайте три папки, которые ожидает контейнер, и запустите его:
$ sudo mkdir -p /opt/docker/skyrimserver/{config,Data,logs}$ sudo chown -R ${USER}:${USER} /opt/docker$ docker run -d -it --name skyrimserver -p 10578:10578/udp \ -v /opt/docker/skyrimserver/config:/st-server/config \ -v /opt/docker/skyrimserver/Data:/st-server/Data \ -v /opt/docker/skyrimserver/logs:/st-server/logs \ tiltedphoques/st-reborn-server:latestПри первом запуске в папку config записывается STServer.ini по умолчанию. Повседневная работа укладывается в три команды:
$ docker logs -tf skyrimserver # follow the log$ docker attach skyrimserver # console; detach with CTRL+P then Q$ docker stop skyrimserver -t 1 # stopВ Windows вы запускаете SkyrimTogetherServer.exe из папки, куда его положил мод, и при первом запуске рядом появляется тот же config/STServer.ini. На панели на базе Pterodactyl сервер работает из яйца (egg) от сообщества, собранного на том же образе; страницу вики про Pterodactyl стоит прочитать ради одного предупреждения: закрепляйте версию образа, а не следите за latest. Сервер, который тихо переехал на новый релиз, пока ваша группа сидит на старом клиентском моде, - это сервер, к которому никто не может подключиться.
STServer.ini построчно#
Один файл, пять секций, и вот всё его содержимое. Значения по умолчанию, как они поставляются:
[general]sLogLevel=infobConsole=true[LiveServices]bAnnounceServer=false[Gameplay]bEnableMiscQuestSync=falsefGoldLossFactor=0bAutoPartyJoin=truebEnableItemDrops=falsebEnableXpSync=truebSyncPlayerCalendar=falseuTimeScale=20bEnableDeathSystem=truebSyncPlayerHomes=falsebEnablePvp=falsebEnableGreetings=falseuDifficulty=4[ModPolicy]bAllowMO2=truebAllowSKSE=truebEnableModCheck=false[GameServer]sPassword=sAdminPassword=sServerName=Dedicated Together ServerbPremiumMode=trueuMaxPlayerCount=8uPort=10578Ключи, которые меняют ощущение от игры:
| Ключ | По умолчанию | Что делает |
|---|---|---|
uDifficulty | 4 | От 0 до 5, от Novice до Legendary. Действует на весь сервер и перекрывает настройку каждого клиента |
uTimeScale | 20 | Скорость игровых часов, от 0 до 1000 |
bEnableDeathSystem | true | Возрождение вместо загрузки сохранения, с выплатой штрафов за розыск |
fGoldLossFactor | 0 | Доля золота, теряемая при смерти, от 0 до 1 |
bEnableXpSync | true | Опыт боевых навыков делится на всю группу |
bEnablePvp | false | Могут ли игроки наносить урон друг другу |
bEnableItemDrops | false | Синхронизация выброшенных предметов, выключена, потому что роняла серверы |
bSyncPlayerHomes | false | Сундуки в ванильных домах игроков, намеренно не синхронизируются |
bAutoPartyJoin | true | Автоматически вступать в единственную группу на сервере |
bEnableGreetings | false | Срабатывают ли реплики приветствия NPC у всех |
bEnableMiscQuestSync | false | Экспериментальная синхронизация побочных квестов |
bSyncPlayerCalendar | false | Подтягивать календарь каждого игрока к самой поздней дате |
И ключи, которые определяют, чем является сервер:
| Ключ | По умолчанию | Что делает |
|---|---|---|
sServerName | Dedicated Together Server | Название в публичном списке |
uMaxPlayerCount | 8 | Число слотов |
uPort | 10578 | Единственный порт, который использует сервер |
sPassword | пусто | Пароль для входа. Если задать, сервер пропадает из списка |
sAdminPassword | пусто | Вводится в окне Connect, чтобы войти админом |
bPremiumMode | true | true - тик 60 Гц, false - 30 Гц |
bAnnounceServer | false | Показывать ли сервер в публичном списке |
bConsole | true | Доступна ли интерактивная консоль |
Про uDifficulty стоит сказать отдельно. По умолчанию стоит 4, то есть Expert, и это сделано намеренно: боевые столкновения в Skyrim рассчитаны на одного Драконорождённого, а четверо превращают Legendary в честный бой, а Adept - в экскурсию. Лучше повышайте, чем понижайте. uTimeScale - второй параметр, над которым стоит подумать до первой сессии: часами владеет сервер, и игроки не могут ждать или спать, чтобы промотать время. Оставьте 20, что соответствует ваниле, если только не хотите, чтобы драконы нападали, а магазины пополнялись в другом ритме.
bPremiumMode назван неудачно. Это не платный доступ и не уровень лицензии, а частота тиков: true - 60 Гц, false - 30 Гц. Оставьте включённым, если только вы не размещаетесь на чём-то действительно слабом, и тогда вдвое меньшая частота тиков - реальная экономия.
Порты, список серверов и подключение#
Один порт, 10578, и это вся сетевая поверхность.
| Порт | Протокол | Назначение |
|---|---|---|
10578 | UDP | Весь игровой трафик. Задаётся через uPort |
10578 | TCP | Только если роутер или файрвол не умеют открыть оба протокола одним правилом |
Официальная команда Docker публикует только UDP, а именно его и использует трафик. На странице вики про проброс портов домашним хостерам советуют выбирать «Both», если роутер это предлагает, и создавать два правила, если нет. Сначала откройте UDP; если сервер работает, а достучаться до него никто не может, добавьте TCP, прежде чем искать что-то более экзотическое. В статье порты игровых серверов простыми словами объясняется, почему это различие ломает столько серверов и как проверять по одному порту.
Войти можно двумя способами. Если поставить bAnnounceServer=true, сервер попадёт во внутриигровой список, где игроки находят его по названию. Если оставить false - это значение по умолчанию, - игроки сами вводят адрес и порт в окне Connect; для группы из пяти друзей это проще и не даёт вам ничего для модерации. Сервер с заданным sPassword скрыт из публичного списка независимо от того, объявлен ли он, так что пароль и объявление почти взаимоисключают друг друга.
Если вы хотите имя вместо адреса, это обычная запись A, указывающая на IP сервера; в статье как привязать домен к игровому серверу есть записи и оговорка про распространение. Игрокам всё равно придётся дописывать :10578, если только они не заходят через список и вы не трогали порт.
Админы и консольные команды#
Поддержка админов появилась в 1.7.0 и устроена не так, как в большинстве игр. Постоянного списка админов нет. sAdminPassword - это пароль, который игрок вводит в окне Connect, чтобы войти с правами админа на одну сессию, а если поле пустое, войти админом не сможет никто. Права также автоматически снимаются, когда админ отключается, так что ничего не копится.
Консоль сервера - docker attach, окно консоли в Windows или вкладка консоли на панели - принимает такие команды:
| Команда | Параметры | Действие |
|---|---|---|
/help | Список доступных команд | |
/players | Все, кто сейчас подключён | |
/admins | Все, у кого сейчас есть права админа | |
/uptime | Сколько сервер работает | |
/mods | Моды, установленные на сервере | |
/resources | Загруженные серверные скриптовые ресурсы | |
/SetTime | 0-23 0-59 | Установить час и минуту в игре |
/SetDate | day month year | Установить дату в игре, начиная с 1.6.x |
/AddAdmin | player_name | Выдать админа подключённому игроку |
/RemoveAdmin | player_name | Забрать обратно |
/quit | Остановить сервер |
Имена игроков с пробелами набираются с подчёркиваниями: /AddAdmin Skyrim_Together относится к игроку по имени «Skyrim Together». Если имя не совпадает ни с кем из подключённых, консоль выводит предупреждение, а не молча проваливается, чего многие игры не делают.
В чате игрокам доступны /help, /local - сообщение тем, кто рядом, - и /party - сообщение своей группе. Админам дополнительно доступна /settime. Это весь набор внутриигровых команд: команд kick и ban нет, и это самый сильный довод в пользу закрытого сервера с паролем, а не публичного и объявленного. Чтение консоли - отдельное умение; в статье как читать консоль описано, на что смотреть, когда вход не удаётся.
Моды, порядок загрузки и bEnableModCheck#
Официальная позиция такая: для наиболее стабильной работы не запускайте никаких других модов, и к этому стоит отнестись серьёзно, а не как к дежурной оговорке. Ничто в Skyrim Together не синхронизируется явно с другими модами. Если мод как будто работает у всей группы, это случайность того, как он меняет игру, а не поддерживаемая интеграция.
Что обычно переживает:
- Моды графики и текстур. Они меняют то, что рисует один клиент, и не затрагивают ничего из того, что передаёт сервер.
- SKSE, который мод загружает сам, если тот установлен, с учётом
bAllowSKSEна сервере. - Address Library for SKSE, которую руководства по установке считают необходимым условием, а не модом.
Что стабильно создаёт проблемы: всё, что рано вмешивается в рендерер или систему сохранений. В вики названы KiLoader, варианты Alternate Conversation Camera, Smoothcam, S.L.A.C.K., Wheeler и Master Occlusion Field среди того, что плохо загружается, а на GitHub есть трекер совместимости модов от сообщества, который актуальнее любой статьи в блоге, включая эту. Некоторые записи изменились в обратную сторону: Engine Fixes 7 и Skyrim Souls RE Updated с 1.8 загружаются, хотя более ранние версии не загружались.
Если ваша группа играет с модами, bEnableModCheck - это переключатель, который не даёт всему скатиться в неделю фраз «а у меня работает». При значении true сервер сравнивает loadorder.txt каждого подключающегося клиента с тем, что вы положили в папку Data сервера, и отказывает всем, у кого он не совпадает. Сгенерируйте файл в Mod Organizer 2 или Vortex на машине одного игрока, положите его в Data/, остановите сервер, включите флаг и запустите снова.
Skyrim.esmUpdate.esmDawnguard.esmHearthFires.esmDragonborn.esmSkyUI_SE.espПроверка требует точного совпадения, в этом и смысл: она превращает «у кого-то другая версия чего-то», которое приходится выяснять два часа, в отказ на входе. Рядом стоят bAllowMO2 и bAllowSKSE, они определяют, пускать ли вообще клиентов с Mod Organizer 2 или SKSE.
Каждый релиз Skyrim Together привязан к сборке Skyrim, так что обновление игры в Steam может сломать мод, пока Tilted Phoques не выпустят подходящую версию. Здесь действует та же дисциплина, что и на любом сервере с модами: не давайте ничему обновляться автоматически в день патча, записывайте версии, которые работали, и прочтите что делать, когда обновление мода всё сломало, пока это ещё не понадобилось. Общая гигиена описана в статье как держать сервер с модами в чистоте.
Сохранения, перезапуски и обновления#
Поскольку у сервера нет файла мира, «бэкапы» здесь означают другое. Защищать стоит STServer.ini, Data/loadorder.txt, если вы им пользуетесь, и собственное сохранение Skyrim каждого игрока на его компьютере. Скажите группе делать бэкапы сохранений: вы за них этого не сделаете, а повреждённое локальное сохранение - единственный способ, которым в этой игре кто-то теряет прогресс.
Со стороны сервера:
- Останавливайте перед правкой. При выключении побеждает работающая конфигурация. Это самая частая причина того, что настройка «не применяется».
- Перезапускайте по расписанию. Ежедневный или через день перезапуск - дешёвая страховка от накопления дрейфа в долгих сессиях: застрявшие анимации лошадей, NPC в странных состояниях, баг с голыми NPC. В статье расписания перезапусков, которые помогают описано, как выбрать время, которое побеспокоит меньше всего людей.
- Закрепите версию. Запускаете вы Docker или яйцо для панели, используйте явный тег, а не
latest, чтобы сервер не переехал на новую версию под ногами у группы, не обновившей клиентский мод. - Обновляйте клиент и сервер вместе. Обновляются все или не играет никто.
На RE:NODE серверы Skyrim Together получают одно выделение порта, что как раз нужно этой игре, а порт и название сервера находятся на вкладке Startup. У консоли есть история и автодополнение по табуляции для перечисленных выше слэш-команд, STServer.ini можно править в браузере или по SFTP, а слоты backup на каждом тарифе покрывают конфиг и порядок загрузки, хотя защищать мир и нечего. Если сервер упирается в лимит памяти, он останавливается и запускается заново начисто, а не уходит в своп: в большинстве игр это стоит несохранённого прогресса, а в этой - одной сессии.
Диагностика проблем#
Список серверов не загружается. Убедитесь, что у мода последняя версия, затем проверьте файрвол клиента. Список клиент получает от сервиса Tilted Phoques, так что причина не на стороне сервера.
Никто не может подключиться, хотя сервер пишет, что запустился. Порт 10578 недоступен. Проверяйте снаружи своей сети, а не с самой машины-хоста, и добавьте правило TCP, если роутер принимает только один протокол на запись.
Настройки в `STServer.ini` постоянно откатываются. Сервер работал, когда вы сохраняли файл. Остановите его, отредактируйте, запустите.
NPC и другие игроки голые. Известный баг. Отключитесь и подключитесь заново или перезапустите сервер. Иногда помогает зайти в интерьер и выйти из него, но только для одного игрока. Если повторяется, обычно виноваты несовпадающие моды у клиентов.
Враждебные NPC атакуют только одного игрока. Система выбора целей в бою потеряла нить. Обычно помогает начать бой заново: покиньте область и вернитесь, и агрессия перераспределится.
Спутники уходят посреди квеста. Так и должно быть. ИИ спутника работает на том клиенте, который им владеет, и разработчики рекомендуют распускать спутников перед подключением. Группе Драконорождённых они не нужны.
Квесты рассинхронизируются между игроками. Проверьте, что у всех одна версия мода и одна сборка Skyrim, потом изучите руководство по игре: у синхронизации квестов есть правила о том, кто должен вести и когда сдавать цели, и большинство жалоб на «сломанный квест» - это группа, которая эти правила игнорирует.
Игрок заходит и сразу вылетает. Почти всегда это мод, которого сервер не видел, или предмет из Creation Club. Включите bEnableModCheck с заведомо рабочим loadorder.txt, и проблема перестанет быть загадкой.
FAQ#
Сколько игроков вмещает сервер Skyrim Together Reborn?
Жёсткого предела в коде нет, а uMaxPlayerCount по умолчанию равен 8. Разработчики рекомендуют от 2 до 8 человек. Дальше падает не сервер, а собственные квестовая и диалоговая системы игры.
Сохраняет ли сервер мир?
Нет. Сервер хранит только конфигурацию, логи и живое состояние сессии. Каждый персонаж, квест и предмет лежит в локальном сохранении Skyrim у игрока, поэтому в официальной установке Docker нет каталога мира и поэтому сессию нельзя восстановить задним числом.
Какая версия Skyrim мне нужна?
Skyrim Special Edition на последней сборке 1.6.x. Anniversary Upgrade не нужен и лучше его отключить. Skyrim VR, Legendary Edition, оригинальный Skyrim, версии из Epic и Game Pass и все консольные издания не поддерживаются и не будут.
Можно ли использовать другие моды?
Можно, но разработчики не советуют. Ничего не синхронизируется явно; моды графики обычно ведут себя нормально, а всё, что вмешивается в рендерер или систему сохранений, обычно нет. Если вы всё же запускаете моды, включите bEnableModCheck=true и заставьте всех клиентов совпадать с loadorder.txt, который контролируете вы.
Почему мой сервер не виден в списке?
Либо bAnnounceServer равен false, либо задан sPassword: сервер с паролем скрыт из публичного списка независимо от настройки объявления. Зайти на него по адресу игроки всё равно могут.
Что на самом деле делает bPremiumMode?
Он задаёт частоту тиков: true даёт 60 Гц, false - 30 Гц. Это не платная функция и она ничего не открывает. Оставьте включённым, если только хост-машина не задыхается.




Комментарии
Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.