Прежде всего, доброго времени суток, господа, и отдельно низкий поклон Скаю. "Избавляемся от лагов и фризов в лэйте" - если не полностью, то играть во всяком случае становится на порядок приятнее, даже на третьей скорости, и павнов перестаёт дёргать. Привожу решения, которые лежат на поверхности, и если гуру и ветераны что-либо добавят, или подскажут что ещё можно безболезненно удалить, буду рада. Тебе понадобится Sublime Text и полторы минуты свободного времени. Если ты не сделал бэкап сейва - это только твои проблемы. Проверь, чтобы были включены регулярные выражения при поиске: нажми ctrl+F и найди эту кнопу (внизу, слева от строки поиска). 1) Во-первых, чистка всем известной incidentQueue. Нажимаешь ctrl+H, вставляешь в строку поиска выражение: <queuedIncidents>[\s\S]*</queuedIncidents>([\s]*)В строку замены: <queuedIncidents />\1Нажимаешь Replace. 2) Чистим историю убиенных. Ctrl+H, в строку поиска: (<pawnsDead>)[\s\S]*</li>([\s]*</pawnsDead>)В строку замены: \1\2Replace. 3) Чистим карту от объектов "Filth". Существует несколько их типов, можно избавиться ото всех сразу. Ctrl+F, в строку поиска: <thing Class="Filth">[\s\S]*?</thing>Нажимаешь "Find all" и Delete на клавиатуре. Если интересуют отдельные типы, то в строку поиска вставляешь один из ниже приведённых вариантов: <thing Class="Filth">([\s]*)<def>FilthDirt</def>([\s\S]*?)</thing> <thing Class="Filth">([\s]*)<def>BuildingRubble</def>([\s\S]*?)</thing> <thing Class="Filth">([\s]*)<def>FilthAnimalFilth</def>([\s\S]*?)</thing> <thing Class="Filth">([\s]*)<def>FilthBloodInsect</def>([\s\S]*?)</thing> <thing Class="Filth">([\s]*)<def>FilthBlood</def>([\s\S]*?)</thing> <thing Class="Filth">([\s]*)<def>FilthSlime</def>([\s\S]*?)</thing> <thing Class="Filth">([\s]*)<def>RockRubble</def>([\s\S]*?)</thing> 4) У некоторых игроков воспроизводятся ошибки ExplosionManager-а с null references (чекай лог). Когда до меня дошло наконец его почистить, сейв ужался аж на 5 мб. Ctrl+H, в строку поиска: (<li Class="ExplosionManager">[\s]*)<[\s\S]*?>([\s]*</li>)В строку замены: \1<explosions />\2 У меня не осталось того сейва, точный вид забитого мэнеджера я, увы, не помню. Если регулярка вдруг не работает, просто поправь запись руками так, чтобы она приняла вид: <li Class="ExplosionManager"> <explosions /></li>
Повторюсь, это самые очевидные вещи, что пришли мне на ум. Будет время, ещё поковыряюсь. И если кто знает от каких объектов можно ещё избавиться - пишите.
Можно все выше описанное как нибудь запилить в ато запускатор и абновлятор? - чтобы при каждом запуске игры через лаунчер он автоматом чистил все то, что тормозит.
Я что-то не так делаю или это не работает. Каждый раз выдаёт ошибку и не запускает обработанный сэйв. Пытался со всеми пунктами, только с первым, вторым, вторым и первым. Не работает.
Можно поподробнее описать как открывать этот Sublime Text и куда вводить команды? тут не все программисты
Агась. Либо через "Файл"->открыть файл. В самой программе. Либо перетащить сам сейв в программу. Зажимате ЛКМ и перетаскиваете на интерфейс программы. Либо "Открыть с помощью"-> Сублайм текст. Там есть такая функция : "Поиск по файлу". Вбиваете фразу, которая показана выше. Так же с найденными результатами можно манипулировать : заменить найденные строки на другие , либо удалить найденные.
У меня тоже, выводит ошибку и не запускает сэйв. Но, я попытался сделать 1 пункт не в программе а вручную, через блокнот, и всё нормально работает.
Спойлер: оффтоп для Arhangel Sublime и Notepad (он же Блокнот) являются самостоятельными программами для работы с текстовыми файлами. Notepad встроен в Windows. Обе программы почти одинаково нормально работают с текстом. Но некоторым Sublime больше нравится за оформление, к тому же она очень помогает при работе с файлами html, которые тоже текстовые.
Вот эту ошибку выдает Спойлер: Ошибка Exception from asynchronous event: System.FormatException: Input string was not in the correct format at System.Int32.Parse (System.String s) [0x00000] in <filename unknown>:0 at Fluffy_Tabs.PawnPrioritiesTracker+<>c.<IntsFromString>b__16_0 (Char c) [0x00000] in <filename unknown>:0 at System.Linq.Enumerable+<CreateSelectIterator>c__Iterator10`2[System.Char,System.Int32].MoveNext () [0x00000] in <filename unknown>:0 at System.Collections.Generic.List`1[System.Int32].AddEnumerable (IEnumerable`1 enumerable) [0x00000] in <filename unknown>:0 at System.Collections.Generic.List`1[System.Int32]..ctor (IEnumerable`1 collection) [0x00000] in <filename unknown>:0 at System.Linq.Enumerable.ToList[Int32] (IEnumerable`1 source) [0x00000] in <filename unknown>:0 at Fluffy_Tabs.PawnPrioritiesTracker.IntsFromString (System.String line) [0x00000] in <filename unknown>:0 at System.Linq.Enumerable+<CreateSelectIterator>c__Iterator10`2[System.String,System.Collections.Generic.List`1[System.Int32]].MoveNext () [0x00000] in <filename unknown>:0 at System.Collections.Generic.List`1[System.Collections.Generic.List`1[System.Int32]].AddEnumerable (IEnumerable`1 enumerable) [0x00000] in <filename unknown>:0 at System.Collections.Generic.List`1[System.Collections.Generic.List`1[System.Int32]]..ctor (IEnumerable`1 collection) [0x00000] in <filename unknown>:0 at System.Linq.Enumerable.ToList[List`1] (IEnumerable`1 source) [0x00000] in <filename unknown>:0 at Fluffy_Tabs.PawnPrioritiesTracker.LoadPrioritiesFromString () [0x00000] in <filename unknown>:0 at Fluffy_Tabs.PawnPrioritiesTracker.ExposeData () [0x00000] in <filename unknown>:0 at Verse.PostLoadInitter.DoAllPostLoadInits () [0x00000] in <filename unknown>:0 at Verse.Game.LoadGame () [0x00000] in <filename unknown>:0 at Verse.SavedGameLoader.LoadGameFromSaveFile (System.String fileName) [0x00000] in <filename unknown>:0 at Verse.Root_Play.<Start>m__736 () [0x00000] in <filename unknown>:0 at Verse.LongEventHandler.RunEventFromAnotherThread (System.Action action) [0x00000] in <filename unknown>:0 Verse.Log:Error(String) Verse.LongEventHandler:RunEventFromAnotherThread(Action) Verse.LongEventHandler:<UpdateCurrentAsynchronousEvent>m__733() Could not execute post-long-event action. Exception: System.NullReferenceException: Object reference not set to an instance of an object at Verse.VerbTracker.get_PrimaryVerb () [0x00000] in <filename unknown>:0 at Verse.CompEquippable.get_PrimaryVerb () [0x00000] in <filename unknown>:0 at Combat_Realism.CompFireModes.get_verb () [0x00000] in <filename unknown>:0 at Combat_Realism.CompFireModes.InitAvailableFireModes () [0x00000] in <filename unknown>:0 at Verse.LongEventHandler.ExecuteToExecuteWhenFinished () [0x00000] in <filename unknown>:0 Verse.Log:Error(String) Verse.LongEventHandler:ExecuteToExecuteWhenFinished() Verse.LongEventHandler:UpdateCurrentAsynchronousEvent() Verse.LongEventHandler:LongEventsUpdate(Boolean&) Verse.Root:Update() Verse.Root_Play:Update()
сохранил прогой сейв ничего не изменяя и сейв не загрузился. видимо проблема не в удалении строк. разница сейвов после сохранения прогой(внизу оригинал): Спойлер внизу оригинал справа оригинал notepad++ все норм чистит
Состряпал простенькую программку для чистка сейва по этой статье в один клик: -добавил еще чистку истории(на производительность врядли повлияет) -чистка pawnsAlive других фракций(немного добавляет производительности, но лидеров фракций не стоит трогать!) http:// upload.ee/files/6996949/SaveGC.exe.html Спойлер Обновление v0.2: -некоторые фиксы -возможность очистки памяти всем персонажам -возможность очистки логов взаимоотношений персонажей -удаление определенных объектов с карты скопом Скачать VirusTotal Спойлер: Скриншот Обновление v0.3(финал): -удаление персонажей и построек Скачать VirusTotal Спойлер: Скриншот