Настройки производительности

Sponge предлагает несколько улучшений производительности и настройки, которые помогут вам без проблем запустить сервер даже при большой нагрузке.

Примечание

Хотя мы стараемся повысить производительность каждого сервера, ваш выигрыш в производительности зависит от вашей настройки. Понадобиться много тестов, чтобы настроить сервер Sponge максимально качественно!

Диапазон активации сущностей

Этот параметр изменит поведение загрузки сущностей вокруг игроков. Уменьшение значения будет загружать только близкие сущности, в то время как его повышение будет загружать сущности, которые находятся далеко от игрока. Для улучшения производительности серверов, особенно с высокими показателями сущностей и игроков, можно понизить это значение. Для отключения диапазона активации конкретной сущности установите для неё значение 0.

Совет

Можно указать диапазон активации для каждой моба. Вы можете установить значение true для параметра auto-populate и Sponge затем добавит всех доступных мобов в список диапазона активации, рекомендуется отключить его после заполнения списка. Если вы добавляете новых мобов в игру, просто повторите процедуру и они также будут добавлены в список ниже.

entity-activation-range {
    # If enabled, newly discovered entities will be added to this config with a default value.
    auto-populate=false
    # Default activation ranges used for all entities unless overridden.
    defaults {
        ambient=32
        aquatic=32
        creature=32
        misc=16
        monster=32
    }
}

Асинхронное освещение

Этот параметр перенесёт проверки освещения в отдельный поток для повышения производительности.

optimizations {
    # Runs lighting updates async.
    async-lighting {
        # If enabled, runs lighting updates async.
        enabled=true
        # The amount of threads to dedicate for async lighting updates. (Default: 2)
        num-threads=2
    }
}

Кэширование владельцев прирученных сущностей

Этот параметр будет кэшировать UUID владельцев приручаемых сущностей для сохранения постоянных запросов из наблюдателя данных.

optimizations {
    # Caches tameable entities owners to avoid constant lookups against data watchers. If mods cause issue, disable.
    cache-tameable-owners=true
}

Слияние выброшенных предметов

Этот параметр будет предварительно обрабатывать и, возможно, объединять элементы, чтобы избежать появления дополнительных объектов, которые затем объединяются после появления.

optimizations {
    # If enabled, block item drops are pre-processed to avoid
    # having to spawn extra entities that will be merged post spawning.
    # Usually, Sponge is smart enough to determine when to attempt an item pre-merge
    # and when not to, however, in certain cases, some mods rely on items not being
    # pre-merged and actually spawned, in which case, the items will flow right through
    # without being merged.
    drops-pre-merge=true
}

Panda Redstone

Альтернативный алгоритм обновления редстоуна. При изменении состояния редстоуна происходит меньшее количество обновлений блока.

optimizations {
    # If enabled, uses Panda4494's Redstone implementation which improves performance.
    # See https://bugs.mojang.com/browse/MC-11193 for more information.
    # Note: This optimization has a few issues which is explained in the bug report. We are not responsible for any issues this may cause.
    panda-redstone=false
}

Настройка интервала автоматического сохранения

Vanilla Minecraft по умолчанию сохраняет все чанки каждые 900 тиков (45 секунд). Если вы хотите увеличить или уменьшить этот интервал, измените его в файле global.conf:

world {
    # The auto-save tick interval used when saving global player data.
    # Set to 0 to disable. (Default: 900) Note: 20 ticks is equivalent to 1 second.
    auto-player-save-interval=900

    # The auto-save tick interval used to save all loaded chunks in a world.
    # Set to 0 to disable. (Default: 900) Note: 20 ticks is equivalent to 1 second.
    auto-save-interval=900
}

Сокращение этого интервала увеличивает нагрузку на процессор и память вашего сервера, но уменьшает потери данных, которые могут возникнуть при блокировке сервера или сбое питания. И наоборот, увеличение интервала автосохранения уменьшает нагрузку на оборудование, но за счет увеличения количества игрового прогресса, который может быть потерян в случае сбоя сервера.

Realtime

Этот параметр обеспечит комфортную игру при низком тикрейте, но не улучшит производительность. Ограниченный набор сущностей и время мира для обновления будет использовать реальное время вместо тиков.

modules {
    # Use real (wall) time instead of ticks as much as possible
    realtime=false
}

Наглядный пример — детёныши животных. Как правило, чтобы вырасти им нужно 20 минут. Однако, при проседаниях и тормозах на сервере, количество тиков на каждое животное уменьшится, тем самым увеличивая время их роста. Параметр realtime меняет их логику в сторону использования настоящего времени, а не тиков. Также это повлияет на ломание блоков, так что теперь не придётся «ломать один и тот же блок много раз».