Сборка сервера
DevBlog · 6 октября 2026

Как мы пересобрали Steel Sky

6 октября 2026. Minecraft 1.21.1, NeoForge 21.1.252.

15 мин чтения 131 0 0
#Вайп#Моды#Стабильность#Мир
14 000²размер мира, блоков
4 ч 44 минпре-генерация Overworld
50 · 15 · 4обновлено · добавлено · убрано
~30собственных исправлений

Коротко: мы провели полный вайп. Новый мир пре-сгенерирован заранее до радиуса 7000 блоков, обновлено ядро и 50 модов, добавлено 15 новых, убрано 4, появились личные комнатные измерения, обязательная регистрация кораблей и целый набор наших собственных исправлений, которые защищают сервер от падений. Ниже: что именно изменилось, зачем, как мы это проверяли и сколько на это ушло времени.

Статус. Сервер пока закрыт белым списком: идёт проверка в игре. Часть значений может измениться до открытия сезона.


1Главное для игрока #

  • Новый мир, новый сезон. Постройки, инвентари и приваты Сезона 0 не переносились. Сохранены: аккаунты и права, киты, скины, группы и личные настройки приватов, составы команд FTB Teams.
  • Мир готов заранее. Overworld и измерение Gimpanum пре-сгенерированы до радиуса 7000 блоков (граница 14 000 × 14 000). Незер ванильный, пре-сгенерирован до ±900 блоков, граница Незера 1750 блоков в ширину.
  • Мир суровее. Рельеф Steel Sky с летающими островами и реалистичными ландшафтами, холодные районы, редкие структуры вдали от центра: одному выживать здесь трудно, держитесь вместе.
  • Новое правило: регистрация кораблей (/shipreg). Раздел 5.1.
  • Новая возможность: личная комната (Pocket Clusters), попасть в которую можно через «Личный портал». Раздел 5.2.
  • Приваты только в Overworld. В Незере, Энде, Gimpanum и комнатах приватить нельзя.
  • Нефть (Create Diesel Generators) стала конечной и реже. Раздел 5.3.
  • Бесконечные горелки всполоха из структур отключены.

2Сколько времени это заняло #

Мир такого размера с рельефом Steel Sky генерируется долго. Ниже — сколько занимала каждая тяжёлая операция.

Время тяжёлых операций
Время тяжёлых операций
ОперацияОбъёмВремяСкорость
Пре-генерация Overworld до радиуса 7000769 129 чанков, 15 ГБ4 ч 44 мин≈ 45 чанков/с
Пре-генерация Gimpanum до радиуса 7000769 129 чанков, 4,7 ГБменее 66 минут≈ 300 чанков/с
Пре-генерация Незера (ванильного)12 769 чанковнесколько минут—
Пробные миры радиусом 1500 блоков (кандидаты, пересборки)35 721 чанк каждый16, 24 и 24 мин≈ 25–36 чанков/с
Скрининг сидов нашим инструментом6000 сидов≈ 14 мин0,14 с на сид

Только на генерацию и выбор сида ушло более 6,5 часов машинного времени; несколько пробных прогонов и пересборок мира (после смены состава модов и после найденных ошибок) в таблицу не вошли.

Пре-генерация
Пре-генерация

Почему генерация такая долгая #

Мы профилировали генерацию (Java Flight Recorder, ≈20 тысяч замеров потоков). Две трети времени уходит на расчёт рельефа Steel Sky. Остальные моды на генерацию почти не влияют:

Профиль генерации
Профиль генерации
Генерация по сборкам
Генерация по сборкам

Вывод: ускорить можно подготовкой мира заранее (что мы и сделали). Выключение отдельных модов времени почти не даёт. Поэтому игроки не будут ждать генерацию нового места: во всех измерениях в границе она уже готова.


3Как мы выбирали сид #

Первые сиды оказывались «водными»: в нескольких из семи ранних сидов в центре было 91–100% океана. Тогда мы написали свой скринер: он берёт реальные настройки нашего мира (с Steel Sky и реалистичными ландшафтами), строит климат для случайного сида и считает биомы на 6000 блоков вокруг. Мы откалибровали его по сиду с известным результатом: скринер дал 91% океана и 3% рек, реальная генерация показала то же самое. Затем прогнали 6000 случайных сидов, из них 99 прошли наши условия (мало океана, мало зимы, есть реки), а лучшие кандидаты мы проверили реальной генерацией чанков и пробными мирами.

Скрининг сидов
Скрининг сидов

Мы выбрали сид с живым ландшафтом: острова, реки, много суши. Мир получился суровее среднего, и в этом его характер: одному здесь трудно, поэтому объединяйтесь.


4Что изменилось в модах #

В Сезоне 0 было 155 модов, сейчас 166 файлов (часть — библиотеки и наши служебные моды). Без изменений остались 101.

Ядро #

КомпонентБылоСталоЗачем
NeoForge21.1.22821.1.252требуют новые JEI, Starcatcher, Sophisticated Backpacks. На замерах версии 228/252/255 по скорости неотличимы; 255 мы пропустили: она обновляет Mixin, на который завязаны наши исправления
Sable (физика кораблей)2.0.32.0.6исправления хранилища кораблей и запуска физики; все наши исправления пересобраны под неё
Create Aeronautics (вместе с Simulated)1.3.01.3.2стабильность
Create / Minecraft6.0.10 / 1.21.1без измененийновее нет

Добавлены #

МодВерсияЧто это даёт
Create: Structures Arise176.49.4928 новых структур в стиле Create (наземные, подземная, океанская, летающие, 4 в Незере)
Create: Steam 'n' Rails0.3.0-beta.2 (неофициальный порт, бета)паровозы, новые тележки, сцепки, семафоры и стрелки; проверен на поездах (раздел 6)
PowerGrid0.6.2электричество с законами физики: напряжение, ток, трансформаторы. Заменяет Create Additions
Create Propulsion: Simulated1.1.5двигатели (топливные, ионные) и крылья для кораблей
Create: Dreams & Desires2.3a-BETAновые блоки и предметы в духе Create
Create Cobblestone1.5.0генераторы камня на силе вращения, снижают лаг от обычных ферм
Starcatcher3.3.4рыбалка: мини-игра, 100+ рыб, турниры
Drive-By-Wire: Typewriter1.2.0клавиатура как источник сигналов
Steel Sky Generation (вариант A)1.0.0мир с летающими островами и реалистичными ландшафтами, потолок строительства 447
Pocket Clusters (наш мод)1.2.1личные комнаты игроков (раздел 5.2)
Наши исправления и утилитысм. раздел 6chunkgen-fe███████████, no-infinite-b████████████, per-dimension█████████████, aeroclai███████; библиотека MezzConfig для JEI

Убраны #

МодПричина
Create Crafts & Additions 1.5.10заменён на PowerGrid
Live Radio Mod 1.0.2решение команды
Angel Islands 2.0.3входит в Steel Sky, вместе они не работают
Diabolical Islands 1.0.0подменял генерацию Незера на островную; Незер теперь ванильный

TFMG (Create: The Factory Must Grow Community Edition). Мы его добавили, протестировали и в итоге пока отказались от него (решение команды). Поэтому в списках его нет: нефть и перегонка теперь через Create Diesel Generators.

Обновлены (50 модов) #

Полная таблица обновлений (нажми, чтобы развернуть)
МодБылоСтало
Aeronautics Claims (AeroClaims)0.9.20.9.4
Alcohol Industry2.12.2.3
Arcadia Patch Create1.4.21.4.5
Architectury13.0.813.0.11
Balm21.0.5921.0.66
Carry On2.2.52.2.6
Climbable Ropes for Create Aeronautics2.0.12.1.4
Create Aeronautics1.3.01.3.2
Create Aeronautics: Transmission & Linkage0.2.50.2.8
Create Diesel Generators1.3.111.3.15
Create Slice & Dice4.2.44.3.4
Create Tracks+1.0.51.0.6b7
Create: Connected1.2.01.3.3
Create: Copycats+3.0.43.0.9
Create: Dragons Plus1.10.11.11.9
Create: Enchantment Industry2.3.12.5.4
Exposure1.9.181.9.19
Farmer's Delight1.3.11.3.4
GeckoLib 44.9.24.9.3
Gimpanum (наш мод)0.1.00.2.0
Jade15.10.515.10.6
Just Enough Items19.2719.57
Let's Do Vinery / Herbal Brews1.5.3 / 1.1.31.5.4 / 1.1.4
Lootr1.11.371.11.38
No Chat Reports2.9.02.9.1
Polymorph1.1.01.2.0
Puzzles Lib21.1.5121.1.62
Rhino (KubeJS)build 81build 91
Sable2.0.32.0.6
Sable Map (наш мод)0.1.150.2.0 (регистрация кораблей)
Sable Ship LOD (наш мод)2.2.02.9.2
Simple Voice Chat2.6.172.6.24
SkinRestorer2.7.02.11.0
Sophisticated Backpacks / Core / Create Integration3.25.51 / 1.4.43 / 0.1.53.26.7 / 1.5.5 / 0.2.1
Yet Another World Protector (YAWP)0.6.3-beta30.6.3-beta4
Наши исправления Sable и Simulated (assembl██████, border██████, corrupt-████████, explosi███████, frequen███████, handle-d███████, removed-████████, save-█████, invalid-████████, rope-npe-fix)под Sable 2.0.3пересобраны под Sable 2.0.6 / Simulated 1.3.2
Corpse Claims Fix (наш)1.3.01.3.2
RNR Tablecloth Dupe Fix (наш)1.0.01.1.0

Намеренно оставлены на старых версиях #

МодПочему
Open Parties and Claims 0.29.3новая версия в бете, а на OPAC держатся наши защиты приватов
NTGL 3.1.7, Create Gunsmithing 1.4.8Gunsmithing 1.4.9 требует NTGL 3.2.0 и не запускается на клиенте с 3.1.7
Xaero Minimap / World Map, KubeJS build 348, Vista, Moonlight, createfood, aeroworks, Easy NPCновые версии либо требуют новый OPAC, либо содержат крупные изменения без проверки

5Новые правила и настройки #

5.1Регистрация кораблей (/shipreg) #

Зачем. В Сезоне 0 каждые сутки появлялось около 200 мусорных кораблей (в учёте было 229 незарегистрированных кораблей при 130 клеймах, у всех имя ship): оставленные заготовки, обломки, забытые конструкции. Каждый такой корабль хранится на диске и в памяти и нагружает физику. Нужна метка «этот корабль нужен», чтобы всё остальное можно было чистить.

Как зарегистрировать. Посмотри на свой корабль или встань на него:

КомандаЧто делает
/shipreg registerрегистрирует корабль, на который смотришь или на котором стоишь
/shipreg listсписок твоих кораблей
/shipreg infoпокажет, считается ли корабль зарегистрированным и почему
/shipreg unregister [id]снимает регистрацию (слот освобождается)
  • Лимит: 5 кораблей на игрока (администратор может изменить для конкретного игрока).
  • Автоматически считаются зарегистрированными корабли с активным приватом AeroClaims.
  • Зарегистрировать можно только свой корабль или корабль без известного создателя.

Незарегистрированные корабли могут удаляться при очистке сервера; сроки очистки и оповещение перед ней объявим отдельно перед открытием сезона.

5.2Личная комната (Pocket Clusters) #

Вместо отдельного измерения на каждого игрока (дорого и рискованно для сервера) у нас 4 общих пустых измерения-кластера, а в них сетка комнат, по одной на игрока. Новая комната попадает в наименее загруженный кластер.

Предварительный крафт (может измениться). Личный портал (Personal Portal) — 8 обсидиана вокруг жемчуга Края:

О О О
О Ж О      О — обсидиан, Ж — жемчуг Края
О О О

Как пользоваться

  1. Скрафти портал и поставь его в обычном мире. Блок записывает тебя владельцем.
  2. ПКМ по порталу — ты в своей комнате. В комнате есть выход-портал, он возвращает на место входа.
  3. Комната: плоская платформа из гладкого камня 5×5 чанков (80×80 блоков). Она окружена невидимыми стенами из барьеров (потолок на 96 блоков выше пола, дно на 8 блоков ниже). Барьеры нельзя сломать, они останавливают предметы, мобов, поршни, контрапции и корабли Sable: вывести корабль из комнаты нельзя.
  4. Администратор может расширить комнату до 11×11 чанков (176×176 блоков).

Правила

  • Один поставленный портал на игрока в обычном мире (крафтить можно сколько угодно, ограничено только размещение). Портал привязан к своему владельцу и месту установки.
  • Гости могут входить в твой портал: чужой игрок, нажав на него, попадает в твою комнату как гость.
  • Если хозяин не заходил в игру 60 дней, комнату можно очистить.
  • «Ключ участка» (Plot Key) не крафтится, его выдают киты или администрация.
  • Приватить в комнатах нельзя (приваты только в Overworld).

5.3Нефть (Create Diesel Generators) стала конечной и реже #

Нефть в Diesel Generators — это не блоки, а «нефтяные чанки», количество которых считается по сиду мира. Мы изменили четыре вещи:

ПараметрБылоСталоЭффект
Бесконечные нефтяные чанкивключены (порог 10 млн мБ)выключенынефть везде конечна
Порог наличия нефти4 млн мБ5 млн мБместорождений меньше
Множитель запаса на суше1,31,4запас на месторождение
Множитель в «богатых» биомах2,0 (океаны + саванна, пустыня, равнины, бесплодные земли)1,6 только для океановв океане нефти больше, чем на суше

На нашем сиде в радиусе 1500 блоков получается примерно: на суше нефть в ≈ 20% чанков (запас до ≈ 9,4 млн мБ — около 9 400 вёдер), в океане в ≈ 34% чанков (до ≈ 10,6 млн мБ). Искать нефть можно сканером Diesel Generators. Нефть конечна: используйте её с умом.

5.4Прочие настройки #

ЧтоБылоСталоЗачем
Границы миралимит радиуса 4000Overworld и Gimpanum 14 000 в ширину (радиус 7000), Незер 1750 в ширину (наш мод per-dimension█████████████)ваниль не умеет задавать границу отдельному измерению
Приваты OPACвездетолько Overworldостальные измерения — для приключений и комнат
Бесконечные горелки всполохав структурахотключены (наш мод no-infinite-b████████████), творческий торт не работаетбаланс
Структуры Незера с такими горелкамисетка 50–100 чанковсетка 250–500 чанков: по одной на весь Незер, далеко от центра (2000–7300 блоков)в 25 раз реже
Максимальный размер корабля128 000 блоков64 000верхняя граница нагрузки физики на один корабль
Дальность синхронизации кораблей (Sable)200133меньше трафика и процессора
Сжатие регионовdeflatelz4дешевле сохранение, главный периодический спайк
Форслоад корабля за слоты привата (AeroClaims)выклвклклеймы больше не дают бесплатный форслоад в обход лимита

6Стабильность: что мы чиним и как проверяем #

В Сезоне 0 главные боли: просадки TPS из-за физики кораблей (Sable/Rapier — в наших стеках около 30–35% времени главного потока), многосекундные подвисания на автосейве, падения сервера от редких ошибок в чужих модах. Мы разбирали исходники, писали маленькие исправления (Mixin) и проверяли их на изолированном стенде. У нас около 30 собственных исправлений, вот главные:

ИсправлениеЧто чинитРезультат
sable-save██████████сохранение кораблей Sable открывало файлы с принудительным fsync на каждую записьсохранение кораблей за цикл стабильно 70–150 мс (замер 30+ раз); худший пик подвисания на автосейве 4400 → 916 мс
sable-s███████ (2.9.2)физика кораблей, которые далеко от игроков и стоят, считалась зрязаморожено в среднем ≈ 29% кораблей за сессию; настройки живые, адаптивные
sable-invalid█████████████рамки и таблички с «битой позицией» писали ошибку на каждой загрузке чанкав журнале Сезона 0: 4759 событий за 8 часов и подвисания до 13 с; в версии 1.0.1 исправлена ещё и взаимная блокировка при генерации структур
sable-handle-████████████, sable-rapier-deadlock-fix, sable-removed-su████████████████зависания и падения физики Rapier при удалении и пересборке кораблейсервер не встаёт намертво
sable-corrupt█████████████один битый файл корабля ронял сервер при каждом запускезапуск проходит, корабля просто нет
sable-explos████████████взрыв над кучей обломков вешал сервер на расчёте видимостизависания нет
sable-assemb███████████дюп предметов при сборке/разборке кораблядюп закрыт
simulated-rope-npe-fixтри падения Simulated 1.3 от верёвок и лазерной указкипадений нет
chunkgen-fe███████████редкая ошибка озёр роняла сервер при генерации мира в циклена стенде: без мода падение через 155 с, с модом 35 721 чанк без падений; финальная пре-генерация 769 129 чанков прошла без падений
chunkgen-aqui█████████████, chunkmap-null█████████████падения генерации на экстремальных координатахгенерация идёт без остановок
coreprotectne█████████████, cosmeticarmorrew████████████████синхронная запись на диск на главном потокезапись ушла в фон
gcscla██████, corpsecl███████, protectionpix████████████дыры в приватах и баги предметовзакрыты

Названия закрытых разработок намеренно скрыты наполовину.

Автосейв Sable
Автосейв Sable

(Пик «до» — из журнала расследования от 10–11 августа; «после» — повторные замеры.)

Как мы проверяем новые моды #

  • Замер в простое: каждый новый мод по отдельности и вместе. Ни один не даёт измеримой нагрузки в простое (разница в пределах шума ±0,3 мс).
Цена присутствия модов
Цена присутствия модов
  • Поезда Steam 'n' Rails: собрали 6 поездов по 4 вагона (24 вагона) на тележках Create и Steam 'n' Rails, 2 минуты гоняли туда-обратно: ни одной ошибки, тик 1,3–2,5 мс против 1,4–1,6 мс без поездов. Между Create и Steam 'n' Rails разницы в пределах шума (в среднем +145 и +148 мкс на поезд из 4 вагонов).
  • Прогрузка всех «целевых классов» наших исправлений (231 класс): 227 загрузились без ошибок, 4 отсутствуют (клиентские рендереры, на сервере не нужны).
  • Граница по измерениям: на стенде проверили команды worldborder set, плавное изменение и add: Незер сохраняет 1750, остальные следуют за Overworld.
  • Бесконечные горелки: на стенде горелка с «творческим» флагом после загрузки становится обычной, а горелка с обычным топливом остаётся рабочей.
  • Структуры: locate по структурам Незера, перегенерация Незера.

7Чему мы научились между сезонами #

Что шло не так и что мы изменили.

Что случилосьЧему научилисьЧто делаем теперь
Обновили Carry On, и наше исправление для трупов перестало совпадать: любой клик по блоку мог уронить серверМиксин проверяется лениво, старт сервера ничего не говоритПосле каждого обновления мода принудительно грузим все целевые классы всех наших исправлений на стенде
При обновлении сборки попал в «безопасные» Gunsmithing 1.4.9, который не запускался на клиенте с NTGL 3.1.7Версии, которые зависят друг от друга по методам, проверяем попарноПока остаёмся на 1.4.8, список клиента сверяем с сервером
После перезапуска граница Незера оказывалась по умолчанию (60 млн блоков)В ваниле граница одна, при загрузке она копируется не во все измеренияСвой мод: размер Незера задаётся при старте и проверяется каждые 2 секунды
Наше исправление sable-invalid█████████████ при генерации структур с рамками вызывало взаимную блокировкуИсправления обязаны оставаться вне ванильных путей генерацииВ 1.0.1 исправление отступает в структурах
Замеры «блоки стоят в простое» показывали, что всё хорошо, хотя они не отражают работу механизмовЦена присутствия блоков ≠ цена их работыДобавили сценарии с нагрузкой: поезда, структуры, границы

В Сезоне 0 мы только запустились и были без опыта: в основном тестировали, а потому неизбежно попадали под краши и ошибки. Теперь у нас есть наработанная база, которая легла в основу переработанной архитектуры сервера, новых правил и механик. Они позволят новому сезону работать стабильнее.


8Что дальше #

  • Проверка в игре белым списком (идёт сейчас).
  • Открытие сезона: снятие белого списка, объявление, приват на спавне.
  • Для клиентов: наш лаунчер сам докачает все необходимые моды, вручную ничего собирать и сверять не нужно.
  • Если возникнут проблемы с обновлением NeoForge до 21.1.252: в лаунчере откройте вкладку «Настройки» и нажмите кнопку «Переустановить майнкрафт».

Спасибо всем, кто терпеливо ждал и тестировал. Если найдёте ошибку или странное поведение, напишите: каждая такая находка делает следующий сезон устойчивее.

Особая благодарность игрокам zelkhere, beepatient, Dolban, Inter_Kot, Twixxik, kirbornu, Turbina_ за содействие проекту, разработку и тестирование фич для подготовки к вайпу. А также всем игрокам, активно участвующим в жизни сервера: голосующим, предлагающим в предложку моды и участвующим в их обсуждениях.

Оцените материал
Поделиться Telegram ВКонтакте Все посты
Комментарии
Загрузка комментариев…

Встретимся в Сезоне 1

Скачайте лаунчер, он сам подтянет моды сборки Steel Sky. Вопросы и находки — в Discord и поддержке.

Скачать лаунчер О сборке