FWGS / xash3d-fwgs

Xash3D FWGS engine.
1.44k stars 219 forks source link

Controller vibration #1509

Open 0x4E69676874466F78 opened 7 months ago

0x4E69676874466F78 commented 7 months ago

Обнаружил что с -sdl_joy_old_api работает вибрация (без ключа не работает), но работает она некорректно во-первых даже в обычных условия она держится слишком долго, во-вторых на c1a1a получив удар от зомбяка контроллер сходит с ума и может надолго зависнуть в режиме вибрации (порой помогает только выход из игры). До кучи, ещё почему-то в этом режиме левая рукоятка считается START, а start считается MODE.

a1batross commented 7 months ago

ещё почему-то в этом режиме левая рукоятка считается START, а start считается MODE

Он не совсем корректно работает, так как выдает сырые значения. GameController эту проблему обходит позволяя ребиндить кнопки.

sdl_joy_old_api работает вибрация

void Platform_Vibrate( float time, char flags )
{
#if SDL_VERSION_ATLEAST( 2, 0, 9 )
if( g_joy )
SDL_JoystickRumble( g_joy, 0xFFFF, 0xFFFF, time * 1000.0f );
#endif // SDL_VERSION_ATLEAST( 2, 0, 9 )
}

Ну так неудивительно...

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

Вообще вполне вероятно что функцию выше я вызываю неправильно. :)

0x4E69676874466F78 commented 7 months ago

Сделал * 100.0f стало поадекватнее с хэдкрабами на c1a2b, а от зомбяков всё равно слишком долго выходит. Видимо тут https://github.com/FWGS/xash3d-fwgs/blob/c448c7b0b141b69087b583ac8083c3cf6371c4cd/engine/client/cl_mobile.c#L45 Нужно более умное условие чем просто умножение на число отнятых жизней. По идее удары должны примерно соответствовать тому как мы это ощущаем на экране, не свыше того. Ещё хорошо бы для выстрелов из оружия можно давать разную вибрацию. Может позже подумаю над формулой.

a1batross commented 7 months ago

@0x4E69676874466F78 да, но тогда лучше подобное вносить в hlsdk-portable.

0x4E69676874466F78 commented 7 months ago

@a1batross на тему урона можно ещё попробовать формулу универсальную в движке сделать, а вот выстрелы там да, уже сдк, хотя в теории можно тоже посчитать по наносимому урону выстрела.

a1batross commented 7 months ago

@0x4E69676874466F78 движок ничего об уроне игроку не знает.

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

Cruzejer123 commented 7 months ago

😒we be wait on some response but the Russian were always 1st