Сколько миллисекунд из 50-миллисекундного бюджета тика (20 TPS) стоят корабли Sable, механизмы Create и форслоад-чанки. Коэффициенты получены из замеров сервера Runes & Rails (NeoForge 1.21.1, Create, Sable, Aeronautics); у каждого указан источник, интервал и степень уверенности.
| Статья | Кол-во | От, мс | Центр, мс | До, мс | Основа |
|---|
| Параметр | От | Центр | До | Тип | Источник и оговорки |
|---|
измерено — получено регрессией по замерам стенда. выведено — вычислено из журналов сервера арифметикой интервалов. допущение — прямого замера нет, границы заданы из конфигов модов. Данные и скрипт: CSV стенда, fit.py, model.json.
Нагрузка складывается из независимых статей, все коэффициенты неотрицательны:
ΔM = n_a·c + n_c·φ_c·c + n_f·φ_f·c + n_m·β + n_h·κ ΔM — добавка к времени тика (MSPT), мс c — стоимость активного корабля Sable φ_c, φ_f — доля стоимости для «крейсера» и «заморозки» β — стоимость блока механизма Create в простое κ — стоимость форслоад-чанка
Каждый коэффициент — интервал [lo; hi] со средним mid. Раз все слагаемые монотонны, интервал итога — сумма интервалов: lo = Σ n·lo, hi = Σ n·hi; mid — геометрическое среднее границ (оно же — оценка, если нет данных о форме распределения). Это огибающая, а не статистический доверительный интервал: она заведомо шире, чем при независимых ошибках, зато не обещает лишнего.
Бюджет и запас: тик должен укладываться в B = 50 мс. В дневные часы (14–25 игроков) средний тик на проде 30–38 мс, поэтому запас H = B − M_день ∈ [12; 20] мс; в пик (50+ игроков, TPS ≈ 18) запаса нет. Шкала выше — доля от H = 12 мс.
Как получены коэффициенты
β = Σ(n·Δ)/Σ(n²), остаточное СКО s ≈ 0,41 мс, ДИ по t-распределению (df = 6). Ограничение: блоки не подключены к сетям; при свободном члене наклон статистически неотличим от нуля, поэтому β — верхняя граница присутствия, а не цена работы.c = s · M / n_акт, где s — доля Rapier3D.step в выборках главного потока (30–35 %), M — средний тик, n_акт = total − frozen из отчётов sable-ship-lod. Два независимых снимка дали интервалы [0,088; 0,201] и [0,172; 0,312]; взято объединение. Это данные Сезона 0: размеры кораблей неизвестны.κ = (M_стенд − M_пуст − 1431·β − 22·c) / 3600 при 0 игроков и 3600 форслоад-чанках. Границы берутся по худшему сочетанию погрешностей.Самопроверки модели (выполняются в fit.py):
Чего калькулятор не знает.
Как уточнить модель (следующие замеры на стенде, каждый — A/B с чередованием ABBA, как в bench_bots.sh):
c(B) = c₀ + c₁·B^γ, показатель γ — из регрессии в логарифмах.