Icarus — продвинутая настройка через WorldSettings
Базового запуска IcarusServer.exe хватает, чтобы поднять сервер и зайти в лобби, но дальше начинаются вопросы, на которые дефолтный конфиг не отвечает: почему после рестарта сервер каждый раз спрашивает, какую миссию грузить, можно ли доверить игрокам запуск собственных прогонов без прав админа, и куда делся прогресс персонажа после провала экспедиции. У Icarus нет единого WorldSettings.ini в духе ARK — вместо этого связка из ServerSettings.ini и параметров CreateProspect, и разобраться в них стоит один раз, чтобы не переизобретать конфиг при каждом новом сезоне сервера.
Содержание
- Как устроены "мировые настройки" в Icarus: Prospect против Open World
- ServerSettings.ini: полный разбор параметров
- Параметры командной строки запуска
- CreateProspect и LoadProspect: профили миссий и сложность
- Персистентность прогресса между сессиями
- Миграция сейвов и управление несколькими prospect-файлами
- Особенности серверной модели: Windows-бинарник, Wine и лимиты
Как устроены "мировые настройки" в Icarus: Prospect против Open World
Первое, что стоит понять до правки конфигов: у Icarus нет одного персистентного мира, как в ARK или Rust. Сервер работает через Prospect — отдельные сессии-вылазки со своим таймером, набором целей и картой, которые запускаются, проходятся и завершаются извлечением (или провалом). Есть и постоянная карта Styx (OpenWorld_Styx) — открытый мир без жёсткого таймера, ближе по духу к привычному "постоянному серверу", но технически тоже отдельный prospect-файл.
Поэтому то, что в других играх называется world settings — сложность, погода, доступность ресурсов, — в Icarus задаётся не одним статичным файлом, а комбинацией:
- ServerSettings.ini — постоянные параметры самого сервера (имя, пароли, лимиты, поведение при простое);
- CreateProspect — параметры конкретной миссии/мира, которые фиксируются в момент её создания и намертво привязываются к save-файлу этого prospect.
Это ключевая особенность серверной модели игры: сменить сложность или тип мира на лету нельзя — только создать новый prospect с нужными параметрами. Держите это в голове, читая разделы ниже.
ServerSettings.ini: полный разбор параметров
Файл лежит по пути Icarus\Saved\Config\WindowsServer\ServerSettings.ini (при кастомной директории через -UserDir путь считается относительно неё, секция всё равно WindowsServer, даже на Linux-хостах через Wine). Секция одна — [/Script/Icarus.DedicatedServerSettings].
| Параметр | Назначение |
|---|---|
SessionName | Имя сервера в браузере. На многих сборках не применяется — надёжнее флаг -SteamServerName |
JoinPassword | Пароль на вход, пусто — сервер открыт для всех |
MaxPlayers | Лимит игроков, 1-8 — официальный потолок кооператива, выше не поставить |
AdminPassword | Пароль RCON/админ-доступа. Пусто — вход без пароля, для публичного сервера не годится |
ShutdownIfNotJoinedFor | Секунд ожидания первого игрока, после чего сервер завершится сам (по умолчанию 300) |
ShutdownIfEmptyFor | Секунд простоя без игроков перед автовыключением (по умолчанию 300) |
AllowNonAdminsToLaunchProspects | Разрешает игрокам без прав админа запускать prospect-миссии (по умолчанию True) |
AllowNonAdminsToDeleteProspects | Разрешает игрокам без прав админа удалять prospect-сейвы (по умолчанию False) |
LoadProspect | Имя prospect-файла, который загрузится при старте |
CreateProspect | Строка создания нового prospect при старте — разбор ниже |
ResumeProspect | Автопродолжение последней активной сессии при рестарте (по умолчанию True) |
LastProspectName | Имя последнего активного prospect, сервер обновляет его сам |
Для управления доступом администраторов на серверах с несколькими модераторами эти два флага (AllowNonAdminsTo...) стоит держать в связке с ролями — подробнее в статье про права доступа и роли администраторов.
Поднять сервер Icarus за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверПараметры командной строки запуска
Часть настроек задаётся не в ini, а флагами при старте бинарника — это удобно вынести в ExecStart systemd-юнита или batch/wine-скрипт запуска.
| Флаг | Назначение |
|---|---|
-SteamServerName= | Имя сервера в списке (лимит 64 символа), надёжнее SessionName из ini |
-PORT= | Игровой порт (по умолчанию 17777) |
-QueryPort= | Порт Steam-запросов для списка серверов |
-MULTIHOME= | IP для машин с несколькими адресами |
-UserDir= | Кастомная директория для Saved-папки |
-saveddirsuffix= | Суффикс к Saved — для нескольких инстансов на одной машине |
-LOG= / -ABSLOG= | Относительный/абсолютный путь к лог-файлу |
-ResumeProspect | Аналог ResumeProspect=True из ini, но как флаг запуска |
-LoadProspect=[Имя] | Загрузить конкретный prospect по имени |
-CreateProspect="[Тип] [Сложность] [Хардкор] [ИмяСейва]" | Создать новый prospect при старте |
Пример строки запуска через Wine на Linux-хосте (почему именно Wine — см. раздел про особенности серверной модели ниже):
wine IcarusServer.exe -SteamServerName="MAATRIX Icarus" \
-PORT=17777 -QueryPort=27015 \
-log -ABSLOG="/home/icarus/server/logs/server.log" \
-ResumeProspect
Если сервер уже под systemd, вывод удобнее не дублировать через -ABSLOG, а читать через journalctl -u icarus -f — общие приёмы диагностики Icarus разобраны в статье про краш при загрузке мира.
CreateProspect и LoadProspect: профили миссий и сложность
Формат строки создания prospect фиксированный, из четырёх позиций через пробел:
CreateProspect=[Тип миссии] [Сложность 1-4] [Хардкор true/false] [Имя сейва]
Пример из строки запуска:
CreateProspect=Tier1_Forest_Recon_0 3 false TestProspect01
Разбор параметров:
- Тип миссии — внутренний идентификатор prospect. Для постоянного открытого мира это
OpenWorld_Styx. Для аутпостов (сюжетных баз с расширенным таймером) —Outpost002_Forest(ARCWOOD),Outpost003_Arctic(ICEHOLM),Outpost005_Forest(HOLDFAST),Outpost006_Olympus. Обычные миссии называются по схемеTierN_Биом_Тип_Индекс, напримерTier1_Forest_Recon_0— разведка первого тира в лесном биоме. Список идентификаторов обновляется с патчами, поэтому перед запуском лучше свериться с актуальным списком prospect-имён в репозитории RocketWerkz: непроверенный идентификатор сервер просто не найдёт. - Сложность — число от 1 до 4, где 1 примерно соответствует лёгкому режиму, 4 — максимально жёсткому. Точный баланс между тирами меняется патчами, так что это относительная шкала, а не фиксированные цифры урона или спавна.
- Хардкор —
trueвключает перманентную смерть персонажа на этом prospect (при гибели теряется весь локальный прогресс сессии),false— обычный режим с респауном. - Имя сейва — как файл будет называться на диске; используйте понятные имена, если держите несколько параллельных миров (например, разные сезоны сообщества).
Тот же синтаксис работает и как чат-команда прямо в игре (для админов), без правки конфига и перезапуска сервера: LoadProspect [Имя], CreateProspect [Тип] [Сложность] [Хардкор] [ИмяСейва], ResumeProspect. В лобби префикс слэша не нужен, во время активной сессии — через /.
Важная оговорка: параметры сложности и хардкора фиксируются в момент создания prospect и намертво зашиваются в его save-файл. Перезапуск сервера с другими значениями CreateProspect не поменяет уже существующий мир — придётся создавать новый с другим именем сейва.
Персистентность прогресса между сессиями
Здесь Icarus устроен иначе, чем большинство survival-серверов, и это стоит явно объяснить игрокам заранее:
- Прогресс персонажа (уровень, таланты, разблокированные технологии) привязан к профилю игрока в целом, а не к конкретному prospect. Он копится через успешные экспедиции и переносится между разными мирами и миссиями — провал или гибель на одном prospect не откатывает общий прогресс персонажа, если это не hardcore-сессия с локальной permadeath.
- Состояние конкретного мира (постройки, инвентарь на базе, прогресс задач) хранится только в файле этого prospect и не переносится на другие. Экспедиция на аутпост не появится в открытом мире Styx и наоборот — это разные сохранения.
ResumeProspect=True+LastProspectName— при рестарте (по питанию, обновлению или краху) сервер сам поднимет последнюю активную сессию, а не откатится в лобби выбора миссии. Для сервера с постоянным составом это почти всегда правильный дефолт — иначе после каждого рестарта нужно вручную поднимать прошлый мир.- Чтобы временно переключиться на другую миссию, не теряя основной прогресс, используйте
LoadProspectс именем нужного сейва, а не пересоздавайтеCreateProspectповерх существующего имени — так рискуете перезаписать рабочий мир.
Save-файлы уязвимы к тем же рискам, что и в любой другой игре — настройте регулярное копирование папки Saved целиком, не полагаясь только на встроенную персистентность. Как организовать копирование по расписанию — в статье про автобэкапы игрового сервера, общие принципы работы с сейвами — в статье про работу с сейв-файлами игрового сервера.
Миграция сейвов и управление несколькими prospect-файлами
Prospect-сейвы — отдельные JSON-файлы. С ними можно работать как с обычными файлами на диске, с одной строгой оговоркой: не переименовывайте файл и не редактируйте содержимое вручную — это необратимо ломает сохранение.
На дедике они лежат в:
Icarus\Saved\PlayerData\DedicatedServer\Prospects\<ИмяProspect>.json
Перенести одиночный (singleplayer) прогресс на выделенный сервер можно, скопировав файл из локального клиента:
%UserProfile%\AppData\Local\Icarus\Saved\PlayerData\<SteamID>\Prospects\<Имя>.json
прямо в серверную папку PlayerData\DedicatedServer\Prospects\, создав недостающие подпапки вручную, если сервер их ещё не создавал. Перед переносом обязательно сделайте резервную копию исходника — если что-то пойдёт не так при копировании, откатиться будет не на что.
Если на сервере одновременно живёт несколько prospect-сейвов (открытый мир для основной команды плюс пара аутпост-миссий для разных групп), заведите понятную схему имён и не давайте AllowNonAdminsToDeleteProspects=True рядовым игрокам — единичная случайность сотрёт часовую работу группы. Разводить несколько миров на одной машине физически удобно через -saveddirsuffix для отдельных инстансов, аналогично другим играм — см. статью про несколько игровых серверов на одной машине.
Особенности серверной модели: Windows-бинарник, Wine и лимиты
Несколько нюансов, которые стоит знать заранее, а не выяснять на живом сообществе:
- IcarusServer.exe официально существует только под Windows. Нативной Linux-сборки дедика у RocketWerkz нет, поэтому на Linux-хостинге сервер почти всегда запускают через Wine (иногда Proton headless). Это работает стабильно на актуальных сборках, но добавляет слой абстракции: обновления через SteamCMD стоит перепроверять на конкретной версии Wine, если после патча игры сервер отказывается стартовать.
- Лимит в 8 игроков — жёсткий потолок кооператива, не просто дефолт в конфиге. Нужно больше — разводите сообщество по нескольким параллельным prospect-мирам, а не ищите скрытый параметр.
- RCON/админ-доступ работает через
AdminPasswordиз ServerSettings.ini — общие принципы подключения и базовые команды разобраны в статье про RCON-подключение и основные команды. - Порты — пробросьте и игровой
-PORT, и-QueryPort, иначе игроки смогут зайти по прямому IP, но не увидят сервер в браузере.
Поднять сервер Icarus за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверЧастые вопросы
Можно ли поменять сложность существующего мира без пересоздания?
Нет, она фиксируется в момент CreateProspect и хранится в save-файле. Только новый prospect с другим именем сейва.
Что будет с прогрессом персонажа, если prospect провалится (не хардкор)?
Локальный прогресс сессии теряется, но уровень, таланты и разблокировки персонажа сохраняются и переносятся в следующие вылазки.
ResumeProspect и LoadProspect можно использовать одновременно?
Лучше держать в конфиге только нужный вариант: ResumeProspect=True сам поднимает последний prospect, LoadProspect явно указывает файл — при расхождении не всегда очевидно, что победит.
SessionName в ServerSettings.ini не подхватывается — это баг?
На части сборок да. Обходной путь — задавать имя флагом -SteamServerName при запуске, он применяется надёжнее.
Обязательно ли гонять сервер через Wine на Linux?
Альтернативы нет — официальной Linux-сборки дедика не существует.