ФлеймФорумОбщее

Проблематика говноAPI (3 стр)

Страницы: 1 2 3 4 522 Следующая »
#30
4:37, 4 июля 2024

MrShoor
> Из-за этого говна приходится крутить сраный XInputGetState в отдельном потоке с высокой частотой опроса,

В нормальном движке этот поток уже есть - это поток обработки игровой логики, ничего лишнего городить не нужно даже 30 опросов в секунду достаточно, а 60 - за глаза, потому что все консоли всегда так и делали начиная с Dendy/NES.

#31
4:41, 4 июля 2024

=A=L=X=
> В нормальном движке этот поток уже есть - это поток обработки игровой логики
Этот поток игровой логики работает на низкой частоте.

> даже 30 опросов в секунду достаточно
Нет. 30 как раз недостаточно. Часть инпута в динамичных ситуациях начинает теряться. Даже при 60 очень редко но инпут теряется. Для себя я сделал вывод, что нужно как минимум раз в 8мс обрабатывать инпут

#32
(Правка: 4:55) 4:52, 4 июля 2024

MrShoor
> Даже при 60 очень редко но инпут теряется.

Фишка в том, что XInput сделан именно таким именно поэтому - консоли прошлого просто не опрашивали геймпады чаще VSync, у них game loop тупо завязан на VSync (что отчасти отражено и в планкам качества предьявляемым к фпс и иногда выливаются в такие странности когда в Dark Souls на ПК мечи тратились в два раза быстрее на 120 Гц мониторах) и всем всегда хватало. Поколения геймеров выросли без более частых опросов геймпадов и никогда и не думали жаловаться.
Поэтому это фантомные пропадания инпута, они никому неинтересны. Игрок просто считает, что не продавил кнопку и набивает комбу слишком быстро, что так же губительно может быть как и слишком медленно.

#33
5:07, 4 июля 2024

MrShoor

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

#34
5:09, 4 июля 2024

=A=L=X=
> Поколения геймеров выросли без более частых опросов геймпадов и никогда и не думали жаловаться.
То, что конкретно ты не жалуешься - не значит что проблемы нет. Я например замечаю когда теряется инпут, это раздражает. А когда инпут теряется при просадках FPS - это десятикратно бесит

> Поэтому это фантомные пропадания инпута, они никому неинтересны.
Поэтому это фантомные пропадания инпута, они мне неинтересны.
fixed

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

#35
5:12, 4 июля 2024

=A=L=X=
> если у тебя тот код еще в эксплуатации находится может из любопытства вывести "фпс" опроса геймпадов ориентируясь на это значение.
Код есть, котроллера под рукой нет

#36
6:27, 4 июля 2024

MrShoor

Ну решил проверить код мэтра win_input.cpp из DOOM 3 BFG и таки да - опрос геймпадов выделен в отдельный поток с частотой 250 раз в секунду.
Забавно, что и мышь и клавиатуру Кармак опрашивает через DInput, видимо легаси решил не переписывать, причём там видны куски кода где он пытался побороть какую то проблему с клавиатурой на одной системе через полный опрос вместо поллинга эвентов, но это не принесло плодов, код закоммечен. Плюс видно что когда то опрос геймпадов был в каждом кадре (в семействе функции содержащих PollEvents которые вызываются каждый кадр), но на низких фпс это реально стрёмно, а это всё-таки DOOM и на ПК.

#37
7:07, 4 июля 2024

MrShoor
а флажка для буферизированного опроса там нет?

У себя использую DI для игровых моментов и ловлю WM_CHAR для обработки ввода текста на винде.

#38
7:22, 4 июля 2024

MrShoor
> И как после этого не называть OGL убогим апи?
Это всё верно, вот только ОП не про это, его жалоба — это "ой как много функций вызовов и параметров, почему они просто не сделали одну команду 'сделай збс' которая сама всё сделает как надо збс".

#39
7:32, 4 июля 2024

MrShoor
А чо, с сырым инпутом заморачиваться не стал?

#40
7:38, 4 июля 2024

nes
> с сырым инпутом
Блинчики с сыром и инпутом

#41
7:42, 4 июля 2024

Имбирная Ведьмочка
> его жалоба — это "ой как много функций вызовов и параметров, почему они просто не сделали одну команду 'сделай збс' которая сама всё сделает как надо

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

Я же давным давно, еще на версии 1.x открыл для себя SDL и позабыл DirectX API как страшный сон.  Чего всем рекомендую. Все мои последующие проектики базированы на SDL.
Красивое, чистое API без заморочек и ненужных перекладываний структур в параметры.

#42
7:53, 4 июля 2024

=A=L=X=
> Я уже даже показал, что сами MS отошли от того идиотизма который был в DirectInput и для XInput сделали восемь простых функций без идиотских заполнений структур через dwSize.
Заполнение двСайз — это форвард совместимость. Ты таким образом сообщаешь системе, на какую версию хидера рассчитана твоя программа. Если мс захочет добавить новые параметры в структуру — они просто возьмут и добавят, а в реализации затем сделают свитч по двСайз — старые программы продолжат ставить старый и будут работать по-старому, новые заполнят по-новому и получат доступ к новым полям.

Ты вроде как даже сам это всё тут объяснял, неужели уже даже свой собственный материал пропил?

#43
7:57, 4 июля 2024

Имбирная Ведьмочка
> Заполнение двСайз — это форвард совместимость.

И она пригодилась где то? DirectX уже десяток версий вышел с полностью перепаханными интерфейсами - нигде эти dwSize не пригодились, а код они уродуют ужасно.

#44
7:57, 4 июля 2024

ХИнпут не работает для всех контроллеров, кстати, так что даже если он и был бы концептуально красивый — это ламборджини в деревне. Покатал по главной дороге туда-сюда для души — и затем обратно на трактор, грязь колёсами месить.

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