Разрабатывая игру, где основной способ взаимодействия с игровым миром — щёлканье по ссылкам в описании, столкнулся со следующей интерфейсной проблемой. Обычный порядок ввода/вывода следующий:
1. Выводится описание ситуации.
2. Принимается команда игрока.
3. Выводится описание действия по команде игрока.
4. Выводится реакция игры на команду.
5. ???
Вот тут и кроется нюанс — выводимое в пункте 1 описание к пункту 5 может устареть — некоторые ссылки в нём будут уже не актуальны. Поэтому по-хорошему, нужно либо обновить описание, либо заблокировать ссылки (это из первого, что приходит на ум).
Навскидку варианта два:
А) В пункте 5 блокируем все ссылки в описании (чтобы ничего не нажималось), даём игроку ознакомиться с описанием результата своих действий, после чего очищаем экран и переходим к пункту 1. Отмеченный многими (по демке) минус — лишнее действие игрока после каждой обработки его поступков (нажатие ссылки "продолжить" или клавиши "пробел"). Плюсы — естественная последовательность информации: сначала исходные данные, затем действие, а под конец — результат.
Вы стоите посреди арены перед грозным и голодным великаном!
Вы напали на великана.
Великан откусил вам голову.
[продолжить]
Б) Переставляем порядок ввода/вывода:
1. Выводим описание действия по последней команде игрока.
2. Выводим реакцию игры на последнюю команду игрока.
3. Выводим описание ситуации.
4. Принимаем команду игрока.
5. Переходим к пункту 1.
Вы напали на великана.
Великан откусил вам голову.
Вы стоите посреди арены с откушенной головой. Но есть ещё силы на последний рывок!
Минус — разве что нарушение последовательности подачи информации. Плюс — исключение лишнего действия и незначительное снижение риска туннельного синдрома запястья.
Кто-нибудь сталкивался (реализовывал) с ещё какими-нибудь вариантами? Вариант с непрерывном выводом информации с надеждой на скроллинг, наверное, предлагать не стоит.
Неактивен
Да вроде игрок не полный даун, чтобы не понять, что по ссылке с названием "взобраться" ему предстоит именно взобраться. ) Ты, я думаю, привел слишком упрощенный и гипотетический пример. Если можно, сделай живой пример - не сложный, но правдоподобный.
С уважением.
из обсуждения: https://forum.ifiction.ru/viewtopic.php … 534#p24534
Я жду.
Неактивен
Ну, я тоже думал, нужны ли дополнительные действия простым объектам.
Пока мой вывод таков - нет, не нужны. У сложных - меню, у простых - прямое действие.
Как-то так.
Неактивен
А как игрок поймёт, какие объекты являются сложными, а какие — простыми?
Зависит от автора, полагаю.
Я это вижу так: если объект внутри локации в виде ссылки <a>'Объект'</a>, если он сложный, надо прилепить к нему меню. Если простой - просто по нажатию, отраженному в OBJSEL, выполнить что-то.
Неактивен
К тому же не нужно забывать о том, что состав меню может по ходу игры меняться. И если в какой-то момент он состоял из нескольких пунктов, то в другой раз может остаться только один. И что тогда?
Это пока остается для меня загадкой - как реализовать. Предметы в теле локации. Чтобы было удобно автору описывать их: которые простые, которые сложные.
Что касается объектов в инвентаре - то решено и реализовано (у меня).
Теперь речь об объектах внутри локации (если они действительно объекты).
Насчет простых - тут довольно легко. Присваиваем им "usable" = false, и прописываем в функции onObjSel взаимодействие по клику.
А если нужен сложный объект, например "Рычаг", который можно "потянуть", "крутануть" или вообще "подействовать предметом из инвенторя", то фиг знает.
А если еще этот предмет можно перемещать между локами, как "стул", например, то... целое море загадок.
Неактивен