Войти
ПрограммированиеФорумОбщее

Управление аркадной гоночной машинкой с клавиатуры. (2 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 1 2 3 4 Следующая »
#15
8:03, 15 мар. 2019

Возможно стоит попробовать разметить карту. Нарисовать примерный маршрут и увеличивать ускорение отклонения руля если оно способствует приближению к оптимальному маршруту и уменьшать - если отдалению, так же повышать эффективность торможения ближе к местам где оно нужно и т.п.
Успешные гонки типо FH4 так и делают и можно заметить, что при использовании ассистов довольно сложно разогнаться прямо перед повтором или крутануть руль критично сильнее, чем требуется, хотя в резкие повороты входить по прежнему получается.
Естественно коэффициенты правильно подобрать будет сложно, потому что с одной стороны они должны помогать играть эффективно, а с другой - игрок должен их не замечать и чувствовать как будто это всё он сам делает + в той же FH все эти поведения полностью отключаемые и плюс если игрок достаточно явно выражает свое желание сделать не так как размечено - игра должна согласиться (то есть если игрок при повороте налево вообще не крутит руль в ту сторону, то доводка тоже не будет его крутить и игра никак не попытается ему мешать скрезать дорогу через поле).


#16
14:17, 15 мар. 2019

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

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

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

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

#17
14:20, 15 мар. 2019

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

#18
16:24, 15 мар. 2019

Zab
> Этот принцип приводит к обратной линейной зависимости скорости поворота руля от
> скорости движения.
На скорости 0 руль вообще не крутится?
Zab
> Из всех существовавших в те далекие времена массовых автосимуляторов, только в
> NFS управление выведено на комфортный уровень.
CMR было вполне комфортно.

#19
16:42, 15 мар. 2019

Mikle
> На скорости 0 руль вообще не крутится?
При обратной зависимости как раз на нуле руль должен крутиться бесконечно быстро. Естественно вводились ограничения, сейчас уже не помню какие. Исходники у меня не сохранились в личных архивах.

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

#20
17:04, 15 мар. 2019

Zab
> При обратной зависимости как раз на нуле руль должен крутиться бесконечно быстро.
Да :)
> Естественно вводились ограничения, сейчас уже не помню какие.
Отсюда и вышла моя формула:

t = t / (1.5 + Speed * 0.15)
Коэффициенты подбирал вручную, прямо в коде, до состояния комфортности.
Ещё хороший приём: если руль повёрнут в одну сторону, а мы пытаемся крутить его в другую, то до нулевого положения руль идёт в 3-5 раз быстрее, чем после нуля.
#21
18:39, 15 мар. 2019

Mikle
> Делал я и реальное 3D, но это уже хардкор, а не аркадная гоночка:
> AoS3
Хех, по ощущению что-то не так с трением покрышек, при большом слипе не наблюдается срыв покрышек (колеса блокируются при торможении на большой скорости, но почему то трение не уменьшается от этого).
Mikle
> t = t / (1.5 + Speed * 0.15)
Speed  у тебя как у MrShoor боковая составляющая скорости?

#22
18:42, 15 мар. 2019

vindast
> Speed  у тебя как у MrShoor боковая составляющая скорости?
Нет, это модуль вектора скорости.

#23
(Правка: 19:54) 19:53, 15 мар. 2019

vindast
> Speed у тебя как у MrShoor боковая составляющая скорости?
У меня не боковая составляющая, у меня просто длина вектора скорости. Боковая составляющая у меня это offset, и он для вектора направления колес. Фактически у Mikle точно такая же формула, как у меня. Только не знаю что именно означает t у Майкла.

#24
21:06, 15 мар. 2019

MrShoor
Там перед этим строка:

t = DTime * CtrlSens
DTime - время с прошлого расчёта, CtrlSens - чувствительность управления.
То есть t - величина, на которую нужно повернуть руль, если клавиша влево или вправо нажата.
#25
21:27, 15 мар. 2019

Mikle
> То есть t - величина, на которую нужно повернуть руль
То есть угол. Ок, тогда твоая формула немного отличается.

#26
(Правка: 22:05) 22:05, 15 мар. 2019

MrShoor
> Ок, тогда твоая формула немного отличается.
Вроде та же формула. Код там спутанный, но вроде как t ограничен от -1 до 1.

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

Видео могу выложить что выходит, если интересно кому.

#27
6:05, 16 мар. 2019

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

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

#28
8:46, 16 мар. 2019

Zab
> Вариант, который я долго пытался внедрить - обратная квадратичная зависимость.
> Ибо логично. Ограничения на поворот руля, при которых еще не происходит срыва,
> легко вычисляются и они как раз квадратичные
С точки зрения срыва в занос, может оно и логично, не знаю, не вычислял.
А с точки зрения естественности, больше подходит именно обратная пропорция (скорость плюс константа). Это имитирует инерциальное сопротивление повороту оси вращения вращающегося колеса, а константа - инерция невращающегося колеса плюс трение в системе.

#29
21:04, 16 мар. 2019

Zab
> Так что, пусть вертит и расхлебывает последствия.
Если бы это был руль - то не вопрос. Пусть вертит. Но это клавиатура. У кнопки 2 состояния: нажата/отпущена. И эта формула нужна именно для того, чтобы при нажатии кнопки машина мгновенно не улетала в занос. Чтобы проще было попеременным отпусканием кнопки контролировать занос на больших скоростях.

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумОбщее