Жанр РПГ-выживания предполагает широкий спектр вариантов взаимодействия персонажа с окружающим миром. Стрельба и удары - само собой. но также надо добывать ресурсы, создавать предметы, постройки, взламывать замки, перемещать предметы и возможно, делать нечто такое, о чем разработчик не знал заранее. В результате появляется длинный список управляющих клавиш, причем каждый автор делает все по своему. Принять и запомнить это может только ярый фанат игры. По моим наблюдениям, каждый программист уверен, будто интуитивно понятной является именно его концепция. Выступая в роли игрока, могу свидетельствовать, что в этом вопросе каждый программист ошибается. Вот почему при разработке своего интерфейса хотел сделать так, чтоб для любой ситуации хватало двух кнопок мыши. Каждый пользователь Windows привык основное действие совершать левой кнопкой, а некое дополнительное - правой. Такой принцип резонно соблюсти в игре. А если кроме стрельбы возможно еще несколько вариантов, как быть? Выпадающее меню? Для пошагового режима нормально, но в реальном времени бывает напряжно. Думал я думал, и решил сделать интерфейс контекстно-зависимым, чтобы логика игры сама разбиралась, что происходит при клике в текущей ситуации.
Вот смотрите:
Когда перед нами лютый враг, с которым надо сражаться, прицел становится красным, на левой кнопке атака, как все привыкли:
Если объект предполагает не боевое взаимодействие, прицел остается белым, объект подсвечивается, слышен звуковой сигнал и появляется краткое описание.
Когда мы подходим на расстояние вытянутой руки, прицел меняет форму и появляется подсказка, какие действия сейчас связаны с кнопками мыши. Для каждого типа объектов эти действия будут специфичными. К примеру, цветок можно сорвать:
При нажатии на левую кнопку предмет попадает в инвентарь. А если объект является контейнером, его можно открыть:
Тогда открывается окно выбора содержимого:
Если перед нами костер, его нельзя ни забрать, ни открыть, но зато можно зажечь:
А когда он горит, на него можно только смотреть:
То есть, если в результате взаимодействия объект меняет свое состояние, это отражается в интерфейсе. Таким образом, любое взаимодействие всегда происходит в один клик.
Движение персонажа - WASD, стандарт де факто. Бег - Shift, приседание - Ctrl, прыжок - пробел. Это тоже привычно для всех. Система оружия заимствована из игры Half Life, не помню случая, чтобы ее кто-то года-то ругал.
Инвентарь весьма многофункциональный, однако там все упорядочено и структурировано. Он устроен как блокнот с закладками. Вот, к примеру, открыта вкладка одежды:
Переодевание несет важную функцию, каждый предмет одежды имеет особые свойства, все изменения отображаются:
Здесь открыта вкладка с едой, где можно понять, какие есть связанные игровые механики:
Есть также информационные панели, где можно увидеть как например изменяются навыки персонажа:
Не буду утомлять демонстрацией всех закладок, общий принцип уже понятен. Вынужден признаться, дизайн интерфейса примитивный, но поменять скины плашек - дело быстрое. Меня пока заботила отработка игровой логики, дол внешнего оформления еще не добрался.