피드로 돌아가기
Dev.toFrontend
원문 읽기
NKRO 하드웨어 제약을 극복한 로컬 멀티플레이어 입력 아키텍처 설계
The Hidden Complexity of Two-Player Browser Games — A Practical Guide to Keyboard Input
AI 요약
Context
단일 키보드를 공유하는 브라우저 기반 2인용 게임에서 하드웨어적 N-key rollover(NKRO) 한계로 인한 입력 누락 및 Ghosting 현상 발생. 기존 브라우저 이벤트 처리 방식으로는 동시 입력 시 발생하는 물리적 제약과 OS 수준의 기본 동작 간섭을 해결하기 어려움.
Technical Solution
- 하드웨어 Key Matrix 구조를 고려하여 WASD와 Arrow keys로 입력 영역을 물리적으로 분리함으로써 Ghosting 발생률 최소화
- Keyboard Layout 및 Shift 상태에 영향을 받지 않는 물리적 위치 기반의
event.code를 채택하여 입력 일관성 확보 keydown과keyup이벤트를 조합한Set기반의 Held Keys 추적 구조를 설계하여 상태 기반 이동과 전이 기반 액션을 동시에 처리event.repeat속성 또는 상태 추적 로직을 통한 중복 입력 필터링으로 액션 키의 단발성 실행 보장- 서비스 영향도가 낮은 특정
gameKeys화이트리스트에 대해서만preventDefault()를 적용하여 브라우저 기본 기능과 게임 입력 간의 충돌 방지
실천 포인트
1. 입력 시스템 설계 시 `event.key` 대신 `event.code`를 사용하여 물리 키 매핑을 구현했는가?
2. 고가의 기계식 키보드가 아닌 저가형 Membrane 키보드에서 동시 입력 테스트를 수행했는가?
3. `preventDefault()`를 전체 적용하지 않고 특정 키 화이트리스트 기반으로 제어하고 있는가?
4. 액션 키 처리 시 `event.repeat` 또는 별도의 상태 Set을 통해 중복 실행을 방지했는가?