Обработка ввода
Чтобы игрок мог взаимодействовать с игрой ему нужно использовать какое-нибудь устройство ввода. Такое как клавиатура или мышь. Игре же, в свою очередь, нужен механизм, который будет слушать события, генерирующиеся при использовании таких устройств. Это могут быть нажатия клавиш, передвижение курсора мыши, наклон стика геймпада и тому подобное. Событие нужно поймать и как-то его обработать. К примеру, если у вас в игре есть персонаж, которого нужно перемещать при помощи клавиатуры, вам нужно определить, нажатия по каким именно клавишам вас интресуют, а затем настроить обработчики, которые будут менять координаты персонажа в зависимости от того на какую клавишу вы нажали.
Во время ревью кода студентов, я насмотрелся на самые разные варианты реализации подобных механизмов, но проблема как правило была всегда одна и та же: соответствие клавиш и действий по их нажатию явно указано в коде игры. Почему это проблема? Дело в том, что обычно в играх предусматривается возможность переопределить управление. Настроить его под себя. Но если все связи прописаны внутри кода, то этого просто не получится сделать. Каждый раз придется править код и пересобирать игру.
Зная об этой проблеме, я решил вынести конфигурацию управления во внешний файл, а в коде игры производить связывание клавиш и соответствующих им обработчиков во время чтения этого конфига. Так можно будет в любой момент поменять управление игры.
Управлять мне в игре пока еще было не кем. Собственно и самой игры еще не было. Поэтому для проверки работы данного механизма, я написал простой обработчик, который будет выводить в консоль браузера нажатый символ.