Думаю, многие со мной согласятся, что богатый внутренний мир парсерной игрушки разбивается о скалы обычного сенсорного интерфейса. К выводу претензий нет — приклеенная сверху полоска с текущей локацией и сплошной текст, всё как на взрослых компах. А вот с вводом — беда. Маленькие кнопочки, печать голосом, даже автоматическое исправление не помогает. Что же делать? Поставить крест и забыть про парсер на смартфоне или планшете? Я так не считаю. Хочу поделиться концепцией, которую можно применить в таком мобильном плеере, как Fabularium.
#### Основная идея
Для начала выделим проблемы:
* Печатать буквы на смартфоне неудобно.
* Автодополнение не спасет, надо опять выводить клавиатуру.
* Сенсорная клавиатура постоянно “поднимает” текст, слишком тяжеловесная, нарушается непрерывность восприятия.
В качестве решения предлагаю использовать подход rainmeter. Вкратце, это средство кастомизации GUI для windows с богатыми возможностями и которое используется как для хобби, так и на предприятиях. Можно превратить рабочий стол в HUD-дисплей космического корабля.
В случае интерфейса парсера индикаторы должны реагировать на нажатия и отображать другие компоненты (иерархическая вложенность), а также добавлять текст в командную строку.
Что нам это даст:
1. Менюшный кастомизированный интерфейс, заточенный под игрока/платформу/игру.
2. Удобное восприятие и сенсорное управление.
3. Привлекательный дизайн для новых игроков, возможность встроить подсказки в оболочку.
Ниже приводятся прототипы такого интерфейса. На основном экране — часто используемые команды и пиктограммы, раскрывающие группы действий.
При нажатии, раскрывается подменю, скрывая ненужный уровень. Так как они при раскрытии находятся на одном и том же месте, легко привыкнуть и нажимать автоматически.
После выбора глагола — прокручивающийся список с вариантами выбора. Варианты будут из текущей локации, запомненного инвентаря или последние введённые.
#### Логическая структура
Мне кажется разумным будет взять схему ini-файлов с rainmeter и адаптировать под проигрыватель. Для начала взять три типа сущностей — индикатор, измерение и встроенная переменная. Индикатор отвечает за визуальное отображение и обработку событий, измерение — невидимый объект для преобразований данных (встроенные переменные, константы). Встроенные переменные будут хранить список слов текущей локации, всей игры и инвентаря. Пример кода индикатора для “руки”, которая при нажатии прячется и отображает кнопки “взять”, “толкать”, “тянуть”:
[MeterHand]
Meter=Button
ButtonImage=HandButton.png
ButtonCommand=[!HideMeter MeterHand][!ShowMeter TakeMeter][!ShowMeter PushMeter][!ShowMeter PullMeter]
Если с глагольным меню всё более-менее понятно, то вот с существительными посложнее. Мне кажется, что под группу действий надо использовать наиболее вероятные группы слов — из текущей локации, из инвентаря или из истории команд. Второй подход — “пипетка”. В этом режиме все слова выводимого текста становятся гиперссылками и достаточно просто кликнуть, чтобы слово добавилось к команде.
#### Выводы
Мне кажется что такой концепт индикаторов-контролов позволит играть в парсерные игры максимально удобно. Знаю, что многие авторы англоязычной ИЛ внедряли похожие интерфейсы в десктопные проигрыватели и они не выстрелили. Пишите в комментариях, что думаете про эту идею.
Ссылка:
https://ifhub.club/2018/05/15/idealnyy-parser-na-sensore.html