-=XXX=-
  Forum
 
=> Еще не зарегистрирован?

Forum - Ошибка IWD Sum Mismatch, углублённое изучение

Ты находишься здесь:
Forum => Call of Duty 2 => Ошибка IWD Sum Mismatch, углублённое изучение

<-Назад

 1 

Вперед->


nikromant
(29 записей)
10.06.2009 11:40 (UTC)[цитировать]
Это будет длинная статья. Тем не менее, эта информация будет очень важна для администраторов своих серверов, особенно если вы уже сталкивались с известной ошибкой IWD Sum/Mismatch.

Фактически ошибка возникает , потому что info_string имеет лимит в 1024 знака , и ошибка получается из-за того что клиент не может (или не успевает выполнить основных операций, необходимых для проверки сервером идентичности (или легальности =) ) файлов клиента.

Давайте начнем с представления конечного варианта info_string:

Code:
Код
bg_fallDamageMaxHeight480bg_fallDamageMinHeight252g_synchronousClientssv_cheatssv_disableClientConsolesv_iwdNamesz__svr_csv z_svr_sound_aliases_for_dhc_map_pack_4 z_svr_sound_aliases_for_dhc_map_pack_2 z_svr_sound_aliases_for_dhc_map_pack_02 z_svr_sound_aliases_for_dhc_map_pack_01 z_svr_pam____202 z_dhc_mp1 zzz_mp_powcamp iw_15 iw_14 iw_13 iw_12 iw_11 iw_10 iw_09 iw_08 iw_07 iw_06 iw_05 iw_04 iw_03 iw_00sv_iwds-675245519 1058077270 1058077270 1058077270 1058077270 -635133705 2070676332 -149688453 181429573 -1449716526 780394069 -1333623355 -1980843666 1334775335 -621896007 1101180720 1046874969 1053665859 1842349204 -1652414412 1659111092 178615151 sv_pure1sv_referencedIwdNamesmain/z__svr_csv main/z_svr_sound_aliases_for_dhc_map_pack_4 main/z_svr_pam____202 main/iw_15 main/iw_13 main/iw_08 main/iw_07 main/iw_06 main/iw_03sv_referencedIwds-675245519 1058077270 -635133705 181429573 780394069 1101180720 1046874969 1053665859 1659111092 sv_serverid16sv_voicesv_voiceQuality1timescale1



Заметьте, что для этого info string характерно 1026 знаков, больше чем нужно для лимита на 2 знака (лимит соответственно 1024 знака, как было сказано выше . Я выяснил, что с удалением этих 2 знаков, сервер не выдал бы ошибку info sting.

Используя эти знания, мы теперь знаем точно, что содержится в info string. Мы можем использовать полученную информацию для того , чтобы администраторы серверов смогли уменьшить длину этого stirng'a.

Замечаю, что все результаты проведены на ОС WINDOWS. Я не запускал сервер на Ликунсе, поэтому ваше рузультаты могут совпасть ( а могут и не совпасть с моими результатами. Также, я беру на себя ответственность использования этой технологии. ВЫ ВСЁ ДЕЛАЕТЕ НА СВОЙ СТРАХ И РИСК.

Для начала, никто из нас не может менять большую часть настроек в string'e . Эти (представленные ниже , должны быть в любом случае.

Code: Код
bg_fallDamageMaxHeight
bg_fallDamageMinHeight
g_synchronousClients
sv_cheats
sv_disableClientConsole
sv_pure
sv_serverid
sv_voice
sv_voiceQuality
timescale



К счастью, эти данные составляют всего 188 знаков, соответственно оставляют нам 836 знаков, чтобы сервер запустился без ошибки. К остальным знакам относится настройки управления, Damage Control, или , как я люблю это называть в данном случае - "ghetto-riggin". Мы рассмотрим 4 основных назначения, находящихся в string'e. И рассмотрим каждый из них в отдельности.

1) sv_iwdNames

Code: Код
sv_iwdNamesz__svr_csv z_svr_sound_aliases_for_dhc_map_pack_4 z_svr_sound_aliases_for_dhc_map_pack_2 z_svr_sound_aliases_for_dhc_map_pack_02 z_svr_sound_aliases_for_dhc_map_pack_01 z_svr_pam____202 z_dhc_mp1 zzz_mp_powcamp iw_15 iw_14 iw_13 iw_12 iw_11 iw_10 iw_09 iw_08 iw_07 iw_06 iw_05 iw_04 iw_03 iw_00



Это список всех названий IWD файлов на вашем сервере (или на моём сервере, к примеру

Что мы можем сделать здесь, что уменьшить количество знаков ?

АУберите ненужные IWD файлы.
Если вы посмотрите внимательно на имена файлов, вы можете заметить, что файлы iw_01 и iw_02 пропущены. Но это не так. Они удалены ! Так как они содержат карты для сингла (single player's maps =) ) , они оказались бесполезны для моего выделенного мультиплеерного сервера. Также выяснилось, что сервер на Windows'e не препятствует удалению iw_11 и iw_12 файлам. Для меня это составило уже 4 файла, которые можно убрать с сервера.

Также убедитесь , что Вы не используете старых версий модов, которые не используются и только добавляют "себя" в список имён IWD .

БИспользуйте короткие имена для IWD файлов. IW немного помогли нам, оставив запас знаков до 5 штук каждый, но не создавайте их слишком много, так как опять таки они заполняют info_string

ВКомбинируете моды как только можете. Попытайтесь создать только серверный IWD файл, и такой же клиентский файл (грубо говоря, чтобы и у того и у другого название было одинаковое

ГТолько для серверов с доступом через папку fx_game : Вы можете извлечь serverside компоненты вашего мода в папке fx_game вашего сервера и окончательно удалить его IWD название из info_string'a . Это старый метод создания server-side-only модов, перед тем как патч 1.2 вернёт нам возможность '_svr_' naming

ДДля серверов без fx_game доступа, но с высокоскоростным HTTP Re-direct скомбинируйте (то бишь соедините server-side и client-side компоненты вашего мода в ОДИН IWD файл. Понятно, что клиент будет качать этот мод, но с redirect'om это займёт чуть больше секунды. Таким образом вы "спасаете" IWD файл от нахождения его названия в info-string'e

2) sv_iwds

Code: Код
sv_iwds-675245519 1058077270 1058077270 1058077270 1058077270 -635133705 2070676332 -149688453 181429573 -1449716526 780394069 -1333623355 -1980843666 1334775335 -621896007 1101180720 1046874969 1053665859 1842349204 -1652414412 1659111092 178615151



Это внутриигровая проверка знаков/кодов. Она используется, чтобы удостоверится, что на сервере используется одинаковая с клиентом версия IWD.

Что мы можем сделать, чтобы уменьшить количество знаков в string'e ?

A)Еще раз, удалите все ненужные IWD .

БСоедините все моды в один iwd файл, где это возможно. Это не только уменьшит количество знаков по отдельным IWD, но так же уменьшит число контрольных сумм. Двойной бонус за это !

ВТолько для серверов с доступом к папке fx_game: Извлечение serverside только папки / секции mods и соответственно удаление IWD файла так же избавляет от контрольной суммы в info_string'e .

**** Уточнение о sv_iwdNames и sv_iwds , применяемых к отдельным/выборочным (custom) картам***

Мы ничего не можем сделать с этим. Название IWD будет в любом случае добавлено. Место, где оно сохраняется в info_space, называется sv_referencedIWDnames , о коротом я сейчас расскажу

3) sv_referencediwdNames

Code:
Код
sv_referencedIwdNamesmain/z__svr_csv main/z_svr_sound_aliases_for_dhc_map_pack_4 main/z_svr_pam____202 main/iw_15 main/iw_13 main/iw_08 main/iw_07 main/iw_06 main/iw_03



Это список всех активно загружаемых сервером IWD имён. Заметьте слово "загружаемых" , так как это будет очень важно при применение custom карт

Что мы можем сделать, чтобы уменьшить количество знаков в string'e ?

А Еще раз, соедините все моды в один IWD файл, дабы уменьшить общее количество IWD имён

Б Короткие названия IWD также важны, поскольку число знаков в загружаемых IWD рассчитывается ДВАЖДЫ ! Один раз в sv_iwdNames и один раз в sv_referencediwdNames

В Только для серверов с доступом к папке fx_game: Вы можете извлечь компоненты serverside вашего мода в папку fx_game вашего сервера и окончательно УДАЛИТЬ название IWD из info_string'a

Г Для серверов без fx_game доступа, но с высокоскоростным HTTP Re-direct скомбинируйте (то бишь соедините server-side и client-side компоненты вашего мода в ОДИН IWD файл. Понятно, что клиент будет качать этот мод, но с redirect'om это займёт чуть больше секунды. Таким образом вы "спасаете" IWD файл от нахождения его названия в info-string'e . ДВАЖДЫ !

4) sv_referencedIwds

Code:
Код
sv_referencedIwds-675245519 1058077270 -635133705 181429573 780394069 1101180720 1046874969 1053665859 1659111092



Это контрольная сумма всех загружаемых IWD файлов. Это косяк IW , так как это, по существу, повторения номеров в sv_iwds. Но я предполагаю, что это сделано для того, чтобы проще осуществлялось соответствие имён файлов с их контрольными суммами и они вероятно не ожидали проблему длины info_string'a

Что мы можем сделать, чтобы уменьшить количество знаков в string'e ?

Та же самая информация, применяемая к sv_iwds , применяется и здесь, но с необходимостью удаления IWD файлов (так как они не будут загружаться в любом случае

А Объединение модов в один IWD файл не только очевидно уменьшит число IWD имён , но также уменьшит и общую контрольную сумму, что даст УЧЕТВЕРЁННЫЙ БОНУС ! (при активной загрузке объединенного IWD файла . Вы только что убрали потраченное впустую место в sv_iwdnames, sv_iwds, sv_referencediwdNames, и sv_referencediwds. То , что Вы сделали, очень уменьшит количество знаков в Вашем info_string'e

Б Только для серверов с доступом к папке fx_game: извлечение только serverside папки модов и удаление IWD файла также избавит вас от ТОЙ контрольной суммы в info_string'e ! Бонус !


Далее. Хочется сделать важное замечание о баге в custom maps, который я назвал "sound csv bug". Для тех кто не в курсе поясняю : это проблема CODa 2 , когда сервер автоматически загружает (смотри вышеупомянутые IWD файлы soundaliases/*.csv файлы ВСЕЙ кастомной карты , даже если эта карта активно не играется/используется.

Это вызывает 2 проблемы :

1. Когда конектится клиент, он будет вынужден скачать все "загружаемые" (упомянутые IWD файлы, имеющиеся на сервере. Это означает что клиент должен будет скачать каждую SINGLE CUSTOM карту или маппак прежде, чем клиент сможет играть, даже если в настоящее время на сервере запущена STOCK (хз как перевести =) ) карта

2. Вторая проблема непосредственно касается нашей темы, то есть IWD Sum/Mismatch . Если Вы загрузили каждую карту, соответственно у каждой будет этот sound csv bug и карта будет внесена не только в sv_iwdnames и sv_iwds, но также и в sv_referencediwdNames и sv_referencediwds.

Чтобы работать аккуратно с csv bug, который позволит вашим игрокам скачивать ТОЛЬКО карту, которая запущена в данный момент и "спасти" свободное место в info_string'e , делаем следующее:

Вариант 1. Лучший вариант, но только для тех кто имеет доступ к папке fx_game

1) создаем директорию в вашей папке fx_game под названием "soundaliases" (без кавычек

2) Откройте каждый IWD файл в custom карте (или маппаке , извлеките содержимое из папки soundaliases и перенесите его в свою , толькосозданную, папку с аналогичным названием. (fx_game/soundaliases). Не удаляйте файлы из IWD файла

3) Поместите все IWD файлы в /main директорию

Вариант 2.. Не лучший вариант, поскольку он осуществляется в большее количество ходов и трубует добавление IWD , но если Вы не имеете доступа в fx_game, то лучше воспользоватся этим вариантом

1) Создайте новую папку на вашем диске C: под названием ":soundaliases" ( без кавычек

2)Откройте каждый IWD файл в custom карте (или маппаке , извлеките содержимое из папки soundaliases и перенесите его в свою , толькосозданную, папку с аналогичным названием. Не удаляйте файлы из IWD файла

3) Как только вы "соскладируете" все csv файлы в эту директорию, упакуйте её в архив ZIP (обязательно. Это очень важно, чтобы структура только созданных файлов была такой же, как и у оригинала

4) Присвойте вашему .zip файлу имя "z__svr_" + специфичный только для вашего сервера текст (обратите внимание, что 2 подчёркивания после z сделано намеренно . После этого проверьте, чтобы не было конфликтов с другим сервером

Замечание 1: Если вы не хотите особо парится со свободным местом в string'e , то можете оставить файлы без ключа _svr, оставив при этом 2 подчёркивания после z

Замечание 2: Также имейте ввиду, как только вы добавите как то новый IWD файл (карту , мод , вам нужно будет создать новый скомбинированный IWD , предварительно перегнав его по вышеописанным параметрам

5) Создайте формат вашего .zip файла в .iwd , просто переименовав его

6) Поместите созданный .iwd файл в /main директорию вашего сервера, наряду с остальными картами и файлами

~~~~~~~~~~~~~~~~~~~~

http://www.wormsworld.net/
nikromant
(29 записей)
10.06.2009 11:42 (UTC)[цитировать]
А вот информация от меня на эту тему iwd sum mismatch от того же автора.

IWD Sum/Mismatch - частично симптом проблемы звукового файла .csv. Тем не менее, используя файловую систему Quake 3 опытный админ сервера может держать в ротации 100 самодельных карт и при этом загружать каждую только тогда, когда ее загружает сервер (так было в CoD1 и UO).
(ну и есессно добавляет в инфо_стринг от каждой карты


Решение от worm'a:
1) Скопировать (НЕ удалять .csv файл из каждой самодельной карты.
2) Скомбинировать все .csv файлы в один IWD файл.
3) Назвать IWD файл так, чтобы он шел по алфавиту после каждой кастомной карты на сервере.

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

Хотя это увеличит info_string на один .csv IWD файл, но при этом сэкономит место в info_string, если у вас более 2 самодельных карт на сервере! Вместо посылки info_string для всех IWD файлов каждой самодельной карты на сервере, вы посылаете только стринг загруженной в настоящий момент карты и стринг самодельного .csv IWD. Также, это вынуждает сервер работать так, что игроки должны загружать только одну карту за раз (когда сервер загружает карту, и сохраняет целостность оригинального IWD с картами. Это значит IWD файл будет действительным на всех серверах с кастомными картами, использующих такой же 'неизменный' IWD файл с картами, как выпущенный картоделом.

С этим вы можете иметь 100 самодельных карт на своем сервере и они будут загружаться только когда надо и вы не столкнетесь с проблемой IWD sum/mismatch error (при условии, что ваши моды состыкованы с info_string и у вас нет слишком много карт ссылающихся друг на друга.



1. но я все равно ограничен 4-5 самодельными картами + модом?
2. но если маппак, то все карты будут загружаться по-прежнему вместе?

Ответ:
1. нет, info_string должен только посылать инфо о текущих файлах обрабатываемых на сервере. Когда сервер грузит самодельную карту он должен обрабатывать только один IWD файл. Вместо этого, из-за .csv файлов, он обрабатывает каждый файл самодельной карты, который содержит .csv файл внутри.
2. когда клиент загружает с сервера, он загружает целиковые IWD файлы, соответственно, качать придется весь ивд файл если даже там все 100 карт...



Тем всего: 13
Записей всего: 40
Пользователей всего: 860
Сейчас онлайн (зарегистрированные пользователи): Никто crying smiley
 
 
  Всего здесь было 45277 посетителей  
 
Diese Webseite wurde kostenlos mit Homepage-Baukasten.de erstellt. Willst du auch eine eigene Webseite?
Gratis anmelden