Увеличение FPS: различия между версиями

Материал из Dwarf Fortress Wiki
Перейти к навигацииПерейти к поиску
 
(не показано 6 промежуточных версий 2 участников)
Строка 1: Строка 1:
[[File:Frames_Per_Second_Meter.png|300px|thumb|bottom|Счетчик фреймов в игре.]]


Dwarf Fortress весьма требовательна к ресурсам компьютера. Основная нагрузка приходится на процессор, так что вам потребуется достаточно мощная машина для комфортной игры ([[Системные требования|рекомендации]]). Цель данной страницы помочь вам уменьшить "тормоза" игры, которые "достают" большинство игроков.
[[Frames per second|Фреймрейт]] (частота смены кадров) используется в Dwarf Fortress для указания как быстро игра обсчитывается. Показатель называется frames per second или коротко FPS. Для просмотра FPS в Dwarf Fortress достаточно изменить опцию <code>[FPS:NO]</code> на <code>[FPS:YES]</code> в [[init.txt]]. FPS будет отображаться внизу экрана. Первое число указывает пересчёта событий в мире, второй скорость отрисовки.


[[Frames per second|Фреймрейт]] (частота смены кадров) используется в Dwarf Fortress для указания как быстро игра обсчитывается. Показатель называется frames per second или коротко FPS. Для просмотра FPS в Dwarf Fortress достаточно изменить опцию [FPS:NO] на [FPS:YES] в [[init.txt]]. Первое число указывает скорость отрисовки, второй — пересчёта событий в мире.
==Увеличение частоты кадров==
Главное правило в том, что чем больше вещей должна отслеживать игра, тем медленнее она будет работать. Таким образом, уменьшение количества активных вещей позволяет вашей игре работать быстрее. '''Большую часть''' времени вычислений в Dwarf Fortress занимают юниты, делающие свои дела, более 60% в больших крепостях, из чего менее 10% связано с поиском пути, так что '''лучший способ предотвратить потерю FPS — это уменьшить количество юнитов в целом'''. В приведенном ниже списке способы улучшения FPS разделены на две категории: вещи, которые не меняют игру каким-либо фундаментальным образом, и вещи, которые меняют.


==Ускорение игры==
===Без изменений игры===
Чем больше событий в мире приходится обсчитывать игре, тем медленнее обновляется мир. Ограничение количества событий ускоряет игру. Типичные причины замедления и способы борьбы:
Особые способы строительства и планирования крепости, а также изменения настроек игры — изменения в основном в файлах [[init.txt]] и [[D_init.txt]], которые на самом деле не меняют процесс игры.


* Каждый дварф требует времени для обработки его действий.
====Генерация мира====
** Ограничьте популяцию дварфов.
* Большие миры требуют больше фоновых вычислений для обновления. Чем крупнее цивилизации, тем больше событий происходит в мире и тем они сложнее. Создание слишком большого цивилизованного населения может привести к постоянному и неизбежному падению FPS. Однако, учитывая, насколько игра богата контентом, даже маленький мир будет довольно интересным, но будет иметь гораздо более высокую частоту кадров, хотя некоторые вещи вы можете точечно настроить через [[advanced world generation|расширенные параметры генерации]].
* Для более длинных историй требуется больше памяти и места для хранения [[historical figure|исторических фигур]] и событий.
* Уменьшение количества цивилизаций, мест, чудовищ и установка предела численности населения мира может снизить ресурсы, затрачиваемые на обновление остального мира.
* [[Caverns|Пещеры]] могут сильно пожирать FPS из-за большого количества существ, которые появляются там. Иногда даже [[Trading#Караваны|торговые караваны]] будут пытаться пройти через подземелья крепости.
** Настройка [[Advanced_world_generation#Cavern_Layer_Number|количества слоёв пещер]] в параметрах [[advanced world generation|расширенной генерации мира]] может уменьшить размеры [[cavern|пещер]] (по умолчанию их 3 слоя). Однако это ограничит доступ к подземным растениям и существам, а также уменьшит количество порождаемых [[forgotten beast|забытых тварей]].
** Точно так же можно настроить [[Advanced_world_generation#Layer_Openness_Min.2FMax|открытость пространства в слоях]] и [[Advanced_world_generation#Layer_Passage_Density_Min.2FMax|плотность проходов в них]] в [[Advanced world generation]], чтобы пещеры имели меньше тайлов для путей. В общем, алгоритм поиска пути эвристически рассматривает расстояния по одной клетке при движении в 3D ("расстояние Чебышева"), что означает, что он может иметь тенденцию идти вправо по X/Y, а затем начать слепое заполнение всей Z-оси оттуда, пока не сможет найти путь наверх, после чего весь процесс повторяется, поэтому лучше иметь меньше тайлов пещер, а открытых мест следует избегать.{{cite forum|104643/3096896}}
** Генерация мира с использованием шаблона "REGION" (вместо шаблона "ISLAND", который используется в "Create New World!") может значительно уменьшить высоту пещер, а также разместить их ближе друг к другу, что приведет к меньшему количеству Z-уровней. Как правило, это также требует высадки в районе, который не очень близок к океану или горной вершине.
* Таяние [[Snow|снега]] и [[ice|льда]] может вызвать лаги.{{verify}} Вы можете создать мир без полюсов с несколько повышенной температурой или просто отправиться туда, где вода не замерзнет.


* Каждое животное требует времени для обработки его действий.
====Организация крепости====
** Приручённые животные могут сидеть в [[cage|клетках]], это исключает праздное шатание по крепости. Или их можно разделать на мясо.
* Большие места для [[embark|высадки]] резко увеличивают количество местности, которую игре необходимо отслеживать и строить пути.
** Уменьшение размера стартового участка со стандартных 4×4 квадратов до 3×3 или даже 2×2 окажет огромное влияние на FPS.
** Имейте в виду, что площадка 2×2 составляет всего 25% от размера посадки 4×4. Тем не менее, в 3D это все еще достаточно большая область для многих крепостей при обычной игре.


* Враги требуют ресурсов процессора.
* Расчеты прямой видимости, даже после оптимизации в версии [[50.05]], являются самой медленной частью игры с большим отрывом. Они O(n^2) по своей природе, поэтому единственный способ по-настоящему ускорить их — уменьшить количество юнитов. Тем не менее, есть еще способы уменьшить проблему.
** Выключите вторжения в [[D_init.txt]].
** Держите своих дварфов далеко друг от друга — юниты, находящиеся на расстоянии более 26 клеток от данного юнита в '''любом направлении''', не учитываются при расчете прямой видимости.
** Избегайте наличия одной единственной зоны для встреч, в которой находятся сотни дварфов.
** Старайтесь разбивать зону прямой видимости в разных местах, чтобы ваши дварфы не спрашивали "друг или враг?" слишком часто.


* Загрязнения, например [[blood|кровь]], попавшая на стены пол или дварфа растаскивается по замку. Существует баг({{bug|296}}), приводящий к распространению загрязнений и баг ({{bug|3270}}), который препятствует самостоятельной очистке замка от загрязнения.
* Чем меньше предметов внутри крепости, тем меньше предметов проверяется на температуру, что является единственной серьезной причиной проблем с производительностью.
** В D_init.txt есть опция, ограничивающая распространение загрязнений в [[Fortress_mode|Fortress Mode]], [[Technical_tricks#More_Game_Options|WALKING_SPREADS_SPATTER_DWF]], она выключена по-умолчанию.
** Очевидное решение — не создавать так много предметов . Не стройте такие большие [[Farming|грядки]] и не переусердствуйте с [[Workshop|мастерскими]], постоянно стоящими в очереди или настроенными на вечный повтор.
** Если загрязнение на поверхности, то [[traffic|запретите передвигаться]] в зоне загрязнения и подождите, пока дождь смоет его.
** Используйте [[Dwarven atom smasher|дварфский атомный дезинтегратор]], чтобы удалять предметы, или пожертвуйте их [[Trading|проходящим караванам]].
** Создайте, наконец, подходящие санитарные условия в замке. Убедитесь, что дварфам разрешена [[cleaning|уборка]], подробнее о чистоте дварфов см. в статье [[cleaning]].
** [[Exploit#Квантовый склад|Квантовые склады]] помогают ускорить игру только если вы постоянно смотрите на смотрите свои склады.
** Не желая тратить силы на чистоту крепости, некоторые игроки [[Cheating|читят]], используя [[DFHack#clean|clean -all]] из пакета [[DFHack|DFhack]].
** Количество предметов в любом конкретном стаке не так сильно влияет на частоту кадров, как количество стаков в целом, из-за результирующего влияния на [[hauling|перетаскивание]], [[stockpiles|склады]], [[pathfinding|поиск пути]] и другие задачи, интенсивно использующие процессор. Исследование, проведенное в тредах [http://www.bay12forums.com/smf/index.php?topic=92241.0 Undump Engine] и [http://www.bay12forums.com/smf/index.php?topic=109319.0 Micha] демонстрируют очень эффективные решения для FPS, избегая при этом традиционных складов и использования [[barrel|бочек]] и [[bin|ящиков]].
** При этом [http://www.bay12forums.com/smf/index.php?topic=104643.msg3094753#msg3094753 общее количество предметов имеет значение]. Количество имеет гораздо большее значение для объектов, которые могут иметь качество или украшения, чем для обычных камней, поскольку они занимают больше памяти. Проверка температуры, увеличение [[wear|износа]] и прочее вызывают лаги, хотя для внимания требует только при достижении больших количеств шлама (10 000+).
* Изменения в картах путей могут привести к кратковременным лагам, так как карта будет нуждаться в обновлении.
** Это наиболее заметно с дверями, разводными мостами или другими объектами, связанными с [[repeater|повторителем]]. Атомный дезинтегратор, подключенный к повторителю, даже отключенный от остальной части крепости, может вызвать лаги каждый раз, когда он поднимается или опускается. Если вы используете дезинтегратор для уничтожения мусора, настройте автоматику включать его очень редко или управляйте им вручную с помощью [[lever|рычага]].
** Огораживайте стеной области с изменяющимся уровнем воды[https://dwarffortress.mantishub.io/view.php?id=5986#c22870].


* G_FPS из файла [[init.txt]] определяет как часто Dwarf Fortress перерисовывает экран. Эта же настройка определяет как часто опрашивается клавиатура и мышь.
* Правильное использование обозначений [[traffic|трафика]] должно помогать.
** Уменьшение G_FPS может ускорять игру. Начальная настройка 50, но часто её уменьшают до 20, что не снижает комфорта.
* Количество активных [[plant gathering|собирателей растений]] может сильно влиять на частоту кадров, особенно если в меню работы включена опция "Everyone does this" в сочетании с очень высокой численностью населения. Лучше всего использовать опцию "Only selected do this" и выбрать для этой задачи только часть жителей или полностью отключить ее с помощью опции "Nobody does this", если сбор растений не является приоритетом в данный момент.
** Слишком малое значение G_FPS снижает отзывчивость игры и делает слишком дёрганым перемещение объектов.
** Настройка коридоров на высокий трафик, а тупиковых мастерских рядом с ними на низкий приведёт к тому, что алгоритм поиска пути будет быстрее искать вдоль коридора и тратить меньше времени на поиск в комнатах.
* Хотя поиск пути не является серьезной причиной утечки FPS, уменьшение области, которую должен искать алгоритм, позволяет игре работать немного быстрее.
** Очевидное решение — не выкапывать слишком много земли.
** Тщательное планирование крепости может сократить время поиска пути при коротких перемещениях.
** Распространение вашей крепости по горизонтали, как правило, означает что на каждую мастерскую коридор становится на три или четыре клетки длиннее. Размещение мастерских по вертикали на нескольких этажах, недалеко от складов позволяет увеличивать длину пути до самой дальней точки всего на одну клетку, если размещать мастерские вокруг лестницы.
** Гигантские склады — это огромные области, требующие вычислений поиска пути. Квантовые склады могут убрать необходимость выкапывать большие области. Тем не менее, каждый производимый вами предмет [http://www.bay12forums.com/smf/index.php?topic=104643.msg3094753#msg3094753 занимает память и учитывается в таких процессах, как распределение температуры]. Избегайте производства большего количества товаров, чем вы можете использовать, только потому, что вы хотите "занять дварфов делом". Если вам перестаёт хватать места для хранения ваших предметов, вместо того, чтобы копать новый склад, просто прекратите производство.
** Если функции крепости разбросаны далеко друг от друга, рассмотрите возможность создания несколько столовых. Легендарную столовую не настолько сложно создать, и есть не так много причин, которые стоят того, чтобы кочегару нужно было обязательно преодолевать 100 этажей до поверхности и обратно ради выпивки.
** Переполненные коридоры заставляют дварфов обходить друг друга, что приводит к перестройке маршрутов. Найдите способы распределить трафик, чтобы избежать столкновений. Стройте коридоры шире 1 клетки к областям, которые дварфы часто посещают, и может быть даже пути, по которым дварфы смогут срезать дорогу.
** Было обнаружено, что дварфы больше предпочитают двигаться по [[ramp|рампам]] чем лестницам. Это можно использовать в дополнение к приоритетам маршрутов.
** Может помочь закрытие неиспользуемых областей поднятыми [[bridge|мостами]] и запертыми [[door|дверями]].
** Открытые "карьеры" — это ловушки для алгоритма поиска пути. Отгородите их от крепости стенами, когда закончите работать над ними.
** Пещеры, вероятно, являются худшей территорией для алгоритма поиска пути среди природных областей. Так что держите любую часть, которая вам не нужна в данный момент, закрытой.
** Не назначайте сразу большие области для сглаживания.{{bugl|5986}}
** Запертые в закрытой области дварфы, особенно впавшие в [[mood|странное настроение]], иногда вызывают значительные лаги. '''Это почти единственный случай, когда поиск пути действительно вызывает проблемы с FPS'''. Существует баг, из-за которого запертый дварф в странном настроении сильно тормозит игру.{{bug|8698}} Освободите их или от бремени, или от жизни, чтобы жить своей собственной.
** [[Location|Локации]] без достаточной площади требует частой перестройки путей. Убедитесь, что ваши локации достаточно велики для населения.
* Каждое животное также проверяется на наличие прямой видимости.
** Прирученных животных можно поместить в [[cage|клетку]], и в этом случае они полностью освобождаются от всех подобных проверок. Или вы можете [[butcher|забить]].
* Многотайловые [[Tree|деревья]] являются известным источником лагов.
** Выбор места для высадки, при котором деревья растут только на одной или двух клетках начальной зоны, может повысить производительность.
* [[Contaminant|Загрязнетели]] могут накапливаться на земле, на дварфах и существах. Особенно в старых крепостях это может повлиять на FPS. Существует баг{{bug|296}}, который заставляет загрязняющие вещества постоянно множиться, и другой{{bug|3270}}, которая предотвращает исчезновение [[Blood|крови]].
** Если загрязнители снаружи, изолируйте область и дайте [[Weather|дождю]] медленно смыть ее. Домашних животных можно оставить на улице с помощью [[pasture|пастбище]] или [[Activity_zone#Ямы/Пруды|ямы]]. Точно так же установка [[traffic|трафика]] на "restricted" и/или назначение [[Activity zone|зон активности]] может сделать ту же работу для дварфов.
** Добавьте средства мытья дворфов и их питомцев в крепости. Только [[Soap|мыло]] и [[Well|колодец]] позволяют дварфам мыться самостоятельно. Убедитесь, что у вас также включена работа по [[cleaning|уборке]]. Подробную информацию об этих и других средствах можно найти на странице [[Cleaning]].
* Обнаружение [[HFS]] резко снизит FPS ПОСЛЕ того, как вы закроете проход{{bug|1340}}. Либо избегайте этого, либо используйте обходной путь, опубликованный в отчете о баге.
* Масштабное строительство, особенно [[Megaproject|мегапроекты]], по мере роста крепости будет вызывать все более серьезный лаг при выборе указаний. Запретите [[Material|материалы]] (особенно [[Stone|камни]], [[Block|блоки]] и [[Bar|слитки]]), сколько возможно, чтобы сократить время, необходимое игре для расчета списка доступных материалов при строительстве [[Construction|конструкций]].
* Когда отряд возвращается из [[raid|рейда]]/[[mission|миссии]], может внезапно появиться огромный лаг (до 5 кадров в секунду). Вы можете распустить отряд, и ситуация должна прийти в норму.
* То же самое может произойти при отправке отряда на задание. Если члены отряда каким-то образом заперты внутри крепости, они будут постоянно пытаться найти путь к миссии, и игра может почти зависнуть.
* [[Engraving|Гравюры]] являются проблемой в ASCII из-за медленного поиска графики гравировки, но в графическом режиме они не особенно влияют.
* Минимизируйте количество живых [[Plant|растений]]. Заодно насолите [[Elf|эльфам]].
* Избегайте отображения на экране сложных областей. Отображение фрагмента карты требует разного объема работы в зависимости от того, что это такое:
** Нераскрытые тайлы почти не занимают времени — игре нужно только определить, какой "случайный символ" в этой темноте отображать.
** Деревьям необходимо выполнить линейный поиск по списку столбцов (один список на каждый блок тайла 48x48 области игровой каты), чтобы определить, какие побеги присутствуют в тайле дерева, и поиска про само растение, какой отображать символ/цвет. '''Это самая медленная часть этапа рендеринга'''.
** Тайлы каменного слоя должны взять номер биома и номер слоя и найти материал слоя, а затем просмотреть [[raw-файл]] неорганического объекта, чтобы получить символ/цвет.
** Тайлы лавового камня должны взять номер биома и найти информацию о регионе, чтобы определить, какой лавовый камень использовать, а затем продолжить, как указано выше.
** Особенности рельефа на каменных тайлах (например, [[adamantine|адамантин]]) необходимо найти на карте особенностей рельефа для тайла, чтобы выяснить, из чего он сделан, а затем продолжить, как указано выше.
** Тайлы жил необходимо найти линейным поиском в списке, специфичном для блока карты 16x16x1, чтобы увидеть, какой жиле они соответствуют, и определить материал, а затем продолжить, как указано выше.
** Тайлы травы необходимо найти линейным поиском в том же списке, чтобы выяснить, какой тип травы присутствует, затем просмотреть raw-файл растения, чтобы получить символ/цвет (а также учесть анимацию).
** [[Shrub|Кустарники]] и саженцы необходимо искать в отдельном списке (не ясно, это глобальный список или список для конкретного столбца), чтобы найти рассматриваемое растение и определить его символ/цвет.
** Для сконструированных тайлов необходимо выполнить бинарный поиск по координатам X/Y/Z в отдельном списке, чтобы определить, какой материал они используют, а затем найти символ/цвет для этого материала.
** Вдобавок ко всему, выполняется ''линейный'' поиск в еще одном списке, чтобы определить, присутствует ли [[engraving|гравировка]] (и, если да, какой тайл отображать).
** Отображается другое содержимое тайлов (юниты, здания, предметы, [[vermin|вредители]] и т. д.)
** После того, как всё это сделано, выполняется еще один линейный поиск (хотя в том же списке, что и с жилами и с травой), чтобы увидеть, есть ли на тайле загрязнители (например, [[mud|ил]], [[blood|кровь]], [[vomit|рвота]] или листья) и соответствующим образом настроить символ/цвет.


* PRINT_MODE ещё одна настройка init.txt. Указывает способ отрисовки экрана.
====Настройки игры====
** Более продвинутые режимы позволяют задействовать дополнительные возможности ОС и видеокарты. STANDARD — хороший выбор для начала.
* G_FPS — это параметр в файле [[init.txt]]. Он определяет, как часто Dwarf Fortress перерисовывает экран. Он также определяет, как часто игра проверяет ввод с клавиатуры или мыши.
** Базовые режимы более стабильны на некоторых видеокартах.
** Снижение G_FPS '''не''' ускорит остальную часть игры, так как все это выполняется в отдельном потоке.


* [[Weather]] — не самая важная, но ресурсозатратная игровая деталь.
===С изменениями игры===
** Если отключить погоду, то не будет тратиться усилия на рисование снега и дождя. [[murky pool|Пруды на поверхности]] перестанут заполняться, но это не так важно при наличии иных источников воды.
Все изменения в этом разделе имеют какое-то влияние на саму игру, используйте на свое усмотрение.


* [[Temperature]]. Расчёт воздействия температуры.  
====Настройки игры====
** отключение приведёт к тому, что [[magma|магма]] перестанет плавить всё вокруг себя, включая, правда, и врагов.
* Вычисления [[Temperature|температуры]] ''сильно'' нагружают процессор.
** Их отключение ускорит игру и может быть включено обратно в любое время.
** Без расчета температуры [[obsidian farming|обсидиановая ферма]] становится непригодной к использованию; так как тайлы никогда не остывают, дварфы будут отказываться наступать на обсидиановый пол, на котором лежит выкопанный обсидиан, препятствуя возможности переноски.{{bug|6033}} Время от времени вы можете снова включать температуру, чтобы температура тайлов нормализовалась. Кроме того, вы можете обойти эту проблему, изменив обсидиан в [[raw-файл]]е, чтобы назначить ему [MAT_FIXED_TEMP:10000] (как это задано у [[nether-cap|нижнешляпника]]), предотвращая его нагревание.
** Отключение расчетов температуры приведет к тому, что [[fire|огонь]] станет глючить, включая существ, которые могут его создать ([[fire imp|огненные импы]], [[dragon|драконы]], [[forgotten beast|забытые твари]] и т. д.) Дварфы, подожженные с отключенной температурой, будут гореть вечно, пока не попадут в воду, но не получат никакого урона. Тайлы, подвергшиеся воздействию огня, с отключенными расчетами температуры станут полностью непроходимыми, что может привести к тому, что значительные части вашей карты будут заблокированы. Если вы столкнетесь с огнем или огненными существами, возможно, стоит снова включить температуру, пока проблемы с ними не будут решены.
** Несколько пользователей сообщали об увеличении FPS на 100% или выше при отключении расчета температуры [http://www.bay12forums.com/smf/index.php?topic=86761.msg2352509#msg2352509].
* Отключение [[weather|погоды]], вероятно, также ускорит игру, но тогда дождь не будет пополнять [[murky pool|пруды]], очищать загрязнения, убивать дварфов и т. д.
* С каждым дварфом связана большая часть вычислений в каждом конкретном кадре.
** Ограничьте количество дварфов, установив [[immigration|ограничение населения]].
* [[Invader|Вторженцев]] тоже нужно просчитывать. Хотя вы можете просто убить их, чтобы избавиться от проблемы, их присутствие может замедлить игру до такой степени, что продолжать станет невозможно.
** Количество вторженцев можно контролировать с помощью [[d_init.txt]]. Уменьшите максимальное количество захватчиков и получите меньшие [[siege|осады]] с разумным количеством врагов. Если этого недостаточно, вторшенцев можно полностью отключить, хотя это заблокирует доступ к [[fun|веселью]].
* Игра также должна отслеживать, что происходит в пещерах.
** Вы можете отключить слои пещеры в [[advanced world generation|расширенной генерации мира]]. Без пещер у вас будет гораздо меньше монстров и угроз, ищущих путь через извилистые подземные проходы. К сожалению, вы также теряете подземные [[plant|растения]] и [[tree|деревья]]. Так что вы можете уменьшить количество слоев пещер до одного.
** Если вы не возражаете против потери большого количества [[fun|веселья]], вы также можете отключить генерацию [[magma sea|магмавого моря]] и [[HFS|нижних слоёв]].


* Настройки мира и зоны высадки влияют на производительность.
====Моды и утилиты====
** Размер мира мало влияет на производительность (больше на размер файла сохранения), а вот количество подземных пещер — влияет. Ограничьте их, если не собираетесь заниматься исследованиями этого аспекта. Начальное значение  -3, 1 нужна как источник воды и подземных растений, 2-подземных деревьев.
* Накопление [[contaminant|загрязнителей]] может снизить FPS, и они несколько глючат. (См. {{bug|296}} и {{bug|3270}}.)
** Иногда загрязнения широко распространены или труднодоступны, так что полагаться на обычные методы [[cleaning|очистки]] было бы нецелесообразно или невозможно, или у игрока может не хватить терпения, чтобы справиться с этим так. В этом случае, можно использовать команды "clean" и "spotclean" в утилите [[Utility:DFHack|DFhack]] для очистки от загрязнений.


* Указание основных [[traffic|путей движения]].
* Постоянно растущие кучи брошенной одежды, проверка одежды [[wear|износ]] и недовольные [[thought|мысли]] могут повлиять на FPS.
** Указание для основных коридоров "high traffic" и для ответвлений до мастерских — "low" упрощает расчёт маршрутов движения.
** Можно [[Modding|поменять]] одежду так, чтобы предотвратить [[wear|износ]]. Это можно осуществить, добавив токен [[Armor_token|ARMORLEVEL:1]]. Помимо возможного прироста FPS, у этого есть и другие преимущества. Это исправление является частью [[List_of_mods#Modest_Mod|Modest Mod]] в качестве дополнительного модуля "Eternal Fashion". Его также можно найти в других модах, основанных на Modest Mod. (Поищите в [http://dffd.wimbli.com/DFFD] по слову "Modest".) Кроме того, [[List_of_mods#Masterwork_Dwarf_Fortress_.28MDF.29|Masterwork]] позволяет создавать металлическую одежду.


* Блокирование доступа к ненужным помещениям, выработкам или пещерам с помощью разведённого [[bridge|моста]] или запертой [[door|двери]].
==Команды DFHack==
** Это ограничит зону поиска пути для дварфов и праздношатающихся животных.
Список команд [[Utility:DFHack|DFHack]], которые могут помочь с FPS, исправляющие баги и уменьшие количество предметов.


* Уменьшение запасов форта может ускорить игру, избавив от расчётов [[wear|истлевания]].
*{{DFtext|autodump|white}} Полезно для массового выброса или уничтожения предметов. Используйте {{DFtext|help autodump|white}} для справки по параметрам.
** Используйте [[Dwarven atom smasher]] для уничтожения ненужного барахла или отдавайте его бесплатно [[Trading|приходящим караванам]]. После каждой осады обязательно уничтожайте или продавайте все шмотки, которые принесли с собой враги. Используйте Dwarven atom smasher для уничтожения тел (частей тел) врагов. В идеале в разделе body parts (z->Stocks->Body Parts) должны быть только полезные запасы (кости, черепа и рога животных), а все трупики всех поверженных противников надо уничтожать. Если поверхность завалена трупами, то про высокий fps можно забыть.
*{{DFtext|cleanowned|white}} Конфискует и сбрасывает мусор, принадлежащий дварфам. Используйте {{DFtext|help cleanowned|white}} для справки по параметрам. Может вызвать неприятные мысли, если нет одежды на замену.
** Не копайте слишком много, если вам не нужен камень.  
*{{DFtext|clean|white}} и {{DFtext|spotclean|white}} Удаляет загрязнения с тайлов/юнитов/предметов или с одного тайла.{{bug|296}}{{bug|1750}}{{bug|3270}} Используйте {{DFtext|help clean|white}} для справки по параметрам.
**<s>Не стройте гигантские [[Farming|поля]] без необходимости</s> <sup>лаг от повторяющихся проверок при расчёте роста растений исправлен в версии [[Release information/0.44#0.44.11_.2823_.D0.B8.D1.8E.D0.BD.D1.8F_2018.29|0.44.11]]</sup>.
*{{DFtext|flows|white}} Подсчитывает блоки карты с текущими жидкостями, которые замедляют игру.


* Текущая [[water|вода]] снижает производительность игры.
*{{DFtext|tweak fast-heat|white}} Дальнейшее повышение производительности обновления температуры.
** Не стройте генераторов [[mist|тумана]], [[Screw pump|подъёмные башни]] и другие конструкции массового передвижения воды. Если они необходимы — предусмотрите отключение.
** Реки не сильно нагружают процессор при равномерном течении, но создание плотин или массовая откачка воды плохо влияют на скорость.
** [[Aquifer|Водоносный слой]] так же не влияет, пока его не пытаешься откачать или слить, что нереально.


=== Дополнительно ===
*{{DFtext|timestream}} изменяет скорость симуляции игры так, что она *чувствуется* быстрой даже при низком FPS. Либо календарь, либо сами юниты, либо и то и другое можно настроить, так что {{DFtext|timestream -fps 100 -units}}, заставит календарь тикать, а юниты будут двигаться в пять раз быстрее, в то время как ваш фактический FPS составляет ничтожные 20. Это очень полезно для расширения игровых возможностей старых крепостей, где быстрый микроменеджмент не так важен, и большая часть повседневного функционирования выполняется сама собой.
* Если скорость отрисовки кадров слишком маленькая на стадии меню или для слишком маленькой крепости, возможно требуется обновление драйверов вашей видеокарты. Кроме того, можно поиграться с настройками в панели управления вашей видеокартой, например выключить вертикальную синхронизацию.


== Размер мира ==
*{{DFtext|fastdwarf|white}} Заставляет дварфов и других существ двигаться и работать быстрее или заставляет их телепортироваться. Запустите {{DFtext|fastdwarf help|white}} для получения дополнительной информации.
Уменьшение размера созданного мира серьезно увеличивает производительность игры, особенно для компьютеров с небольшим количеством оперативной памяти. Кроме того, мир будет создаваться быстрее и будет быстрее сохраняться и загружаться.


* Когда начинаете игру, выберите "Design New World With Parameters"
==Специфика Mac OS X==
* Выберите {{tooltip|средний|Medium}} или ещё меньший размер мира
Spotlight индексирует файлы на вашем Mac. Поскольку DF постоянно изменяет файлы, Spotlight будет продолжать индексировать их, используя 60-70% вашего процессора. Исключите DF в системных настройках: настройках приватности Spotlight (перетащив папку сохранения в список или нажав кнопку {{K|+}}), и вы можете получите увеличение FPS в два раза. Это может легко обеспечить прирост более 30 кадров в секунду даже на многоядерных компьютерах, которым не нужно беспокоиться о процессоре. Это связано с тем, что DF не является многопоточным.
* Создайте новый мир
* Начните игру с меньшим миром


Меньше — не всегда лучше. Если вы сделаете мир слишком маленьким, на нем не будет ничего интересного. Сначала попробуйте средний размер, перед тем как пробовать маленький. Маленькие миры создаются ОЧЕНЬ быстро, но их можно использовать только для тестирования различных модификаций. Новые версии игры имеют настройки для генерации настроек, которые могут быть использованы для создания "идеального мира" — небольшого, но со всеми необходимыми вам параметрами. Однако это не совсем просто и требует много времени.
Обратите внимание, что исключение папки сохранений из Spotlight означает, что вы не можете использовать Spotlight или Finder для поиска в [[raw-файл]]ах. Если вам это нужно по какой-то причине, вы можете использовать для этого "find" из командной строки.


== Место для крепости ==
==Специфика GNU/Linux==
* Двигающиеся жидкости являются основной причиной тормозов в начале игры. Магма и (в меньшей степени) вода являются основными пожирателями производительности в текущей версии. Если у вас железо не позволяет нормально играть на карте, где есть магма, то придется играть без нее. Гигантские реки также сильно замедляют игру. {{tooltip|Водоносные пласты|aquifer}} и большие водоемы не влияют на производительность.
* Избегайте больших перепадов высот и большого количества z-уровней.
* Уменьшайте размер карты.
* Избегайте пещер, городов, руин или чего-либо населенного. Живые существа вызывают поиск пути чаще, что может приводить к тормозам.


== Структура крепости ==
Размещение всего каталога df_linux в tmpfs с помощью [https://github.com/graysky2/anything-sync-daemon Anything Sync Daemon] может улучшить FPS в зависимости от вашей системы.
* Сужения и узкие проходы заставляют пересчитывать наиболее быстрый путь для каждого дварфа (и его животного, если таковое есть). Используйте широкие проходы и много лестниц.
* Запирайте домашних животных, диких животных и крупно-рогатый скот в клетках. AI для них был улучшен в последних версиях DF, но когда они бродят по карте, они все равно забирают процессорное время.
* Избегайте назначения задач а-ля повал деревьев, сбор трав, рытья шахт и т. д., особенно если больше количество дварвов могут этим заниматься.
* Есть наблюдения, что большое количество объектов накопившихся на ваших складах может «просаживать» FPS. Однако эти наблюдения не были подтверждены.
* Блокирование частей крепости особенно с помощью подвижных средств (раздвижных мостов или закрытых дверей) могут приводить к серьезным проблемам с поиском пути.
* Большое количество материалов находящихся в заблокированном месте (особенно вблизи от мастерских) увеличивает время нахождения пути. [[Forbidden|Запрещайте]] использование таких материалов<ref name="Создание крепости для быстрейшего нахождения пути">http://www.bay12forums.com/smf/index.php?topic=56041.0</ref>.
* Двери , открытые для дварфов но непроходимые для питомцев, просаживают FPS до нуля на любом компьютере как только любой зверек подходит к ним близко. Предположительно, зверек ломится в дверь.


== Читинг ==
Если вы запускаете какое-либо индексирование, исключите каталог DF.
* Полностью открытая карта работает быстрее чем частично-закрытая. Использование команды [[DFHack#reveal|reveal]] сделает игру немного быстрее, но менее интересной.
* Можно немного "сгладить" проблему низкого FPS, повысив стандартную скорость дварфов через документы в папке raw, которая находится в папке с сохранением мира. Внимание: сглаживание проблемы её не решает и даже может усугубить. Аналогично, уменьшает количество [[fun|веселья]] от игры.


== Что не влияет на производительность ==
Установка mimalloc или jemalloc и их предварительная загрузка в ваш скрипт ./df для запуска Dwarf Fortress может привести к увеличению частоты кадров:
Следующее не имеет никакого влияния на производительность игры.


* Полноэкранный или оконный режим (при условии что OpenGL нормально работает)
<nowiki>#!/bin/sh
* Использование [[Графическая_версия|графических сетов]], или графических [[Тайлсеты|тайлсетов]]
DF_DIR=$(dirname "$0")
* Размер тайлов
cd "${DF_DIR}"
* Количество выкопанных z-уровней (имеет значение сложность крепости, а не расстояние вверх/вниз)
LD_PRELOAD="/path/to/libmimalloc.so.2.0" ./libs/Dwarf_Fortress "$@"</nowiki>


== Железо/Операционные Системы ==
Путь, по которому установлен malloc, может отличаться, проверьте ''/usr/lib/'', ''/usr/lib64/'', ''/usr/local/lib/'', ''/usr/local/lib64/'' и ''/usr/lib/x86_64-linux-gnu/''. Имя файла .so также может отличаться.


=== Многопроцессорные системы ===
==Специфика Mac OS X или GNU/Linux==
* В task manager'е установите affinity процесса Dwarf Fortress на один процессор, после этого все программы которые используют процессор — на другой. Когда DF научится поддерживать многопроцессорные системы, этот пункт можно будет игнорировать. На текущий момент, самое лучше решение — выделять для DF один процессор.
===Настройка приоритета процесса===
* В Vista, START комманда может быть использована с параметром AFFINITY.
Одной из особенностей Unix-подобных систем является возможность контролировать приоритет процесса по отношению к другим процессам, работающим в то же время. Это его значение "приятности", причем -20 является наиболее благоприятным для процесса. Некоторые графические диспетчеры задач позволяют задать это значение, но в противном случае вы можете использовать команду "renice" следующим образом:


=== Ноутбуки ===
<nowiki>sudo renice -n -20 -p $(pgrep Dwarf_Fortress)</nowiki>
* Производительность игры почти всегда выше, когда ноутбук работает от розетки. Это потому что ноутбуки снижают скорость процессора, чтобы увеличить время работы от батарей.
* Эту "фичу" можно выключить в Windows, что скажется на времени работы от батарей.
* Некоторые ноутбуки могут перегреваться, если DF работает слишком долго. Держите свой ноутбук в прохладном месте, если у вас появляются непонятные притормаживания.


=== Много мониторов ===
Эта команда должна работать в большинстве дистрибутивов GNU/Linux. Для macOS (чей двоичный файл Dwarf Fortress по какой-то причине использует соглашение об именах Windows), используйте:
* DF умеет работать только на одном мониторе.


==Смотри также==
<nowiki>sudo renice -n -20 -p $(pgrep dwarfort.exe)</nowiki>
*[[Системные_требования|Системные требования]]


== Примечания ==
==Также==
<references />
* [[System requirements|Системные требования]] — аппаратные изменения, влияющие на частоту кадров.


[[Категория:Руководства]]
[[Категория:Руководства]]

Текущая версия от 20:01, 28 марта 2024

Счетчик фреймов в игре.

Фреймрейт (частота смены кадров) используется в Dwarf Fortress для указания как быстро игра обсчитывается. Показатель называется frames per second или коротко FPS. Для просмотра FPS в Dwarf Fortress достаточно изменить опцию [FPS:NO] на [FPS:YES] в init.txt. FPS будет отображаться внизу экрана. Первое число указывает пересчёта событий в мире, второй — скорость отрисовки.

Увеличение частоты кадров

Главное правило в том, что чем больше вещей должна отслеживать игра, тем медленнее она будет работать. Таким образом, уменьшение количества активных вещей позволяет вашей игре работать быстрее. Большую часть времени вычислений в Dwarf Fortress занимают юниты, делающие свои дела, более 60% в больших крепостях, из чего менее 10% связано с поиском пути, так что лучший способ предотвратить потерю FPS — это уменьшить количество юнитов в целом. В приведенном ниже списке способы улучшения FPS разделены на две категории: вещи, которые не меняют игру каким-либо фундаментальным образом, и вещи, которые меняют.

Без изменений игры

Особые способы строительства и планирования крепости, а также изменения настроек игры — изменения в основном в файлах init.txt и D_init.txt, которые на самом деле не меняют процесс игры.

Генерация мира

  • Большие миры требуют больше фоновых вычислений для обновления. Чем крупнее цивилизации, тем больше событий происходит в мире и тем они сложнее. Создание слишком большого цивилизованного населения может привести к постоянному и неизбежному падению FPS. Однако, учитывая, насколько игра богата контентом, даже маленький мир будет довольно интересным, но будет иметь гораздо более высокую частоту кадров, хотя некоторые вещи вы можете точечно настроить через расширенные параметры генерации.
  • Для более длинных историй требуется больше памяти и места для хранения исторических фигур и событий.
  • Уменьшение количества цивилизаций, мест, чудовищ и установка предела численности населения мира может снизить ресурсы, затрачиваемые на обновление остального мира.
  • Пещеры могут сильно пожирать FPS из-за большого количества существ, которые появляются там. Иногда даже торговые караваны будут пытаться пройти через подземелья крепости.
    • Настройка количества слоёв пещер в параметрах расширенной генерации мира может уменьшить размеры пещер (по умолчанию их 3 слоя). Однако это ограничит доступ к подземным растениям и существам, а также уменьшит количество порождаемых забытых тварей.
    • Точно так же можно настроить открытость пространства в слоях и плотность проходов в них в Advanced world generation, чтобы пещеры имели меньше тайлов для путей. В общем, алгоритм поиска пути эвристически рассматривает расстояния по одной клетке при движении в 3D ("расстояние Чебышева"), что означает, что он может иметь тенденцию идти вправо по X/Y, а затем начать слепое заполнение всей Z-оси оттуда, пока не сможет найти путь наверх, после чего весь процесс повторяется, поэтому лучше иметь меньше тайлов пещер, а открытых мест следует избегать.[1]
    • Генерация мира с использованием шаблона "REGION" (вместо шаблона "ISLAND", который используется в "Create New World!") может значительно уменьшить высоту пещер, а также разместить их ближе друг к другу, что приведет к меньшему количеству Z-уровней. Как правило, это также требует высадки в районе, который не очень близок к океану или горной вершине.
  • Таяние снега и льда может вызвать лаги.Требует проверки Вы можете создать мир без полюсов с несколько повышенной температурой или просто отправиться туда, где вода не замерзнет.

Организация крепости

  • Большие места для высадки резко увеличивают количество местности, которую игре необходимо отслеживать и строить пути.
    • Уменьшение размера стартового участка со стандартных 4×4 квадратов до 3×3 или даже 2×2 окажет огромное влияние на FPS.
    • Имейте в виду, что площадка 2×2 составляет всего 25% от размера посадки 4×4. Тем не менее, в 3D это все еще достаточно большая область для многих крепостей при обычной игре.
  • Расчеты прямой видимости, даже после оптимизации в версии 50.05, являются самой медленной частью игры с большим отрывом. Они O(n^2) по своей природе, поэтому единственный способ по-настоящему ускорить их — уменьшить количество юнитов. Тем не менее, есть еще способы уменьшить проблему.
    • Держите своих дварфов далеко друг от друга — юниты, находящиеся на расстоянии более 26 клеток от данного юнита в любом направлении, не учитываются при расчете прямой видимости.
    • Избегайте наличия одной единственной зоны для встреч, в которой находятся сотни дварфов.
    • Старайтесь разбивать зону прямой видимости в разных местах, чтобы ваши дварфы не спрашивали "друг или враг?" слишком часто.
  • Чем меньше предметов внутри крепости, тем меньше предметов проверяется на температуру, что является единственной серьезной причиной проблем с производительностью.
    • Очевидное решение — не создавать так много предметов . Не стройте такие большие грядки и не переусердствуйте с мастерскими, постоянно стоящими в очереди или настроенными на вечный повтор.
    • Используйте дварфский атомный дезинтегратор, чтобы удалять предметы, или пожертвуйте их проходящим караванам.
    • Квантовые склады помогают ускорить игру только если вы постоянно смотрите на смотрите свои склады.
    • Количество предметов в любом конкретном стаке не так сильно влияет на частоту кадров, как количество стаков в целом, из-за результирующего влияния на перетаскивание, склады, поиск пути и другие задачи, интенсивно использующие процессор. Исследование, проведенное в тредах Undump Engine и Micha демонстрируют очень эффективные решения для FPS, избегая при этом традиционных складов и использования бочек и ящиков.
    • При этом общее количество предметов имеет значение. Количество имеет гораздо большее значение для объектов, которые могут иметь качество или украшения, чем для обычных камней, поскольку они занимают больше памяти. Проверка температуры, увеличение износа и прочее вызывают лаги, хотя для внимания требует только при достижении больших количеств шлама (10 000+).
  • Изменения в картах путей могут привести к кратковременным лагам, так как карта будет нуждаться в обновлении.
    • Это наиболее заметно с дверями, разводными мостами или другими объектами, связанными с повторителем. Атомный дезинтегратор, подключенный к повторителю, даже отключенный от остальной части крепости, может вызвать лаги каждый раз, когда он поднимается или опускается. Если вы используете дезинтегратор для уничтожения мусора, настройте автоматику включать его очень редко или управляйте им вручную с помощью рычага.
    • Огораживайте стеной области с изменяющимся уровнем воды[1].
  • Правильное использование обозначений трафика должно помогать.
  • Количество активных собирателей растений может сильно влиять на частоту кадров, особенно если в меню работы включена опция "Everyone does this" в сочетании с очень высокой численностью населения. Лучше всего использовать опцию "Only selected do this" и выбрать для этой задачи только часть жителей или полностью отключить ее с помощью опции "Nobody does this", если сбор растений не является приоритетом в данный момент.
    • Настройка коридоров на высокий трафик, а тупиковых мастерских рядом с ними на низкий приведёт к тому, что алгоритм поиска пути будет быстрее искать вдоль коридора и тратить меньше времени на поиск в комнатах.
  • Хотя поиск пути не является серьезной причиной утечки FPS, уменьшение области, которую должен искать алгоритм, позволяет игре работать немного быстрее.
    • Очевидное решение — не выкапывать слишком много земли.
    • Тщательное планирование крепости может сократить время поиска пути при коротких перемещениях.
    • Распространение вашей крепости по горизонтали, как правило, означает что на каждую мастерскую коридор становится на три или четыре клетки длиннее. Размещение мастерских по вертикали на нескольких этажах, недалеко от складов позволяет увеличивать длину пути до самой дальней точки всего на одну клетку, если размещать мастерские вокруг лестницы.
    • Гигантские склады — это огромные области, требующие вычислений поиска пути. Квантовые склады могут убрать необходимость выкапывать большие области. Тем не менее, каждый производимый вами предмет занимает память и учитывается в таких процессах, как распределение температуры. Избегайте производства большего количества товаров, чем вы можете использовать, только потому, что вы хотите "занять дварфов делом". Если вам перестаёт хватать места для хранения ваших предметов, вместо того, чтобы копать новый склад, просто прекратите производство.
    • Если функции крепости разбросаны далеко друг от друга, рассмотрите возможность создания несколько столовых. Легендарную столовую не настолько сложно создать, и есть не так много причин, которые стоят того, чтобы кочегару нужно было обязательно преодолевать 100 этажей до поверхности и обратно ради выпивки.
    • Переполненные коридоры заставляют дварфов обходить друг друга, что приводит к перестройке маршрутов. Найдите способы распределить трафик, чтобы избежать столкновений. Стройте коридоры шире 1 клетки к областям, которые дварфы часто посещают, и может быть даже пути, по которым дварфы смогут срезать дорогу.
    • Было обнаружено, что дварфы больше предпочитают двигаться по рампам чем лестницам. Это можно использовать в дополнение к приоритетам маршрутов.
    • Может помочь закрытие неиспользуемых областей поднятыми мостами и запертыми дверями.
    • Открытые "карьеры" — это ловушки для алгоритма поиска пути. Отгородите их от крепости стенами, когда закончите работать над ними.
    • Пещеры, вероятно, являются худшей территорией для алгоритма поиска пути среди природных областей. Так что держите любую часть, которая вам не нужна в данный момент, закрытой.
    • Не назначайте сразу большие области для сглаживания.Bug:5986
    • Запертые в закрытой области дварфы, особенно впавшие в странное настроение, иногда вызывают значительные лаги. Это почти единственный случай, когда поиск пути действительно вызывает проблемы с FPS. Существует баг, из-за которого запертый дварф в странном настроении сильно тормозит игру.Bug:8698 Освободите их или от бремени, или от жизни, чтобы жить своей собственной.
    • Локации без достаточной площади требует частой перестройки путей. Убедитесь, что ваши локации достаточно велики для населения.
  • Каждое животное также проверяется на наличие прямой видимости.
    • Прирученных животных можно поместить в клетку, и в этом случае они полностью освобождаются от всех подобных проверок. Или вы можете забить.
  • Многотайловые деревья являются известным источником лагов.
    • Выбор места для высадки, при котором деревья растут только на одной или двух клетках начальной зоны, может повысить производительность.
  • Загрязнетели могут накапливаться на земле, на дварфах и существах. Особенно в старых крепостях это может повлиять на FPS. Существует багBug:296, который заставляет загрязняющие вещества постоянно множиться, и другойBug:3270, которая предотвращает исчезновение крови.
    • Если загрязнители снаружи, изолируйте область и дайте дождю медленно смыть ее. Домашних животных можно оставить на улице с помощью пастбище или ямы. Точно так же установка трафика на "restricted" и/или назначение зон активности может сделать ту же работу для дварфов.
    • Добавьте средства мытья дворфов и их питомцев в крепости. Только мыло и колодец позволяют дварфам мыться самостоятельно. Убедитесь, что у вас также включена работа по уборке. Подробную информацию об этих и других средствах можно найти на странице Cleaning.
  • Обнаружение HFS резко снизит FPS ПОСЛЕ того, как вы закроете проходBug:1340. Либо избегайте этого, либо используйте обходной путь, опубликованный в отчете о баге.
  • Масштабное строительство, особенно мегапроекты, по мере роста крепости будет вызывать все более серьезный лаг при выборе указаний. Запретите материалы (особенно камни, блоки и слитки), сколько возможно, чтобы сократить время, необходимое игре для расчета списка доступных материалов при строительстве конструкций.
  • Когда отряд возвращается из рейда/миссии, может внезапно появиться огромный лаг (до 5 кадров в секунду). Вы можете распустить отряд, и ситуация должна прийти в норму.
  • То же самое может произойти при отправке отряда на задание. Если члены отряда каким-то образом заперты внутри крепости, они будут постоянно пытаться найти путь к миссии, и игра может почти зависнуть.
  • Гравюры являются проблемой в ASCII из-за медленного поиска графики гравировки, но в графическом режиме они не особенно влияют.
  • Минимизируйте количество живых растений. Заодно насолите эльфам.
  • Избегайте отображения на экране сложных областей. Отображение фрагмента карты требует разного объема работы в зависимости от того, что это такое:
    • Нераскрытые тайлы почти не занимают времени — игре нужно только определить, какой "случайный символ" в этой темноте отображать.
    • Деревьям необходимо выполнить линейный поиск по списку столбцов (один список на каждый блок тайла 48x48 области игровой каты), чтобы определить, какие побеги присутствуют в тайле дерева, и поиска про само растение, какой отображать символ/цвет. Это самая медленная часть этапа рендеринга.
    • Тайлы каменного слоя должны взять номер биома и номер слоя и найти материал слоя, а затем просмотреть raw-файл неорганического объекта, чтобы получить символ/цвет.
    • Тайлы лавового камня должны взять номер биома и найти информацию о регионе, чтобы определить, какой лавовый камень использовать, а затем продолжить, как указано выше.
    • Особенности рельефа на каменных тайлах (например, адамантин) необходимо найти на карте особенностей рельефа для тайла, чтобы выяснить, из чего он сделан, а затем продолжить, как указано выше.
    • Тайлы жил необходимо найти линейным поиском в списке, специфичном для блока карты 16x16x1, чтобы увидеть, какой жиле они соответствуют, и определить материал, а затем продолжить, как указано выше.
    • Тайлы травы необходимо найти линейным поиском в том же списке, чтобы выяснить, какой тип травы присутствует, затем просмотреть raw-файл растения, чтобы получить символ/цвет (а также учесть анимацию).
    • Кустарники и саженцы необходимо искать в отдельном списке (не ясно, это глобальный список или список для конкретного столбца), чтобы найти рассматриваемое растение и определить его символ/цвет.
    • Для сконструированных тайлов необходимо выполнить бинарный поиск по координатам X/Y/Z в отдельном списке, чтобы определить, какой материал они используют, а затем найти символ/цвет для этого материала.
    • Вдобавок ко всему, выполняется линейный поиск в еще одном списке, чтобы определить, присутствует ли гравировка (и, если да, какой тайл отображать).
    • Отображается другое содержимое тайлов (юниты, здания, предметы, вредители и т. д.)
    • После того, как всё это сделано, выполняется еще один линейный поиск (хотя в том же списке, что и с жилами и с травой), чтобы увидеть, есть ли на тайле загрязнители (например, ил, кровь, рвота или листья) и соответствующим образом настроить символ/цвет.

Настройки игры

  • G_FPS — это параметр в файле init.txt. Он определяет, как часто Dwarf Fortress перерисовывает экран. Он также определяет, как часто игра проверяет ввод с клавиатуры или мыши.
    • Снижение G_FPS не ускорит остальную часть игры, так как все это выполняется в отдельном потоке.

С изменениями игры

Все изменения в этом разделе имеют какое-то влияние на саму игру, используйте на свое усмотрение.

Настройки игры

  • Вычисления температуры сильно нагружают процессор.
    • Их отключение ускорит игру и может быть включено обратно в любое время.
    • Без расчета температуры обсидиановая ферма становится непригодной к использованию; так как тайлы никогда не остывают, дварфы будут отказываться наступать на обсидиановый пол, на котором лежит выкопанный обсидиан, препятствуя возможности переноски.Bug:6033 Время от времени вы можете снова включать температуру, чтобы температура тайлов нормализовалась. Кроме того, вы можете обойти эту проблему, изменив обсидиан в raw-файле, чтобы назначить ему [MAT_FIXED_TEMP:10000] (как это задано у нижнешляпника), предотвращая его нагревание.
    • Отключение расчетов температуры приведет к тому, что огонь станет глючить, включая существ, которые могут его создать (огненные импы, драконы, забытые твари и т. д.) Дварфы, подожженные с отключенной температурой, будут гореть вечно, пока не попадут в воду, но не получат никакого урона. Тайлы, подвергшиеся воздействию огня, с отключенными расчетами температуры станут полностью непроходимыми, что может привести к тому, что значительные части вашей карты будут заблокированы. Если вы столкнетесь с огнем или огненными существами, возможно, стоит снова включить температуру, пока проблемы с ними не будут решены.
    • Несколько пользователей сообщали об увеличении FPS на 100% или выше при отключении расчета температуры [2].
  • Отключение погоды, вероятно, также ускорит игру, но тогда дождь не будет пополнять пруды, очищать загрязнения, убивать дварфов и т. д.
  • С каждым дварфом связана большая часть вычислений в каждом конкретном кадре.
  • Вторженцев тоже нужно просчитывать. Хотя вы можете просто убить их, чтобы избавиться от проблемы, их присутствие может замедлить игру до такой степени, что продолжать станет невозможно.
    • Количество вторженцев можно контролировать с помощью d_init.txt. Уменьшите максимальное количество захватчиков и получите меньшие осады с разумным количеством врагов. Если этого недостаточно, вторшенцев можно полностью отключить, хотя это заблокирует доступ к веселью.
  • Игра также должна отслеживать, что происходит в пещерах.
    • Вы можете отключить слои пещеры в расширенной генерации мира. Без пещер у вас будет гораздо меньше монстров и угроз, ищущих путь через извилистые подземные проходы. К сожалению, вы также теряете подземные растения и деревья. Так что вы можете уменьшить количество слоев пещер до одного.
    • Если вы не возражаете против потери большого количества веселья, вы также можете отключить генерацию магмавого моря и нижних слоёв.

Моды и утилиты

  • Накопление загрязнителей может снизить FPS, и они несколько глючат. (См. Bug:296 и Bug:3270.)
    • Иногда загрязнения широко распространены или труднодоступны, так что полагаться на обычные методы очистки было бы нецелесообразно или невозможно, или у игрока может не хватить терпения, чтобы справиться с этим так. В этом случае, можно использовать команды "clean" и "spotclean" в утилите DFhack для очистки от загрязнений.
  • Постоянно растущие кучи брошенной одежды, проверка одежды износ и недовольные мысли могут повлиять на FPS.
    • Можно поменять одежду так, чтобы предотвратить износ. Это можно осуществить, добавив токен ARMORLEVEL:1. Помимо возможного прироста FPS, у этого есть и другие преимущества. Это исправление является частью Modest Mod в качестве дополнительного модуля "Eternal Fashion". Его также можно найти в других модах, основанных на Modest Mod. (Поищите в [3] по слову "Modest".) Кроме того, Masterwork позволяет создавать металлическую одежду.

Команды DFHack

Список команд DFHack, которые могут помочь с FPS, исправляющие баги и уменьшие количество предметов.

  • autodump Полезно для массового выброса или уничтожения предметов. Используйте help autodump для справки по параметрам.
  • cleanowned Конфискует и сбрасывает мусор, принадлежащий дварфам. Используйте help cleanowned для справки по параметрам. Может вызвать неприятные мысли, если нет одежды на замену.
  • clean и spotclean Удаляет загрязнения с тайлов/юнитов/предметов или с одного тайла.Bug:296Bug:1750Bug:3270 Используйте help clean для справки по параметрам.
  • flows Подсчитывает блоки карты с текущими жидкостями, которые замедляют игру.
  • tweak fast-heat Дальнейшее повышение производительности обновления температуры.
  • timestream изменяет скорость симуляции игры так, что она *чувствуется* быстрой даже при низком FPS. Либо календарь, либо сами юниты, либо и то и другое можно настроить, так что timestream -fps 100 -units, заставит календарь тикать, а юниты будут двигаться в пять раз быстрее, в то время как ваш фактический FPS составляет ничтожные 20. Это очень полезно для расширения игровых возможностей старых крепостей, где быстрый микроменеджмент не так важен, и большая часть повседневного функционирования выполняется сама собой.
  • fastdwarf Заставляет дварфов и других существ двигаться и работать быстрее или заставляет их телепортироваться. Запустите fastdwarf help для получения дополнительной информации.

Специфика Mac OS X

Spotlight индексирует файлы на вашем Mac. Поскольку DF постоянно изменяет файлы, Spotlight будет продолжать индексировать их, используя 60-70% вашего процессора. Исключите DF в системных настройках: настройках приватности Spotlight (перетащив папку сохранения в список или нажав кнопку +), и вы можете получите увеличение FPS в два раза. Это может легко обеспечить прирост более 30 кадров в секунду даже на многоядерных компьютерах, которым не нужно беспокоиться о процессоре. Это связано с тем, что DF не является многопоточным.

Обратите внимание, что исключение папки сохранений из Spotlight означает, что вы не можете использовать Spotlight или Finder для поиска в raw-файлах. Если вам это нужно по какой-то причине, вы можете использовать для этого "find" из командной строки.

Специфика GNU/Linux

Размещение всего каталога df_linux в tmpfs с помощью Anything Sync Daemon может улучшить FPS в зависимости от вашей системы.

Если вы запускаете какое-либо индексирование, исключите каталог DF.

Установка mimalloc или jemalloc и их предварительная загрузка в ваш скрипт ./df для запуска Dwarf Fortress может привести к увеличению частоты кадров:

#!/bin/sh
DF_DIR=$(dirname "$0")
cd "${DF_DIR}"
LD_PRELOAD="/path/to/libmimalloc.so.2.0" ./libs/Dwarf_Fortress "$@"

Путь, по которому установлен malloc, может отличаться, проверьте /usr/lib/, /usr/lib64/, /usr/local/lib/, /usr/local/lib64/ и /usr/lib/x86_64-linux-gnu/. Имя файла .so также может отличаться.

Специфика Mac OS X или GNU/Linux

Настройка приоритета процесса

Одной из особенностей Unix-подобных систем является возможность контролировать приоритет процесса по отношению к другим процессам, работающим в то же время. Это его значение "приятности", причем -20 является наиболее благоприятным для процесса. Некоторые графические диспетчеры задач позволяют задать это значение, но в противном случае вы можете использовать команду "renice" следующим образом:

sudo renice -n -20 -p $(pgrep Dwarf_Fortress)

Эта команда должна работать в большинстве дистрибутивов GNU/Linux. Для macOS (чей двоичный файл Dwarf Fortress по какой-то причине использует соглашение об именах Windows), используйте:

sudo renice -n -20 -p $(pgrep dwarfort.exe)

Также

FAQ по игровому интерфейсу
Гайд по интерфейсу
Что значат пиктограмки?
Что означают меняющиеся значки?
Как заставить игру идти быстрее?
Как увеличить размер экрана?
Как упростить рутинные операции?
Я играю с лаптопа, как мне перенастроить кнопки?
Где я могу взять (другой) графический набор для игры?
Почему в меню запасов (z) числа отображаются жёлтым и не точно: 10? 20?...
Как расшифровать значки у разных предметов?
Добавить вопрос в FAQ
Назад в раздел: Вопросы и ответы