Ребят, а как правильно задизайнить обработку инпутов? Я делал в

апдейт цикле (ну т.е для каждого интерактивного элемента опрашивал используемые кнопки, мышь и прочие штуки на их состояние) - мне сказали что я тупой.
Окей, решил вынести в отдельную функцию перед апдейт циклом и собирать все инпуты произошедшие за фрейм в FIFO queue и по ходу апдейт цикла из этого queue доставать (каждая запись в queue это айди устройства ввода (внутренний для движка, не связаный с айди устройства в списке ос), идентификатор типа устройства (мышь, клава, геймпад) и типа события (чтобы знать куда кастовать базовый ивент - логично что у события перемещения курсора и события нажатия кнопки пейлоад будет разный) , К примеру чтобы можно было на основании первого ивента в очереди за фрейм определять что у нас используется - клавомышь или игрок подключил геймпад - и далее, допустим, дропать обработку проверок инпутов для того или иного устройства (например если за один фрейм нажали и кнопку на клавео, и идентичную ей по действию кнопку на геймпаде - помню был баг в какой то ААА игре, что так можно было дважды кастануть атаку одновременно)) - мне сказали что я тупой.

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

4 ответов

5 просмотров

> дважды кастануть атаку одновременно) это вообще надо проверять где-то отдельно

usernameak
> дважды кастануть атаку одновременно) это вообще ...

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

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

Похожие вопросы

Обсуждают сегодня

Хтось використовував Vapor на Windows?
Jaroshevskii
15
Не знаю куда ещё обратиться, есть вопрос Допустим у нас существуют два устройства, которые обмениваются данными по сети (в целом не важно как именно, допустим это 2.4гг) Како...
Артем
5
подскажите, а как можно очистить экран с библиотекой POSIX-UEFI?
Vi Chapmann 🪙
11
@y0zhig @shizzard А можно я опишу цель и может вообще ерланг мне не подходит. На текущий момент как я понимаю у ерланга есть легковесные потоки и задача выполняется в каком т...
Дмитрий Спиридонов
6
это кластер, в смысле связность сети высокая, или это сотня хакнутых компов, на которых вертится взлом /etc/passwd ?
Д. П.
8
@spiridonov_dv скажите, у вас будет 1 дц или несколько? переход обработки в другой дц нужен? что будет в таком случае с tcp/tls соединениями? если только udp, то все равно ост...
Ilya
2
Нужен пулл реквест с хаммингберд + асинкхттпклиент или хаммингберд + юрлсессия?
Karl {🌪️}{🐊} Shinobi
8
Можно ли загрузить скрипт py в бота чтобы он работал по нему? как это сделать?
huskadam #RCC Фанат? @hitlerpvp
13
Отдельные отрезки задачи.... Этот момент я пока не понимаю, но пропустим. А что касается ноды... Вот выключилось питание у сервера а он там по tcp куда то сообщение уже отправ...
Дмитрий Спиридонов
1
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Карта сайта