Так-то любая игра, будучи запущенной в браузере, является браузеркой. Это инструмент — он ни хороший, ни плохой.

Сейчас ситуация такова, что браузер есть на всех современных операционных системах (Windows, Linux, Mac, Android, IOS и прочие) и пользователь к нему привык, в то время как телнет (а также ssh или специализированные клиенты) требуют какого-никакого освоения и/или установки-настройки.

Из этого следует, что наимение затратной реализацией клиента для игры с клиент-серверной архитектурой является веб-клиент. Посудите сами: он не требует установки на устройство пользователя, избавляет разработчика от привязки к магазинам или репозиториям, не требует написания какой-либо системы проверок обновления, позволяет абстрагироваться от вывода графики (нужно просто сверстать страничку — рисование берет на себя браузер), а также кросс-платформен и аппаратно-независим.

Разумеется, есть и минусы: веб-клиент практически не имеет защиты от пользователя, работает не очень эффективно и превращается в тормознутого макаронного монстра при попытках сделать что-то по-настоящему сложное или ресурсозатратное. Но так как речь идет о клиенте для мада, эти минусы не так уж и важны.

Я предусмотрел жалобы вида «браузер — фу, я телнетом 35 лет пользуюсь», «хочу ssh» или «а почему нет совместимости с моим мад-клиентом пятнадцатилетней давности?», поэтому писал сервер с рассчетом на то, что протоколов взаимодействия с пользователем может быть много и разных. Тот же телнет может быть встроен за час-полтора.

Если считаете, что нормальный мад просто не может жить без {PROTOCOL_NAME} — пишите сюда или на почту. А лучше — создайте issue в репозитории nmud.
Ну, я не вижу ничего плохого в браузерках. Я это предложил потому-что если в тексте есть какие-то интерактивные блоки, то встает вопрос чтобы они были активны только в текущей комнате и не были активны в предыдущих, доступных при прокрутке текста.
Мады по определению работают через текстовый терминал. Так что интерфейс не проблема, это просто набор текста под диктовку. Опять же, можно запилить текстовые макросы на кнопки или сочетания клавиатуры, чтобы набирать одной рукой или одним пальцем. Есть игровые клавиатуры специально для левшей или правшей.

Проблема больше в самом распознавании голоса и том, что команды MUDов ни грамматически, ни орфографически не укладываются в словари распознавателей.
Время и так отображается по команде 'эффекты', можно по нему сортировать и тд. Панель служит для удобства держать это всегда перед глазами и сразу замечать, что слетело а что вот-вот слетит, не заглядывая в команду каждый раз. Время на нее тоже можно докрутить, но уже придется сражаться за место на экране по ширине.
Обычно игроки еще очень любят знать точно, сколько по времени на них висит тот или иной эффект. Уверен, что это будет следующая вещь, которую они попросят.
Почему бы не сделать комнату со всем содержимым в виде единичного сплошного объекта, типа html-странички?
И получится обычная текстовая браузерка. Которых было миллион, лет десять назад, сейчас уже гораздо меньше.
Разумеется.

Ведь для мобильной версии нужно передавать кучу дополнительной инфы — команды, подсказки, ту же разметку.

У нас в nmud сейчас единсвенным протоколом являетя http. Был какое-то время назад и telnet, но я от него отказался, когда правил GateService (тот кусок кода, который обсепечивает поддержку протоколов клиента) — просто потому что не пользуемся им. А поддерживать неиспользуемый код не вижу смысла.

В будущем планирую вернуть telnet (когда/если будет для кого возвращать) и, может быть, запилю ssh.
Благодарю!
Рекомендую letsencrypt.org/
Не обязательно отказываться от телнета. По крайней мере в dreamland, со стороны сервера всегда видно, какой вид соединения у игрока, websocket или обычный. В websocket пихаем псевдо-гипертекстовую разметку, в telnet — обычные ansi-последовательности, вот это всё.
Сейчас как раз работаем над кликабельными элементами, пока для справки, в перспективе для контекстных меню. Поделюсь скриншотами когда будет что показать.
От телнета тогда придется наверно точно отказаться.

Вот примерно, что я предлагаю. Границы блоков могут быть и прозрачными.

И еще. Нужна ли тут вертикальная прокрутка текста как в консоли? Почему бы не сделать комнату со всем содержимым в виде единичного сплошного объекта, типа html-странички?
Есть предложение организовать процесс более экономно:

Основную часть экрана занимает ScrollView с текстом (ровно также как сейчас сделано в вебморде — на большом экране остаются поля, на маленьком — во весь экран).

Активные элементы нажимабильны. По нажатию появляется оверлейное контекстное меню возможностей, в котором выбираем действие. Отказавшись от нижней панели мы экономим место. Кроме того, контекстные меню — более очевидная вещь для пользователя смартфона.

Общие команды (не связанные с объектом) я бы поместил
— на маленьких экранах в выдвигающееся боковое меню навигации (NavigationDrawer одним словом);
— или на маленьких экранах в полноэкранный оверлей или диалог;
— на крупных кранах — на поля слева и справа от текста.

Конечно, сложно судить без макета, но как думаешь будет лучше?

Ну и понятное дело, что мобильный вид лучше организовать не на сервере, но в отдельном мобильном клиенте.

P.S. Поздравляю с 900 комментарием!
Hастройки шрифта — довольно полезная мысль, учту.

А вот насчет клавы не уверен — у современных мобилок/планшетов достаточно большой экран: клава занимает 25...40% экрана, поэтому остается достаточно места под текст и прочую полезную информацию.

Да, отдельное приложение на смартфон сейчас в моде. Но пока я ограничусь одним клиентом — браузерным, т.к. не так много ресурсов, чтобы делить их между несколькими проектами с одинаковым функционалом. В будущем же надо сделать прогу хотя бы под андроид обязательно.
Писать что-то на экранной клавиатуре — это боль. Даже короткие сообщения. Поэтому надо продумать интерфейс так, чтобы в текстовой игре не надо было писать практически никогда. А надо было просто ткнуть пальцем в нужную часть экрана.

Я представляю это в виде двух скроллируемых панелей с кнопками внизу и вверху экрана. Верхняя панель связана с общими командами, типа перемещения, боевые команды и т.д.

Сам текст игры должен разбиваться на интерактивные блоки, выделяющие элементы игры — обыекты, мобы и т.д. Это что-то типа гиперсылок только большего размера, чтобы по ним можно было тыкнуть пальцем. При этом на нижней скроллируемой панели должны появляться кнопки связанные с этим объектом. Например, ткнули на сообщение «Вы видите здесь красивый фонтан» и появляются кнопки — пить, наполнить флягу, пописать в фонтан и т.д.

Если не понятно, вечером могу попробовать нарисовать как это примерно может выглядеть.
Первое же о чем нас попросили — кнопки настройки размера шрифта (кнопки плюс-минус на скриншотах клиента).
Еще удобны стрелки навигации, но в вашей концепции они ни к чему, если нету четких направлений по сторонам света.
А вообще голубая мечта — это полупрозрачная клавиатура, чтобы при вводе текста было все еще видно, что происходит.
Но это уже больше в сторону мобильного приложения, нежели браузера.
Спасибо за отзыв!

Да, мобильные устройства также рассматриваем в качестве играбельных.

Что именно нужно доработать в интерфейсе для удобства на мобильных?
С тора заходит нормально:
nmud
Заходил также со смартфона, но играть на нем не удобно. Если мобильные устройства будут рассматриваться в качестве играбельных устройств, то интерфейс надо будет дорабатывать.
Другими словами, проблема на стороне клиента, так?

Поговаривают, что wss работает через прокси стабильнее, чем обычный ws. Учту это, когда буду прикручивать криптографию (https).
  • avatar prool
  • 1
Последующие эксперименты показали, что проблема в прокси сервере squid. Когда я отключаю прокси, всё работает. Браузер Mozilla Firefox 54.0. OS Ubuntu.

Или не в браузере. Потому что браузер Epiphany из той же ОС нормально работает через прокси.