Canary - мод на Майнкрафт 1.20.1/1.19.4 на производительность, предназначенный для улучшения общей производительности Minecraft без каких-либо поломок. Canary — это универсальный оптимизационный мод и неофициальный форк мода Fabric Lithium для Minecraft, который работает над улучшением ряда систем (физики игры, ИИ мобов, тикинга блоков и т. д.) без изменения какого-либо поведения. Он работает как на клиенте, так и на сервере, и может быть установлен на серверах, не требуя, чтобы клиенты также имели мод. С установленным модом вы можете увидеть в среднем 45-процентное улучшение времени тика сервера, в результате чего игра стала намного более компактной.
Даже в одиночной игре ваша игра использует «интегрированный сервер», который отслеживает мир, в котором находится ваш игрок. Благодаря оптимизации серверной части игры это может освободить процессор вашего компьютера, чтобы сосредоточиться на других задачах, что приведет к улучшению качества изображения. тарифы и отзывчивость. Для многопользовательских серверов администраторы могут ожидать значительного улучшения времени отсчета, что позволит их оборудованию поддерживать больше загруженных объектов, фрагментов и игроков.
Функции:
- Оптимизация физики: Обнаружение столкновений сущностей претерпело значительные улучшения за счет уменьшения сложности разрешения столкновений для простых прямоугольных блоков. Также используется более точный алгоритм для уменьшения количества блоков, проверяемых за каждый тик, особенно в случаях, когда объекты перемещаются очень быстро.
- Оптимизация искусственного интеллекта мобов: для некоторых задач мы используем систему, основанную на событиях, чтобы снизить нагрузку на ЦП, вызванную постоянным опросом мира на предмет изменений. «Мозги» мобов также были оптимизированы, чтобы выбирать между различными задачами ИИ намного быстрее, чем раньше. Сравнение до и после здесь.
- Оптимизация генерации мира: многие вычисления при генерации мира в ванили не нужны и не влияют на конечный результат, что дает Canary широкие возможности для оптимизации этих накладных расходов.
- Оптимизация загрузки блоков: временные структуры данных, используемые при сжатии палитры блоков, были изменены, чтобы сделать их более эффективными. Это приводит к меньшему падению TPS, пока игроки исследуют местность, и обеспечивает небольшое увеличение времени загрузки мира. Мы также пакетируем некоторые операции проверки, чтобы уменьшить количество ненужных дисковых операций ввода-вывода.
- Оптимизация фермы мобов: переполнение мобов значительно дешевле, поскольку разрешение коллизий между сущностями было оптимизировано, чтобы использовать преимущества того факта, что задействованы простые ящики. Это делает моб-фермы значительно менее вредными для тикрейта серверов.
- Оптимизация тикания блоков: меньше накладных расходов, что ускоряет такие вещи, как установка обновлений блоков после создания чанков и других хитростей Redstone. Это также уменьшает количество времени, которое требуется блоку, чтобы определить, тикает ли он по расписанию, с O(n), где n — количество тикающих блоков, до O(1), обеспечивая значительное ускорение, когда обрабатывается много блоков. отмечен.
- Оптимизация взрывов: многие оптимизации были применены как к TNT, так и к взрывам, что уменьшило связанную с ними задержку, не изменив их поведение. В частности, трассировка лучей оптимизирована, чтобы использовать тот факт, что несколько шагов пути будут происходить в одной и той же позиции блока, что позволяет нам быстро повторно использовать результаты предыдущего шага. Мы также используем более быстрый алгоритм отслеживания позиций, который позволяет избежать множества избыточных распределений.
- Оптимизация точек интереса: сложные ИИ мобов в Minecraft, в первую очередь принадлежащие сельским жителям и грабителям, часто нуждаются в поиске соответствующих достопримечательностей в мире, чтобы выбрать наиболее подходящую задачу ИИ. В vanilla для запроса всех точек в чанке требуется 16 отдельных извлечений через код с большим количеством потоков. При наличии Lithium эта задача сводится к одному простому поиску, в котором используется гораздо более быстрый (и традиционный) подход, основанный на итераторе, что дает улучшение запросов в 16–22 раза.
- Оптимизация трекера данных: внутренний диспетчер данных, используемый для отслеживания состояния и свойств некоторых объектов, был оптимизирован для использования плоских массивов и избегания дорогостоящей блокировки, что обеспечивает достойный прирост всякий раз, когда к этим атрибутам обращаются во время игрового тика.
- Оптимизация красной пыли: расчет нового уровня мощности красная пыль после обновления блока требует больших затрат. Сокращение количества проверок состояния блока без каких-либо изменений в поведении снижает задержку пыли редстоуна примерно на 35%.