Эта близость механических решений позволяет декомпозировать все великое разнообразие существующих на сегодняшний день игр на не очень большое количество очень похожих механических элементов, из которых эти игры состоят. За последние 50 лет компьютеры сделали скачок вперед, сравнимый со скачком в 500 лет от печатного станка к первым ЭВМ на лампах. Но игры в основе своей практически не изменились. Только у разработчиков появилось больше технических возможностей делать игровые миры больше и реалистичнее.
Ввод
С чисто технической точки зрения игра, как и любая программа, это результат какого-то воздействия со стороны игрока на некий объект, который приводит к изменению состояния системы.
Учитывая, насколько разными бывают игры, печать вот этого самого текста в текстовом редакторе не сильно отличается от того, что позволяют игры. В конце концов, даже в классических текстовых квестах (которые легли в основу механик игры MUD) игроку приходилось непосредственно печатать команды, которые исполнял игровой персонаж: «иди вперед», «открой дверь», «атакуй гоблина». В этом примере воздействием является печать команды на клавиатуре, объектом – персонаж игрока, а состояние – это изменившееся положение персонажа в игровом мире, изменение положения предметов или состояния противника.
Само воздействие состоит из двух частей:
• средство ввода;
• команды.
Средство ввода – это клавиатура, мышь, джойстик, тачскрин, контроллер и еще множество крайне оригинальных механизмов от гитар до камер, которые используются для распознавания образа. Все это пока просто физические кнопки, которые могут по-разному интерпретироваться программой.
Обычно использование какого-то конкретного средства ввода необязательно, хотя и предпочтительно. Но так же, как мы не ограничены определенными моделями клавиатур для использования с компьютером, мы не ограничены и контроллерами. Мы можем использовать удобный руль для игры в гонки, менее удобную клавиатуру или совсем неудобную гитару – это просто средство ввода.
Разработчики игр крайне редко занимаются разработкой средств ввода и обычно пользуются тем, что предоставляет создатель платформы (игровые приставки и мобильные устройства) или производители периферии (клавиатуры, рули, джойстики). Но контроллеры-гитары или удочки – это пример того, как разработчик игр может сам производить устройства для своей игры.
Команды вызываются средством ввода. Они могут быть весьма разнообразны и зависеть от выбора разработчика. Команды не привязаны жестко к конкретному средству ввода. В разных ситуациях ввод может приводить к вызову разных команд: например, есть игры, в которых персонаж может передвигаться и пешком, и на самолете. Условное перемещение вперед пешком приводит к тому, что персонаж идет вперед, но то же направление вперед в управлении самолетом традиционно приводит к тому, что самолет ныряет вниз – для условного перемещения «вперед» нужно чтобы работал двигатель, а это совсем другая команда. Такая смена функционала в зависимости от ситуации называется «контекстное управление».
Во многом управление даже на механическом уровне является жертвой традиций. Так же, как наша ЙЦУКЕН/QWERTY клавиатура – это лишь результат сохранения традиции, которая вообще никак не отвечает реальной эргономике процесса печати. Раскладка ЙЦУКЕН или QWERTY – это результат оптимизации работы механических печатных машин, у которых заклинивало детали при более оптимальном с точки зрения удобства печати расположении букв.
Важно понимать, что команды может посылать не только игрок, но и сама программа. Для этого у программы есть довольно много средств: игровая физика, таймеры, деревья выбора, то, что мы привыкли называть искусственным интеллектом. Здесь само то, что игрок запускает игру, является воздействием, запускающим сложный алгоритм относительно самостоятельного поведения внутриигровых персонажей. Следуя алгоритму, они могут перемещаться, взаимодействовать друг с другом, выполнять какие-то действия типа строительства, воспроизводства и поиска ресурсов.
Объектом воздействия могут быть не только персонажи, но и сам игровой мир. Мы можем поворачивать трубу, по которой бежит персонаж, чтобы тот не врезался в препятствия, можем рыть тоннели, по которым будут проложены железнодорожные пути. Объектом может быть все что угодно. Главное, что в результате применения воздействия к объекту в игровом мире должно что-то меняться.