doom2d.org
https://www.doom2d.org/forum/

[0.667b] Улучшить реакцию игрока на клавиши при r_interp=1
https://www.doom2d.org/forum/viewtopic.php?f=36&t=3074
Page 1 of 1

Author:  Jabberwock [ 28 Feb 2023, 21:38 ]
Post subject:  [0.667b] Улучшить реакцию игрока на клавиши при r_interp=1

Не секрет, что при r_interp=1 управление становится несколько ватным.
Было бы очень здорово это пофиксить.

У ЧД есть пара мыслей:

Dmitry D. Chernov» управление это проблема не интерполяции, а того, что оно привязано к UPS. все нормальные игры считают свою логику примерно вполовину реже, чем собираются выдавать fps, так что тут всё правильно, иначе бы тупо проца не хватало

Dmitry D. Chernov» ещё мб там косяк в том, что интерполяция считается от предыдущего кадра, а не от текущих скоростей объектов. тогда да, теряем тик на этом и получаем вату

Jabberwock» а вот это можно пофиксить?

Dmitry D. Chernov» можно и нужно. создай багрепорт на форуме, опиши вату и сошлись на обе мои идеи (либо криво интерполируем, либо управление, либо и то, и другое)

Author:  DeaDDooMER [ 01 Mar 2023, 02:28 ]
Post subject:  Re: [0.667b] Улучшить реакцию игрока на клавиши при r_interp

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

Author:  Jabberwock [ 01 Mar 2023, 09:53 ]
Post subject:  Re: [0.667b] Улучшить реакцию игрока на клавиши при r_interp

Оффтоп:

Image


Author:  Чёрный Думер [ 01 Mar 2023, 12:47 ]
Post subject:  Re: [0.667b] Улучшить реакцию игрока на клавиши при r_interp

DeaDDooMER» без пропуска тика любые решения будут всего лишь костылём, пытающимся предсказать будущее вперёд на 27.7 мс.
Почему же? Нам ведь известны текущие скорости всех объектов в промежутке между тиками.
Как только наступит следующий тик, координаты объектов будут увеличены на свою скорость, после чего уже она будет пересчитана.
Значит, в промежутке можно спокойно считать LERP( coord, coord+speed, (next_tick - NOW()) / tick_delta ) для X и Y. Или я что-то упускаю?

DeaDDooMER» и эти костыли без забавных эффектов не обойдутся.
Например? У нас же нет больше никаких факторов, кроме скорости, да и не может их быть, по идее.

DeaDDooMER» уверен что даже полный просчет промежуточных тиков не обойдется без эффектов и/или кучи особых случаев.
Так нам надо считать не промежуточные тики, а промежуточные кадры. Тиков должно быть 36 в секунду и точка, здесь у нас как раз всё нормально.
Я умудрялся делать такое даже в GameMaker 8.1, хотя тики там жёстко привязаны к кадрам.
Вот ссылка (может потребоваться VPN): https://www.ganggarrison.com/forums/index.php?topic=38250.0

Author:  DeaDDooMER [ 01 Mar 2023, 15:47 ]
Post subject:  Re: [0.667b] Улучшить реакцию игрока на клавиши при r_interp

Черный Думер wrote:
Или я что-то упускаю?
Упускаешь. Должен быть не speed, а speed_from_next_tick. Скорость сохраненная в объекте уже устаревшая на момент рендеринга. А скорость для следующего тика в общем случае не предсказуема, так как зависит от сайд эффектов в виде мясных пальцев человека.

Author:  Чёрный Думер [ 12 Mar 2023, 00:16 ]
Post subject:  Re: [0.667b] Улучшить реакцию игрока на клавиши при r_interp

DeaDDooMER» А скорость для следующего тика в общем случае не предсказуема, так как зависит от сайд эффектов в виде мясных пальцев человека.
А её и не надо предсказывать в общем случае. У тебя само получится так, что если предсказание разошлось с реальностью (т.е. если мы наинтерполировали игрока не в ту сторону, потому что в следующем тике человек палец на противоположную кнопку перекинул), то до следующего тика мы будем интерполировать к новому предсказанию уже не от текущих координат игрока, а от разошедшегося предыдущего предсказания. Плавность никуда не исчезнет (даже рывка не будет), а вот лаг пропадёт.

То есть здесь получается надежда на обоснованное предположение, что чаще мы всё-таки предсказываем то, что нужно. Потому что вырожденных случаев только два: смена управления в момент между тиками и телепортация игрока. Второй можно обрабатывать явно.

Author:  DeaDDooMER [ 12 Mar 2023, 00:41 ]
Post subject:  Re: [0.667b] Улучшить реакцию игрока на клавиши при r_interp

Картинка на больших скоростях будет сильно расходиться с реальностью
Меняешь шило на мыло

Author:  Чёрный Думер [ 12 Mar 2023, 00:49 ]
Post subject:  Re: [0.667b] Улучшить реакцию игрока на клавиши при r_interp

DeaDDooMER» Картинка на больших скоростях будет сильно расходиться с реальностью
Можно впилить ограничение по скорости. Если слишком большая, то пусть с рывками летает. Но это ещё посмотреть бы, как оно в действительности расходиться будет.

DeaDDooMER» Меняешь шило на мыло
Не могу согласиться. Все эти проблемы в той или иной степени решаемы, в отличие от чудовищно раздражающего лагающего ввода.

Author:  DeaDDooMER [ 12 Mar 2023, 14:00 ]
Post subject:  Re: [0.667b] Улучшить реакцию игрока на клавиши при r_interp

Занимайся. Только не ломай как есть сейчас (т.е. отдельным режимом). УМВР и ничего не лагает.

Author:  Чёрный Думер [ 12 Mar 2023, 18:42 ]
Post subject:  Re: [0.667b] Улучшить реакцию игрока на клавиши при r_interp

DeaDDooMER» Занимайся.
Хорошо, но это уже скорее после вливания renders_updated в master, уж слишком много всего у тебя там поменялось.

DeaDDooMER» Только не ломай как есть сейчас (т.е. отдельным режимом).
Да, постараюсь сделать как r_interp 2. Если по отзывчивости окажется лучше, чем нынешний вариант, то просто поменяем их местами.

DeaDDooMER» УМВР и ничего не лагает.
Это вопрос восприимчивости. Скажем, я в упор не замечал присущий GameMaker лаг ввода всё то время, что играл в сделанные на нём игры, но как только попробовал gm8x_fix, то без него уже больше совсем не могу. А суть лага там была похожая: кадр рендерился, но на экран выводился только в начале следующего тика.

Page 1 of 1 All times are UTC + 3 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/