tomcat

Гайд по оптимизации Train Fever

97 сообщений в этой теме

С помощью этого руководства, надеюсь, вы легко настроите игру под требования своего ПК или ноутбука, увеличите количество fps (кадров в секунду), снизите количество лагов и подвисаний в игре. Что-то нашёл сам, а за какие-то идеи спасибо русскоязычному (и отдельно MrSandMan) и немецкоязычному сообществам (качал моды и смотрел, как там сделано). Для начала одно важное замечание.

 

ВНИМАНИЕ! Если вы не являетесь любителем по несколько раз в месяц переустанавливать игры, то перед любым изменением файлов делайте их резервные копии! В этом случае, если вы не запомните исходные значения, вы при желании легко сможете затем заменить модифицированные файлы оригинальными в папках игры. Ну, а теперь поехали!

 

1. Настраиваем количество леса и деревьев и дальность их прорисовки

 

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

 

Итак, открываем папку с деревьями, которая находится по адресу: Train Fever - res - models - model - tree

Там мы видим файлы *mdl - открываем каждый (в оригинальной игре их около 60) любым текстовым редактором (Notepad, Блокнот и т.д.) или используем удобную программу @Text Replacer и меняем следующие значения:

 

visibleFrom = 0,

visibleTo = 6000,

 

Точнее, первое оставляем по умолчанию "0", а вот у второго рекомендую поставить "1500" вместо "6000" (впрочем, никто не мешает выставить и любую другую цифру - смотрите сами, как нужно и удобно). Эти цифры означают расстояние в метрах, с которого деревья будут видны в игре, то есть делаем, что их будет видно с 1,5 км вместо 6 км, что, как вы понимаете, значительно увеличит производительность игры, особенно при большом количестве леса и отдельных деревьев на карте. Теперь о том, как менять количество деревьев на карте. Для этого идём по адресу: Train Fever - res - config и открываем файл base_config.lua - отличный подарок от разработчиков для тех, кто любит более подробные настройки игры, который появился с последним патчем. Там находим следующие строчки:

 

vegetation = {

forestLevel = 0.5, -- 0.0 - 1.0

forestDensity = 1.0, -- 0.25 - 4.0

singleDensity = 1.0 -- 0.0 - 100.0

 

Разберёмся со значениями. forestLevel - количество лесных зон на карте в процентах, по умолчанию стоит 0.5 из 1, то есть 50% (кстати, обратите внимание на цифры справа - там указаны минимальное и максимальное допустимые значения). forestDensity - это густота леса (как видим, можно изменять в пределах от 0.25 (совсем редкий лес) до 4.0 (очень густой)). singleDensity - процент одиноко стоящих деревьев на карте. По умолчанию стоит 1% (1.0), но можно выставить и значительно больше - вплоть до 100% (100.0). Насколько влияют эти значения на производительность? Достаточно сильно.

 

Так, например, при выставлении уровня леса (forestLevel) более 60-70% на слабых ПК и ноутбуках будут наблюдаться лаги и зависания, поэтому настоятельно рекомендую настроить дальность прорисовки деревьев, значительно уменьшив её. И даже на мощных компьютерах может резко падать fps, если выставить уровень леса около 100% и при этом не настроить видимость деревьев с высоты. Параметр forestDensity (густота лесов) также влияет на производительность, но меньше, хотя на слабом компьютере будет заметно, если увеличить густоту лесных зон значительно (например, поставить максимальное значение 4.0 или около того). Наконец, повышение плотности отдельно стоящих деревьев на карте (singleDensity) тоже может замедлять работу графического процессора, но если настроить её в разумных пределах (до 50% - 50.0) и не забыть про изменение дальности отрисовки деревьев, то можно избежать проблем с отображением графики. Разумеется, конкретные рекомендации каждому пользователю мы дать не можем, поскольку всё зависит от вашего графического процессора (видеокарты) - пробуйте, экспериментируйте, а мы идём дальше.

 

2. Настраиваем количество жителей в домах

 

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

 

Итак, идём по адресу: Train Fever - res - scripts и открываем файл buildingutil.lua - также любым текстовым редактором (Notepad, Блокнот и т.д.). Там мы видим следующую структуру: после первой строчки local buildingutil = { } идут скрипты всех зданий, которые начинаются строчками типа function buildingutil.make_residential_0_default() и заканчиваются так:

}

end

 

Обратите внимание на структуру открывающих строк: в них содержится указание на тип строения. residential - жилое здание, commercial - коммерческое, industrial - промышленное, leisure - досуг. Каждых зданий в игре 4 типа, но нас интересуют в скрипте лишь строчки со значением capacity (вместимость, то есть в данном случае количество жителей). В первом здании (residential_0) это значение следующее:

 

capacity = { 1, 4 },

 

Здесь всё просто: цифра слева (1) - это минимально возможное количество жителей в доме данного типа, цифра справа (4) - максимально возможное. Соответственно, можно уменьшить максимально возможное количество и сделать так:

 

capacity = { 1, 2 },

 

Таким образом, в маленьких домишках в любом случае не будет проживать более двух человек. Смотрим следующий скрипт (уже многоэтажного дома residential_1) и видим там:

 

capacity = { 5, 10 },

 

Уменьшаем левое значение, например, до трёх, а правое снова сокращаем вдвое, получаем дом с минимальным количеством жителей 3 вместо 5, а максимальным - 5 вместо 10:

 

capacity = { 3, 5 },

 

Далее проделываем всё то же самое для двух оставшихся типов жилых зданий (residential_2_block - блочные дома и residential_3_skyscraper - небоскрёбы), но в небоскрёбах можно уменьшить максимальное количество жителей уже, например, не в 2, а в 4 раза для того, чтобы в XX-XXI вв. города не росли слишком быстрыми темпами, то есть понизить максимальное значение с 400 не до 200, а до 100 жителей или даже больше, но здесь, опять же, пробуйте и настраивайте сами под себя.

 

Теперь соответствующим образом настраиваем коммерческие, промышленные здания и досуг (в учреждениях досуга немного изменена структура скриптов, но найти соответствующие строчки тоже не составит труда - нужные нам части просто расположены более компактно). А в завершении этой части оптимизации я бы хотел обратить ваше внимание на следующие строчки:

 

availability = {

yearFrom = 0,

yearTo = 0

 

Это годы доступности тех или иных зданий в игре (yearFrom - с, yearTo - до). По умолчанию везде стоит 0 (то есть теоретически и небоскрёбы могут появиться уже в XIX веке), но никто не мешает нам поставить свои значения, чтобы, например, сделать так, что небоскрёбы начнут появляться только в конце XX-го или даже уже в нашем веке.

 

3. Настраиваем отображение и дальность отрисовки транспортных средств

 

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

 

Откроем файл любого транспортного средства (далее - ТС), например, самого современного автобуса Volvo. Идём по адресу: Train Fever - res - models - model - vehicle - bus и откроем в этой "автобусной" папке файл volvo_5000.mdl Большие блоки, заканчивающиеся примерно такими строчками:

 

visibleFrom = 250,

visibleTo = 2200,

 

и есть те самые лоды, точнее - скрипты лодов, отвечающие за их отображение, поведение в игре, анимацию дверей и т.д. visibleFrom - это дистанция, с которой данный лод модели будет отображаться в игре, visibleTo - расстояние, до которого он будет отображаться. В данном случае (значения по умолчанию), как только вы удалите камеру на расстояние выше 2,2 км, данный лод заменится на иконку ТС. Соответственно, можно настроить, чтобы этот лод заменялся на иконку при меньшей высоте, а также при меньшей высоте или на меньшем расстоянии, чем прописано, был виден в игре (вместо более детализированного следующего лода). Например, так:

 

visibleFrom = 100,

visibleTo = 1000,

 

То есть этот лод модели появится у нас теперь, как только мы удалим камеру на 100 м (но тогда не забудьте поставить у следующего лода максимальное значение 100 вместо 250) и заменится на иконку, как только мы поднимемся над автобусом на 1 км. И вот теперь самое интересное. Если графический процессор (видеокарта) вашего ПК или ноутбука совсем слабенький, можно сделать так, чтобы наиболее детализированные модели (лоды) ТС вообще убрать, оставив только лоды с небольшим количеством полигонов. Крайний случай - оставить только наименее детализированный лод (но если он прорисован недостаточно хорошо (а такое иногда случается, например, с моддерским транспортом), ваше ТС будет напоминать в игре коробку). В случае с Volvo поменяем значения вышеуказанного лода, чтобы они выглядели так:

 

visibleFrom = 0,

visibleTo = 1000,

 

А у следующих двух лодов (более детализированного и максимально детализированного) поставим значения так (чтобы модели вообще не отображались):

 

visibleFrom = 0,

visibleTo = 0,

 

Менее радикальное решение - оставить средний лод доступным при приближении, поставив ему следующие значения:

 

visibleFrom = 0,

visibleTo = 100,

 

А у первого тогда оставляем:

 

visibleFrom = 100,

visibleTo = 1000,

 

Думаю, излишне говорить, но на всякий случай: помните, что настраивать отображение лодов нужно так, чтобы значения дальности изменялись последовательно. То есть у первого лода это будет от 100 м до 1 км, у второго - от 10 м до 100 м, а у третьего, допустим, от 0 до 10 м. То есть значения не должны перекрываться и не должно быть пропусков, иначе будет либо наложение лодов друг на друга, либо вообще модель на какое-то время станет невидимой. Добавлю, что у разных моделей может быть разное количество лодов (у каких-то вообще один, у каких-то и по четыре), поэтому учитывайте и этот момент при настройке.

 

ВНИМАНИЕ! Порядок лодов в файле может быть иным: сверху будет расположен самый детализированный лод, снизу - самый простой (особенно это касается модов), поэтому обращайте на это внимание при настройках моделей.

 

4. Убираем дым у зданий

 

В оригинальной игре дымит буквально всё. Дым - это, конечно, хорошо и красиво, но он тоже нагружает видеокарту, и чем больше зданий, тем сильнее нагрузка. Выход - убрать отображение дыма у зданий либо полностью, либо частично.

 

Для примера возьмём один из файлов, которые находятся по адресу: Train Fever - res - models - model - asset. Нам нужны файлы *mdl, начинающиеся на chimney (в переводе это "дымоход" или "дымовая труба"). Открываем любой файл, допустим chimney_res_00.mdl и листаем в самый низ. Теперь убираем вот эти строчки:

 

particleSystem = {

emitters = {

{

position = { .0, .0, 2.0 },

velocity = { .0, .0, 1.0 },

color = { .6, .6, .6 },

frequency = 8,

lifeTime = 5.0,

size01 = { .5, 4.5 },

child = 0

 

Это и есть дым с различными параметрами (которые, кстати, тоже можно настроить - например, размер, цвет, время "жизни", частоту появления и т.д.). Но если мы хотим избавиться от дыма, то всё это нужно убрать и у нас должно остаться следующее:

 

metadata = {

},

}

end

 

И эту операцию проделываем с каждым файлом, в названии которого есть слово chimney. Можно также отключить и видимость самих дымоходов, поменяв соответствующим образом вот эти параметры (приведу их по умолчанию):

 

visibleFrom = 0,

visibleTo = 400,

 

Вы уже знаете, как сделать модель невидимой. Но в данном случае можно ничего не трогать, так как анимацию дыма мы убрали, а трубы на домах особо много ресурсов не съедят. Можно настроить эти файлы достаточно интересно: например, оставить дым только у промышленных зданий, то есть не трогать файлы, в названии которых есть суффикс -ind, а поменять только файлы с суффиксом -res - тут уж всё зависит от вашего желания и производительности компьютера. Идём дальше.

 

5. Настраиваем количество и отображение частного транспорта (легковых автомобилей)

 

Огромные пробки - удел практически каждой достаточно развитой карты, начиная со 2-й половины XX века. Однако пробки эти чаще всего значительно нагружают графический процессор. И можно легко настроить их примерное количество, а то и вовсе убрать.

 

Открываем файлы личного транспорта, которые находятся по адресу: Train Fever - res - models - model - vehicle - car. Их всего пять, поэтому настройка не займёт много времени. Откроем первый по списку файл corolla.mdl и сразу пролистаем в самый низ до значения:

 

topSpeed = 80,

 

Это максимальная скорость, сейчас она у нас составляет 80 км/ч. Как известно, в Train Fever человек поедет куда-то только в том случае, если он сможет добраться до места назначения менее, чем за 20 минут. И понятно, что все обладатели "Королл" и более быстрых машин будут пользоваться именно ими, а не поездом или автобусом. Следовательно, нужно уменьшить значение максимальной скорости у всех авто. Для того, чтобы несколько сократить количество пробок, можно поставить значение 50, чтобы сделать пробки более реалистичными, ставим значение 40, ну а если вы хотите избавиться от пробок совсем или радикально минимизировать их, поставьте значение 30 или меньше - в этом случае жители будут пользоваться транспортом только внутри городов.

 

Значение 5 или меньше приведёт к тому, что все будут ходить пешком, но интересно ли так будет играть - тут уж каждый решает сам. Ещё одна проблема: медленные машины могут создавать проблемы более быстрым автобусам - в этом случае нужно подумать о выделенных полосах на дорогах. Кстати, не забудем и о настройке отображения машин. Находим в текстах лодов уже знакомые нам параметры и меняем их, как нужно. А теперь к пешеходам.

 

6. Настраиваем отображение и дальность прорисовки пешеходов

 

Пешеходы, видимые с расстояния нескольких сотен метров - это, конечно, хорошо, однако для увеличения производительности (например, при пролёте над картой на определённой высоте) вполне можно сделать так, чтобы их не было видно, а то и вовсе сделать жителей невидимыми.

 

Идём по адресу: Train Fever - res - models - model и видим файлы пешеходов, в названиях которых встречаются сочетания -man (мужчины) и -wom (женщины). Открываем их и точно так же, как и для ТС, настраиваем дальность и количество отображения лодов. Если хотите, чтобы жителей не было видно вообще, поставьте во всех лодах нули в параметрах, отвечающих за отображение (вы их уже знаете и найдёте без труда). Вот и вся премудрость. Ну и последний пункт - города и предприятия.

 

7. Изменяем количество городов и предприятий на карте

 

Кому-то интересно играть на густонаселённых картах, а кому-то хочется, чтобы города и предприятия разделяли десятки километров. Настройки игры позволяют сделать и это, причём очень просто. Идём по адресу: Train Fever - res - config и открываем уже знакомый нам файл base_config.lua

Листаем в самый низ и видим следующие значения:

 

areaPerTown = 10.0, -- km^2

areaPerIndustry = 2.0 -- km^2

 

Первое значение (areaPerTown) означает, что в оригинальной игре при старте сгенерируется 1 город на примерно 10 квадратных километров. Соответственно, для предприятий (areaPerIndustry) это будет 2 кв. км на одну фабрику. Как мы знаем, на маленькой карте генерируется обычно 7 городов. Если же мы увеличим первое значение с 10.0 до 20.0, то количество городов сократится до 3-4. Соответственно увеличение значения areaPerIndustry вдвое (с 2.0 до 4.0) приведёт к аналогичному сокращению и предприятий на карте. Если же вы считаете, что 7 городов на маленькой карте - это очень мало, попробуйте уменьшить значение areaPerTown с 10.0 до 5.0 - получится, что на 1 город будет приходиться примерно 5 кв. км свободного пространства. Если компьютер достаточно производительный, можно будет поиграть в "города с пригородами", если же наоборот - увеличьте стандартные значения для комфортной игры.

 

***

 

Осталось добавить, что изменение сразу всех рассмотренных нами файлов в разы повысит производительность игры и увеличит fps, однако играть вряд ли будет интересно, поэтому находите баланс. Я, например, отключаю дым у всех зданий, кроме промышленных (так их ещё и легче находить), изменяю видимость лесов с высоты и сокращаю количество жителей. Вам, возможно, понравится что-то другое. На этом всё - приятной игры!

Изменено пользователем tomcat
19

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Огромное спасибо за такой труд!

4

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@KuT, не за что! Самое главное, чтобы оказалось полезным) 

3

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@tomcat, молодец! Полезная инфа

2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ам мы видим файлы *mdl - открываем каждый (их около 60) любым текстовым редактором (Notepad, Блокнот и т.д.) и меняем следующие значения:

Удобно использовать прогу @Text Replacer. Она вроде бесплатная)

 

 

 

"frequency = 8," в контейнере дыма это, чаще - меньше число или больше число?

2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Удобно использовать прогу @Text Replacer. Она вроде бесплатная)

Вот спасибо! По пакетной замене названий файлов знаю прогу, а вот что тексты в самих файлах пакетами можно менять - это открытие  :D

 

"frequency = 8," в контейнере дыма это, чаще - меньше число или больше число?

Насколько помню, чем больше число, тем выше интенсивность должна быть.

 

P.S. Отличная прога! За секунды делает то, на что раньше тратил минут по 15, ещё раз спасибо!

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На удовольствие)

 

 

Т.е. а тогда что за единица измерения там?) Если 1 поставить.. то это будет 1 чего во что?)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Важное дополнение к пункту 3!

 

Т.е. а тогда что за единица измерения там?) Если 1 поставить.. то это будет 1 чего во что?)

Вот этого я не знаю, знаю только, что у промышленности 15, у остальных 8. Возможно, граф. циклов в минуту, может и ещё что)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Гм. Отображение моделей, которые не дефолтные, если я не ошибаюсь, будет слегка муторно настраивать - это надо облазить все папки с ними, собственно. А таких ведь куча.
Ну, опять таки, если я ничего не напутал.

UPD Понял, что программка прекрасно сканирует и подпапки на нужные файлы тоже, каюсь.

Изменено пользователем Corupt
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

однако есть проблема, что у дефолтного и мод-контента - везде разные расстояния отображения.. так что лазать всё равно надо.

1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не подскажите как отключить отображение ежемесячных вычислений ( красные цифры)?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@KuT, вот чего не знаю, того не знаю! Как появится время и в очередной раз буду копаться в скриптах, посмотрю, если, конечно, оно там есть :)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо, за понимание)

1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот про убирания дыма с домов, тут написано открываем к примеру фаил - chimney_res_00 и там меняем. Но есть же ещё файлы chimney_res_01, 02 и т .д. так в них тоже менять надо или тока в 00. Для чего стока их, и там всё одинаково???

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Tosha_Cooper, нужно менять во всех файлах. Они относятся к разным домам. 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Tosha_Cooper, добавил в описание, спасибо. Можно не трогать файлы дымоходов в промышленных зданиях, если нет необходимости. 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

кстати эффекта не заметил..

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А может ещё в настройках отключить окклюзия (SSAO) и HDR. Или они на что то серьёзное влияют???!!!

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Доброй ночи.

Хочу сделать очень много городов на маленькой карте. Уменьшаю значения, но максимум 7 городов.

Устанавливаю такие значения, но не помогает. Что можно изменить?

	areaPerTown = 0.01,			-- km^2
	areaPerIndustry = 1		-- km^2
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Скорее всего есть ограничение внутри игры - генераторе карт, что на малой карте больше городов не будет.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну у пешеходов 4 лода а можно везде первое значение 0 а вторые уменьшать 50 25 10 и 0 ? так можно???

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Tosha_Cooper, тогда будет отображаться сразу несколько лодов при приближении, если вообще не заглючит. Лучше уж оставить наименее детализированные лоды, например, от 0 до 300 или сколько надо поставить, а у остальных тогда 0 и 0 везде.

@Yosheek, где именно? Производительность не увеличилась после оптимизации или ты про дымоходы?)) 

А может ещё в настройках отключить окклюзия (SSAO) и HDR

Разумеется, лучше всякие примочки тоже отключать. HDR, в принципе, это освещение же, но возможно тоже ресурсы граф. процессора съедает, а вот про функцию с не очень аппетитной аббревиатурой SSAO я не знаю, щас погуглим)) погуглил - типа глобального освещения. Ну, тоже можно отключить, это ж не критично для играбельности, но что-то там сэкономит)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Устанавливаю такие значения, но не помогает. Что можно изменить?

 

Вот сейчас ради эксперимента поставил у городов 2.0, у предприятий 1.0. Итог: предприятий визуально стало больше, кол-во городов увеличилось на один - итого стало 8. Ограничение игры есть, да, но не критичное: друг, по-моему ставил 0.01 или 0.1, и у него получалось через раз - то на карте море городов, то почти никаких изменений. А у меня вот при указанных значениях так, на один город больше стало, а значение уменьшил ровно в 5 раз при этом:

post-5212-0-18502900-1440077034_thumb.jpg

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@tomcat, по поводу выставления дальности от 0 до 0 в лодах, лучше не используемое полностью вырезать из файла. Я, конечно, не знаю, как там в деталях работает ТФ, но вполне возможно, что он подгружает модели, даже если не может отобразить их таким образом.

1

Поделиться сообщением


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

Вот оно что... получается, нагрузка останется примерно такой же тогда. Потестирую и поправлю текст, спасибо!

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу