Пользователь |
Сообщение: И опять про устранение лагов :) (Тема#18450) |
Iks
майор
Возраст: 35
С нами с 25.04.07
Посты: 1159
|
Тема уже конечно убсуждалась, но вот столкулся я с такой фигней, что при пинге 5-15, я уже второй день наблюдаю как мои телепезы просто напросто пролетают насквозь...
Вспомнил что батла настроена под пинг 100, думаю нада бы поднастроить под свой пинг, чтобы вернуть на место хитбоксы. Но тут возник один вопрос... usersettings.con, отсутствует вообще. Да я пробывал прописывать команды через консоль, но нужного эфекта я так и не добился, я вообще подумал что до задницы все что я меняю, если записать то мои изменения некуда.
|
|
|
Iks
майор
Возраст: 35
С нами с 25.04.07
Посты: 1159
|
Почитав пару статеек по поводу клиент-серверного общения в играх могу высказать своё мнение о этих настройках.
Чтобы не было читеров и подмены информации о попаданиях и повреждениях вся инфа подобного рода и весь игровой мир обсчитывает сервак. Из-за того что между ним и клиентом существует задержка в передачи инфы используют 3 основных механизма коректировки. Компенсация задержки, интерполяция и экстраполяция.
GSDefaultLatencyCompensat ion 0.100000
Вы посылаете пакет на сервак о том что выстрелили челу бегущему за угол прямо перед самым углом в хэд. Сервак получил от этого чела (бегущего за угол) инфу о его положении раньше вашей тк допустим у него лучше пинг. Однако благодаря компенсации "лагов" сервак берёт из текущего положения спрятвшегося за углом чела вычитает время компенсации и определяет где он был в прошлом в момент вашего выстрела. таким образом сервак откатывает реальное положение бедалаги за углом и засчитывает уме хиты. Те чел с плохим пингом при правильной настройки компенсации получается попадает в того у кого пинг лучше. это вызывает парадокс для чувака с хорошим пингом который спрятался за угол и он в шоке от того что его убили а для чела с плохим пингом всё вроде бы и в норме - он убил гопника ещё до угла. Отсюда вывод - это значение должно быть равно вашему пингу.
Работу этого параметра явно видно из ролика где чуваки бегущие параллельно среляюют друг в друга слегка ссзади и убивают. Это значит что он снимали этот ролик на серваке где имеют пинг меньший 100 а это значит что исходя из дефолтного конфига сервак делает откат модели игрока в прошлое на 100мс но! в реале надо было сделать откат не так сильно а допустим на 60мс (при пинге 60) - вот и получается что чел стрелять должен чуть назад.
GSExtrapolateFrame 0
значение либо 0 либо 1. 1 значит включить учёт экстраполяции а 0 значит забить на неё.
GSExtrapolationTime 1200
это метод борьбы с потерями пакетов. допустим вы при игре лаганули и ваш комп недополучил пакетик с координатами врагов и их моделями на карте. чтоже тогда врубается механизм экстраполяции и ваш клиент (ваша тачка) пытается достроить положение врага методом предсказания его перемещений основываясь на последних пакетах полученных с сервака (координаты, скорость , вектор движения и тд). думаю многие замечали как при зависании коннекта в игре машинка к приеру вылетает за область дороги и взлетает в небеса. когда те или иные объекты основываясь примерно на своём предыдущем движении начинают двигаться по той траектории куда они двигались раньше и клиент при этом даже не додумывает что танк не может летать =). значение данного параметра говорит о том в течении какого периода времени в мс ваша машина будет предсказывать будущее положение объектов на карте. ставить много это равносильно тому что ваш компрьютер в итоге при больших лагах в конекте предскажет вам что ваш враг улете на танке в облака. маленькое значение не вызовет таких глюков но тогда будут лаги связанные с потерей пакетов и картинка на вашей машине уже будет обновлятся только после получения инфы с сервака те рывками.
GSInterpolationTime 100
компы как правило держат фпс на высоком уровне ( к примеру 50фпс что соответствует 50 обновлениям в секунду) и канал инета не поспевает за этим. получается что для фпс 50 надо иметь пинг в 50 обнослений в секунду те 20мс. а если у меня видео легко держит 100фпс то пинг равен 1мс =). отсюда следует применение интерполяции, те предсказание положения врагов для сглаживания картинки. те получается что прежде чем вам видюха отрендерит модель игрока ваш комп 2 раза обратится к серваку и потом ваш проц просчитает промежуточное положение модели между двумя обращениями которое ваша видюха собственно и отрендерит. те получается что реально вы получили все данные о игроке в моент времени Х потом получили данные в момент времени Х + дельта равная времени задержки через которое пришёл второй пакет. потом основываясь на этих данных ваш проц предсказывает плавную траекторию модели игроков врага на серваке и их движение. те этот параметр должен быть как минимум равен вашему пингу или меньше той планки до которой может ваш пинг упасть. ставить параметр ещё ниже не смысла тк ваш пинг не даст вам возможность сократить время между двумя пакетами (время интреполяции) менее чем время на прохождение физичски пакетов. в идеале должно совпадать с вашим пингом и с DefaultLatencyCompensatio n. если пакет всё же теряется то врубается компенсация данных потерянных а именно механизм экстраполяции - предсказания содержимого потерянного пакета. после получения очередного пакета ошибки предсказания будут устранены сервером. наверно замечали как вроде бы вы прошли вперёд как вдруг при лагах вас сервак возвращает почти в ту же позици где вы и были. всё это происходит при резком подскоке пинга и сопровождается лагами и дёрганьями (каждый раз ваш клиент основываясь на корректировках серваком ваших неверных предсказаний правит положение моделей). Ещё думаю видел как вас удивают из промежуточного положения (чел ещё не лежит но уже и не стоит) хотя это как бы и не возможно.
всё это тока моё имхо и мои догадки так что на истину не претендует. особенно мне не понятно почему при дефолтном GSExtrapolateFrame 0
всё равно есть экстраполяция - те неверные предсказания объектов на карте при проблеме с коннектом. возможно либо существуют ещё и другие скрытые механизмы в бф2 отвечающие за это либо я не верно понял смысл этого параметра. второе что меня смущает это почему при подскоке пинга и лагах идёт корректировка именно вашей модели тоже и вы видете лаги и дёрганья - мне казалось что экстраполируются все модели кроме ваших тк о вашей модели сервак узнаёт от вас и ваших командах отданых ему. возможно это связанно с тем что сервак просто не может так резко переместить вашу модель вперёд ( крпимеру вы шли вперёд в моент подскока пинга) и основываясь на последних данных от вас и новых данных коректирует ваше положение в промежуточное между тем что было до подскока пинга и тем что вы видели на вашей стороне клинета.
(c) http://redthreat.clan.su/forum/6-18-1
|
|
|
Spaceman
Правдоборец
С нами с 31.01.07
Посты: 6704
|
Вот тут он:
Battlefield 2\mods\bf2\Settings
|
|
|
Battle
генерал
С нами с 21.03.07
Посты: 8227
|
Всегда делаю так:
GSDefaultLatencyCompensat ion 0.025000
SettingsManager.boolSet GSExtrapolateFrame 1
SettingsManager.U32Set GSExtrapolationTime 100
SettingsManager.U32Set GSInterpolationTime 100
Вроде норм, не жалуюсь...
|
|
|
Iks
майор
Возраст: 35
С нами с 25.04.07
Посты: 1159
|
Вот тут он:
Battlefield 2\mods\bf2\Settings
Хочешь прикол ? У меня его там нету... его ВООБЩЕ НЕТУ
Перебил батлу, не помогло, его сеовно как небыло так и нету. Скиньте мне его плиз...
Отредактировано !kS1k.sun 29.12.07 19:07. Причина редактирования: Причина не указана.
|
|
|
Spaceman
Правдоборец
С нами с 31.01.07
Посты: 6704
|
rem
rem Settingsfile automatically saved by bf2
rem
SettingsManager.boolSet GSClPunkBuster 1
SettingsManager.floatSet GSDefaultLatencyCompensat ion 0.100000
SettingsManager.boolSet GSExtrapolateFrame 0
SettingsManager.U32Set GSExtrapolationTime 1200
SettingsManager.U32Set GSInterpolationTime 100
SettingsManager.U32Set GSPerfLogAtPlayerCount 30
SettingsManager.stringSet GSPlayerName "приставка ник"
SettingsManager.boolSet GSShowNetGraph 0
SettingsManager.boolSet GSUseObjectCache 1
|
|
|
Battle
генерал
С нами с 21.03.07
Посты: 8227
|
Скиньте мне его плиз...
на, ток инфу свою вставь...
|
|
|
powerp
упырь с мелом
С нами с 20.06.07
Посты: 831
|
Категории расставлены в зависимости от влияния на хитбокс.
1.GSDefaultLatencyCompensat ion
тут уже все рассказали.
2.интерполяция - "сглаживание" заметно при большой скорости перемещения объекта. Никогда нельзя ставить на 0 так как бегущие пехотинцы будут буквально телепортироваться. Поискав в нете и поэкспериментировав несколько недель понял что значение 30-50 - самое оно. Тут я должен заметить что эти настройки актуальны только для низкого пинга, если же у вас высокий пинг(70+) лучше оставить все как есть. Еще важно заметить что для частой интерполяции важен хороший проц.
3.экстраполяция - влияет на хитбокс только при плохом инете. Но тут поможет смена провайдера а не экстраполяция
У меня по-какойто причине включений этой фигни приводило к лагам в игре и дисконнектам, но если кто-то захочет попробовать, то смело ставим GSExtrapolateFrame на 1 а GSExtrapolationTime пробуйте ставить по формуле (GSInterpolationTime х 12).
Всем советую поменять хотя бы первые две переменные и переучиваться стрелять в "то что видишь" а не в пустоту.
Все это я нарыл на tweakguides.com, bf2s.com
ЗЫ GSPerfLogAtPlayerCount 30 - народ с bf2s.com рекомендовал изменить на максимальное число игроков которые могут находиться на сервере на котором вы играете (т.е. для 1bf2 - это 64)
|
|
|
Iks
майор
Возраст: 35
С нами с 25.04.07
Посты: 1159
|
Ну что ... может что-то само номализовалось, может и нет, но после того какя вставил заранее настроенный юзерконфиг.кон на положенное ему место, первые 3 телепуза были 2 мишки в районе кабины и самолет Так что я надеюсь все так и осатнется.
Бока все еще наблюдаються ... но вроде не такие сильные. Будем играться дальше...
По моему я ничего не изменил, ведь если я меняю какой-то из параметров через консоль он должен поменяться в юзерконфиге... а он этого не делает.
Отредактировано !kS1k.sun 29.12.07 21:32. Причина редактирования: Причина не указана.
|
|
|
ZverPunk
майор
Возраст: 35
: Харьков
С нами с 27.10.07
Посты: 1493
|
ребят, если честно не понял ничего. Но с лагами боротся хочется. если можно скинте в личку по-подробней мануальчик.
зы пинг 120((
|
|
|
Iks
майор
Возраст: 35
С нами с 25.04.07
Посты: 1159
|
прочитай 2 пост поймешь все.
|
|
|
Krabat
капитан
Возраст: 48
: Украина, Луганск
С нами с 28.06.07
Посты: 647
|
Прикольно, но тоже не было файла... попробую поставить.
|
|
|
KillingSpree
капитан
Возраст: 116
: ОАЭ
С нами с 11.07.07
Посты: 581
|
И у меня его нет, а если его нет, то БФ к нему не обращается т.к. если б обращался и его небыло - были б проблемы. Скорее всего с новым патчем эти функции вшиты в какой-то другой файлик, к примеру Video.con (но это лишь догадка). Икс, эта статья по какой версии БФа?
п.с. И на мой взгляд, те у кого файлик этот существет, играли или заходили на свой акк в старом (1.3) БФе.
Отредактировано KillingSpree 30.12.07 21:35. Причина редактирования: Причина не указана.
|
|
|
Battle
генерал
С нами с 21.03.07
Посты: 8227
|
И у меня его нет
o_O В какой папке вы всё таки смотрите? Можно скрин?
на мой взгляд, те у кого файлик этот существет, играли или заходили на свой акк в старом (1.3) БФе.
Нет, не играли
|
|
|
KillingSpree
капитан
Возраст: 116
: ОАЭ
С нами с 11.07.07
Посты: 581
|
мля, и действительно
Я просто смотерл в папке в МоихДокументах, извиняюсь. Всё есть
|
|
|
KillMachine UA
генералиссимус
Возраст: 43
: Київ
С нами с 10.12.07
Посты: 25376
|
|
|
UAGs invisible
подполковник
Возраст: 45
: Ukraine, Odessa
С нами с 30.05.07
Посты: 3950
|
|
|
KillMachine UA
генералиссимус
Возраст: 43
: Київ
С нами с 10.12.07
Посты: 25376
|
Закопали такую тему душевную
|
|
|
UAGs invisible
подполковник
Возраст: 45
: Ukraine, Odessa
С нами с 30.05.07
Посты: 3950
|
|
|
Karsonito
старшина
С нами с 26.02.07
Посты: 212
|
все это интересно и замечательно, но почему нельзя было автоматически определять величину пинга, усреднять?
ну да ладно, маемо тэ, що маемо.
а статейка хорошая
|
|
|