Продвинутое управление автомобилем - impruvment steering handling

Туториалы
  • Я хочу быть краток, но тогда тема не будет охвачена полностью, потому начну издалека, я с 2017 года нахожусь на проекте, и с того же времени изучаю SIMFPHYS - движок внутри игры который симулирует транспорт, и использует нас с вами люби-имый сервер.
    Так же являюсь основателем самого крупного автодвижения сервера - STREET INSIDERS

    Кто хоть немного осведомлен о сервере и происходящем на нем, слышали о мне и знают как одного из лучших, или лучшего водителя сервера. И это все не спроста, я транслирую правильную идеологию отношения к вождению и предлагаю наиболее оптимальные решения задач возникающих на пути улучшения управления автомобилем.

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

    Кому оно точно полезно? - Для людей у которых комплектующие компьютера собраны актуальностью после 2013 года

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

    Мой старый сетап это пентиум-бич какого-то поколения на 2.1 герц, гтх240 нвидия и мертвая память с живыми 3 гигами оперативки, и на тот момент я уже делал очень сложные элементы управления благодаря руководству.

    Что из себя представляет оптимизация и откуда мы будем черпать великий скилл управления?
    Начнем с базы - net_graph - консольная команда что позволяет мониторить данные на клиенте и сервере, обратимся к тому что мы будем редактировать ради достижения своих целей.
    Описание

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

    Lerp - или же интерполяция кадров служит неким сглаживанием, на клиенте, которое убирает разрывы и дерганность движения, технология довольно хорошо показывает себя в тепличных условиях, но в случае гаррис-мода и его нагруженности, это делает картинку плачевной, и мы получаем продолжительные подвисания, от которых бы стоило избавиться, тут сможете подробнее ознакомиться с системой и ее работой. https://steamcommunity.com/sharedfiles/filedetails/?id=864504043

    Собственно, когда вы в первой заходите в игру и на сервер, то видите лерп в районе 62-120, что звучит ну очень вызывающе на фоне того что вам нужно управлять машиной, держим в голове что это ДОПОЛНИТЕЛЬНАЯ задержка на ваше нажатие, - input lag.

    Плавно переходим к фиксированию нажатия сервером - TickRate
    Описание
    Доброград выдает в районе 16 фпс в секунду, это значит что он может регистрировать в секунду лишь 16 ваших действий, на самом деле это не плохо для вождения, и плохо для стрельбы, но не забываем что у нас есть задержка на клиенте, соответственно часть тех нажатий что мы совершаем попросту исчезает, ведь наш клиент съедает их из-за того что занят оптимизацией нашей картинки для игры.

    И последнее - UPDATERATE
    Описание
    Это значение отвечает на то сколько максимально возможных “фпс” - тиков, мы можем отправить серверу, на деле есть идеальные значения для каждого сервера, но в случае гаррисмода, лучше отдать все ресурсы, и пускай сервер выборочно берет те, что сочтет наиболее нужными, из-за чего все наши нажатия будут регистрироваться.

    Выдохнем и приступим к оптимизации.

    gmod_mcore_test 1
    mat_queue_mode 2
    cl_threaded_bone_setup 1
    cl_threaded_client_leaf_system 1
    r_threaded_client_shadow_manager 1
    r_threaded_particles 1
    r_threaded_renderables 1
    r_queued_ropes 1
    studio_queue_mode 1

    Эти консольные команды, нагрузят нашу систему и дадут игре больше дышать, обрабатывать больше данных на единицу времени, что ну очень важно для нас, это буквально снимает оковы с рук игры.

    cl_interp 0
    cl_interp_ratio 0
    cl_updaterate 1000
    cl_lagcompensation 1

    ||Закидывать по в файл autoexec.exe по пути -

    “steamapps\common\GarrysMod\garrysmod\cfg”

    команды будут вводиться автоматически при заходе в игру, удаляются простым сносом файла, игра сама создаст чистый бланк при следующем презаходе||

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

    Какие подводные?

    Для слабых ПК - могут возникнуть проблемы с изображением и разрывами визуального контента сервера. Дергаются люди, пропы, колеса уходят вперед машины, видите неактуальную информацию сервера.
    Как фиксить? Перебором и удалением каждой из команд, поиском актуальных именно для вас наборов данных.

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

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

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

  • NekkafyN Nekkafy делает ссылку на эту тему
  • Проверю гайд в работоспособности на выходных, и отредактирую это сообщение на: положительное или отрицательное.

  • с cl_updaterate 1000 порофлил)
    updaterate - это не отправлять серверу, а получать от сервера
    и сервер не будет 1000 пакетов отправлять тебе никаким образом за секунду
    на сервере тикрейт явно меньше

  • @p0wer это кол-во обновления на клиенте, и не важно каким образом они достигаются, факт в том что это снижает лерп, чего и добиваюсь в конечном счете.

    Я же писал, завышенный рейт не делает хуже, сервер в конечном итоге выбирает наилучший пакет по ситуации, не делает хуже именно для езды, рега может страдать безусловно, ибо рассинхра между клиентом и сервером имеется, ты у себя визуально как бы попал, а на сервере нет, и наоборот, но вот в случае машин и в частности simfphys это работает иначе, им важна наименьшая задержка, и наибольшая пропускная способность.

    И повторюсь, updaterate исходя из названия и опять же материала, выставляет количество обновления на клиенте, это отправка и принятие - пропускная способность, завышая ее ты делаешь лишь лучше. И все же почему именно 1000? Потому что от этого числа зависит непосредственно лерп - задержка на клиенте, меньше тысячи, это ниже одного, что плохо сказывается, выше 10 лерп, уже совершенно не то, но и упарываться в 10 000 апдейта нет смысла, не кому не нужно обновление ниже одной МС.

  • Это сообщение удалено!
  • @Nekkafy

    cl_updaterate - Number of packets per second of updates you are requesting from the server
    

    Информация с официального Wiki движка Source.
    Поставив значение в 1000 запрашиваемых пакетов ты всё равно не будешь получать пакетов больше, чем тикрейт сервера, и ставить значение в 1000 смысла не имеет, вот и всё что я хотел сказать.

  • @p0wer повторюсь, открываешь net_graph, пишешь update rate 100, получаешь лерп - задержку на клиенте, в районе 62мс, ставишь рейт 1000, получаешь задержку одну мс, вот и вся разница

  • Сделал как сказано, только вот в autoexec я просто вписал команды. Сервер немножко подвисает, но это не критично. Водить стало легче и приятней, стрельба вроде тоже улучшилась.

  • @p0wer Обновляю информацию, гмод дает 1000 обновлений в секунду и это сильно грузит кудахтер, что крайне критично во время очень тинамичных сцен - езды в частности, с шутиногом еще гуд, вот собственно сейчас дропну актуальные настройки на текущий момент, максимально сбалансированные

  • net_maxpacketdrop 0
    cl_smooth 1
    cl_smoothtime .05
    cl_pred_optimize 2
    net_queued_packet_thread 1
    net_splitrate 1
    net_udp_rcvbuf 131072
    net_chokeloop 1

    net_compresspackets 0
    cl_downloadfilter all;net_maxcleartime 0;

    r_drawdetailprops 1;cl_detaildist 1024;cl_detailfade 0;r_decalstaticprops 0;cl_phys_props_enable 0;r_staticprop_lod -1;r_propsmaxdist 0;lod_TransitionDist -1;

    r_occlusion 1
    r_fastzreject 1
    mat_tonemapping_occlusion_use_stencil 0
    r_norefresh 1
    mat_forcemanagedtextureintohardware 0
    mat_requires_rt_alloc_first 0
    sv_logdownloadlist 0
    mat_forcehardwaresync 1
    mat_managedtextures 0
    mat_queue_mode -1

    lzma_persistent_buffer 1
    cl_always_flush_models 0

    gmod_mcore_test 1
    cl_threaded_bone_setup 1
    snd_async_fullasync 1
    snd_async_minsize 0

    cl_interp 0
    cl_interp_ratio 0
    cl_cmdrate 100
    cl_updaterate 60

  • У меня в таком сетапе вообще ноль фризов при любом онлайне, с условием прогруженной карты и отсутствием особо динамичных сцен на сервере, проще говоря лагает клиент, только когда лагает сервер или грузит много объектов за секунду

  • Сколько у тебя lerp пишет?

Похожие темы