Форум Trainsim

Форум Trainsim (http://www.trainsim.ru/forum/index.php)
-   MSTS - Об игре (http://www.trainsim.ru/forum/forumdisplay.php?f=17)
-   -   Очистка игры от неиспользуемого контента (http://www.trainsim.ru/forum/showthread.php?t=6451)

RC_Vinchenzo 04.03.2009 22:12

Очистка игры от неиспользуемого контента
 
Возникла идея написать софтину, чтобы почистить игру от неиспользуемых локов и вагонов, потому как места они стали занимать прилично. Может кто-то уже разбирался в этом, неохота изобретать велосипед во второй раз: вагоны и локи статики записаны прямо в сценариях, причем некоторые записаны повагонно, а некоторые - ссылками на сервисы, в которых даны ссылки на консисты; файлы траффика содержат только ссылки на сервисы. Все верно? Ничего не забыл?

ТЧМ3 Леха 04.03.2009 23:36

А Train Store не пробовал использовать для этого?;)

RC_Vinchenzo 04.03.2009 23:40

Пробовал, но ТрейнСтор выполняет несколько иные функции. Мне нужно убрать неиспользуемые локи и вагоны из игры, чтобы уменьшить ее объем. ТрейнСтор только выводит энги, ваги и консисты, этого недостаточно, я же хочу чтобы убирались папки целиком. :)

awaken 05.03.2009 01:52

я просто переношу неиспользуемые локи, консисты, и маршруты целиком в другие папки.
у меня сейчас всего 3 маршрута стоит (зилупе , александрово и один самопальный), и все быстро запускается

RC_Vinchenzo 05.03.2009 06:17

Скорость запуска не при чем, уменьшить ее помогает ТрейнСтор, просто при размере игры в 140 гигов "балласт" из неиспользуемых локов получается существенным. Меня сейчас главным образом логика размещения ссылок на ПС в сценариях интересует, верно ли я ее понял и описал?

awaken 05.03.2009 19:28

у трейнстора есть свои проблемы, вроде бы он с космосом не совместим.
а я использую космос

DeBUG 05.03.2009 19:56

Ищи может будет такая программа: [url]www.railserve.com/Computers/MSTS/Utilities/[/url]

Если напишешь, то делай, как СУБД с возможностью вывода информации в нужной форме. Уже писали про использования SQLite и прочего, а программу для сортировки и выборки, как правило пишут на скриптах, это особенно относиться к *nix и всяким PHPстам, Pythonистам и пр. web-человекам.

awaken 08.03.2009 14:19

[QUOTE=RC_Vinchenzo;74233]а некоторые - ссылками на сервисы, в которых даны ссылки на консисты; файлы траффика содержат только ссылки на сервисы. Все верно? Ничего не забыл?[/QUOTE]

файл Activity (.act) содержит
это сервис игрока:
Player_Service_Definition ( "szd_player_srv 20"
это сервис траффика:
Traffic_Definition ( "szd_traffik2 "
Service_Definition ( szd_traffik_srv1 31800

и некоторое количество статических вагонов/составов

сканируем сервисы, составляем список файлов:
"szd_player_srv 20.srv"
"szd_traffik_srv1.srv"
"szd_traffik_srv2.srv" и т.д.

в srv файле ищем строчку:
Train_Config ( "szd_2TE10M-3373 2975 40 mix1" )
это имя .con файла состава.

далее составляем список используемых консистов.
и из них вырезаем список использованных локов/вагонов, сливаем его с дргим списком (из самого сценария)

важно сохранить двухстроннюю связть "единица ПС" <-> "con файл"
для этого лучше наверное завести небольшую реляционную базу данных, как выше посоветовали

DigitOn 23.03.2009 02:22

Итак, тулза была написана в соответствии с описанием, которое предоставил [B]RC_Vinchenzo[/B].

Суть программы:
Программа предназначена для разделения установленного в игре ПС на 2 части - используемую в установленных сценариях и неиспользуемую.

И более подробное описание (алгоритм):
Программа сканирует папки маршрутов ACTIVITIES и SERVICES на файлы *.act и *.srv соответственно.
Файлы Activities сканируются на строчки вида:
EngineData (имя_файла имя_папки )
WagonData (имя_файла имя_папки )
Отсюда берутся имена папок подвижного состава. Эти папки переносятся из TRAINSET во временную папку TRAINSET_TEMP (в том же каталоге TRAINS).
Из файлов Services программа извлекает список файлов Consists (из строчек Train_Config(имя_консиста) ), которые также как и файлы Activities сканируются на EngineData и WagonData, и папки с подвижным составом также переносятся в TRAINSET_TEMP. Найденные файлы Consists переносятся из CONSISTS в CONSISTS_TEMP.
По окончании процесса папки TRAINSET и CONSISTS переносятся в папки TRAINSET_UNUSED и CONSISTS_UNUSED соответственно, а TRAINSET_TEMP и CONSISTS_TEMP в TRAINSET и CONSISTS.

В результате мы имеем папки:
CONSISTS, TRAINSET - в них хранятся используемые в сценариях единицы ПС.
CONSISTS_UNUSED, TRAINSET_UNUSED - а тут неиспользуемые единицы ПС.

Программа была протестирована мною, а также [B]RC_Vinchenzo[/B] на его 160 гиговой сборке MSTS. Найденные ошибки были устранены, поэтому вывожу программку на всеобщее обозрение.

Вот собственно и все. Пожелания/рекомендации/критика крайне приветствуются! :)

P.S. Скачать пока нигде нельзя, благодаря системе защиты от спама. [B]RC_Vinchenzo[/B], выложи пожалуйста сам...

RC_Vinchenzo 23.03.2009 06:13

[URL="http://www.rapidshare.ru/975729"]Утилита[/URL]

Для работы необходим [I]Microsoft Visual C++ 2008 SP1 Redistributable Package[/I]
[URL="http://www.microsoft.com/downloads/details.aspx?familyid=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&displaylang=en"]x86[/URL]
[URL="http://www.microsoft.com/downloads/details.aspx?FamilyID=ba9257ca-337f-4b40-8c14-157cfdffee4e&DisplayLang=en"]x64[/URL]

при моих данных:
папка с игрой 159 гб
роутс 97,2 гб
трейнс 60,5 гб
Прога пробежала этот объем где-то за 10 минут, выделив 25,5 Гб неиспользуемого ПС. Одним словом чудо, а не утилита.

RC_Vinchenzo 24.03.2009 13:03

нашелся неприятный глюк, если кто-то скачал, не спешите пользоваться.:(

malchik 24.03.2009 13:16

ждем-с

Ким Чен Ир 24.03.2009 13:20

[QUOTE=awaken;74411]у трейнстора есть свои проблемы, вроде бы он с космосом не совместим.
а я использую космос[/QUOTE]
ОФФ. Да вроде совместим, проблем не замечал. Обычно делаю так, запускаю нужный роут через трэйн стор, потом закрываю мстс, открываю космос, делаю нужную погоду и снова запускаюсь, либо опять через трэйнстор, либо сразу мстс.

DigitOn 25.03.2009 17:07

[QUOTE=RC_Vinchenzo;78352]нашелся неприятный глюк, если кто-то скачал, не спешите пользоваться.:([/QUOTE]

Скорее не глюк, а недоработка в логике работы :) Впрочем скоро будет новая версия.

RC_Vinchenzo 30.03.2009 23:07

[URL="http://depositfiles.com/files/hx4emk1wq"]Версия 1.2 билд 0002[/URL]
тестим :)

Модер, потри пожалуйста предыдущий пост.

DeBUG 30.03.2009 23:59

Занятно. Рекомендую отметиться на зарубежном ресурсе. Больше проживет программа и фанов порадует.

RC_Vinchenzo 31.03.2009 05:29

[B]DeBUG[/B]
Рановато на зарубежный :) там сейчас Digit-On хелп прикручивает и кнопку "вернуть все как было". Если есть какие-то пожелания по интерфейсу - излагайте пожалуйста.

malchik 31.03.2009 07:44

Итак, на выходе я получаю log.txt с кучей букв и цифр и если
неиспользуемого ПС много, то разгрести такой файл крайне проблематично)))
В более наглядном и удобном для чтения формате результат можно вывести?

RC_Vinchenzo 31.03.2009 07:51

[B]malchik[/B]
Какую форму ты считаешь более удобной? Что бы ты хотел там видеть?

malchik 31.03.2009 09:54

[QUOTE=RC_Vinchenzo;79734][B]malchik[/B]
Какую форму ты считаешь более удобной? Что бы ты хотел там видеть?[/QUOTE]

Чтобы список вываливался типа того, который получается
при использовании Активити Мастер на проверку наличествующего
ПС в сценариях...

Кстати, а почему бы не сделать так программу, чтобы она
по типу ТрэинСтор перекладывала неиспользуемый ПС в
отдельную временную папку с возможностью возврата его
в случае необходимости?

DigitOn 31.03.2009 18:33

[B]malchik[/B], Активити Мастер выдает список используемого ПС в сценарии с указанием наличия/отсутствия этого ПС. В нашей же программке в лог пишутся для каждого маршрута только те ПС которые были перенесены к нужным на данном этапе, если они были перенесены в "нужные" в результате обработки предыдущих маршрутов, то они туда не попадают. Однако, если включить опцию "Ошибки открытия файлов", то можно будет увидеть для каждого маршрута весь нужный ПС, только тот что уже был перенесен, будет отмечен ошибками открытия файлов.

Хочу еще заметить, что в отличии от Activity Master, программа не определяет список ПС для каждого сценария в отдельности на основе цепочки обработки файлов Активити->Траффик->Сервис. Программа обрабатывает отдельно папки с файлами ACT и SRV! Из ACT она берет лишь статичный ПС, а из SRV уже весь остальной.
Почему так!? - Потому что мы посчитали лишним строить список ПС для каждого сценария. Целью является построение списка используемого ПС для сценариев маршрута в целом, а, поскольку, в папке SERVICES все таки ничего лишнего быть не должно (только сервисы используемые в сценариях этого маршрута), то список нужного ПС берется напрямую из файлов сервисов + к этому список статичного ПС из файлов активити.

Поэтому в лог файл можно лишь вывести либо нужный ПС для всего маршура в целом, либо отдельно нужный ПС, найденный в файлах Activity (статичный), и ПС, найденный в файлах Services.

Чтож, попробую сделать лог-файл более удобочитаемым. Спасибо за пожелания и замечания! Постараюсь сделать лучше :)

А что касается перекладывания ПС во временную папку, собственно программа это и делает, неиспользуемый ПС перекладывается в папки: TRAINSET_UNUSED и CONSISTS_UNUSED. Обратное действие также уже реализовано, будет в новой версии. В ближайшее время постараюсь все доделать и выложить.

DeBUG 31.03.2009 21:28

Основа это чистка игры, от этого и отталкивайтесь, всё остальное это только трата времени. Нужна главная функция.

RC_Vinchenzo 31.03.2009 21:40

А результаты в общем-то очень хорошие, у меня, как у среднестатистического юзера МСТС, "ненужными" оказались около 30% (19.4 гб) папки [I]TRAINSET[/I] (до "разделения" весила 60 гб). Взвешивайте папки и выкладывайте свои результаты. Посмотрим, существенно ли прога может облегчить игру у среднего пользователя.


Текущее время: 19:37. Часовой пояс GMT +4.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim