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