Dreamland Fenya: пообсуждаем?

Собственно, хотелось бы поговорить об их собственном языке программирования.
Меня почему-то очень сильно смутили ответы (как я полагаю, разработчика этого языка).
На тот момент я не нашел ни одного существующего скриптового языка, виртуальную машину которого было бы легко и итеративно сохранить на диск.

Тот момент, как я понимаю — это начало 2000-х? На данный момент я точно уверен, что такое можно провернуть с питоном, и скорее всего можно было провернуть с ним это 18 лет назад.
— должна быть возможность расширять функциональность языка без ребутов.

Э, если это вполне сформировавшийся язык, такой как Lua, зачем расширять его функционал ?:) Если тут имелось ввиду расширение функционала мира на основе языке без ребутов — так это можно сделать на любом существующем скриптовом языке (и всегда можно было, что сейчас, что 20 лет назад).
Просто я со стороны не вижу никаких плюсов этого языка. Для сохранения состояния между ребутами можно было тупо писать на диск и делать бекапы. А вот минусов, на мой взгляд куча:
У языка нет поддержки коммьюнити, у языка малый функционал. Нет поддержки большинства популярных структур хранения данных, нет новомодных фишек, нет дополнительный библиотек. Из этого вытекает еще один минус — увеличение трудоемкости в некоторых случаях. Понятно, что для квестов подай-принеси нет особой разницы, будет это свой язык или какой-нибудь популярный, а вот для расширения функционала игры — разница есть. Например, мне будет нужно что-то, что может хранить дерево и проводить простейшие операции с ним. Для любого популярного языка, я найду библиотеку/готовую реализацию, что займет минут 10 максимум, и начну делать что-то для мада, а для Fenya, сначала придется писать свою реализацию, а потом уже реализовывать свою идею в маде.
Еще хотелось бы добавить пару предложений о самом маде. Тут я уже обращаюсь к имморталам дримлэнда:
1) Допилить бы цветовую схему мада, например, чтобы попадания мобов по мне, отображались определенным цветом.
2) Зачем эти англоязычные вставки в маде для команд? Времена, когда человек мог принмать русский текст, но не мог на нем писать — давно уже прошли
3) Желательно, добавить одной кнопкой генерацией чара для новичка. Т.е. создаешь чара, вводишь имя, вводишь команду новичок, и твой чар имеет оптимальную профессию, расу и другие характеристики, чтобы начать просто осваиваться в мире. (примерно такое я делал в былинах)
4) Кидайте чара сразу к мобам, которых можно бить. Мад — это сначала гринд, потом эксплор. Имхо, надо делать так, чтобы чар изначально чувствовал себя «нагибатором» и видел быстро увеличивающиеся циферки.

Контекстное меню для предметов в клиенте mudjs

Очередной «концептуальный прорыв» в вебклиенте. У всех предметов по нажатию на них появляется выпадающее меню, в котором перечисленым команды, которые можно проделать с этим предметом. По нажатию на пункт меню команда попытается выполниться (попытается — т.к. с тех пор предмет мог уже изменить свое местоположение или исчезнуть).

Меню зависит от типа и положения предмета, например:
* для предмета внутри контейнера виден будет только пункт «взять»
* для большиства предметов на полу или в инвентаре: «бросить» или «взять», «смотреть», «использовать»
* для мебели на полу будет видно «сесть, лечь, отдыхать» в зависимости от типа мебели
* для фонтана меню будет содержать «пить, наполнить», для бочонков — «пить, вылить»
* для вещей в инвентаре также видет пункт «легенды», если это умение доступно
* ворам виден пункт меню «украсть» на предмет в чужом инвентаре
* и так далее

С технической точки зрения это реализовано путем добавления специальных псевдо-тегов разметки вокруг каждого предмета. Если вывод происходит не в вебсокет, а в обычное соединение, эти теги не посылаются. Вебклиент обрабатывает эти теги и превращает их в стандартное dropdown-menu из Bootstrap.

Пример для предмета в инвентаре:
<m c=«бросить $, надеть $, смотреть $, использовать $, легенды $» id=«1773732900»>хитрость лаеркаи</m>
Для компактности символ $ будет заменен на стороне клиента на id предмета.
ID используется в качестве аргумента для однозначности, т.к. иначе для предметов с одинаковым названием пришлось бы вычислять это 3.бочонок или 2.бочонок, при том что с тех пор позиция в инвентаре могла поменяться, и команда в итоге выполнится с не тем предметом.

Аналогично теперь идет работа и с цветами, т.е. вебклиент больше не парсит ANSI-последовательности, а работает с псевдотегами <c c='fgbg'>ярко-зеленое сообщение</c>, превращая их в <span class='fgbg'>.

Пачка скриншотов под катом:



Читать дальше →

Воздействия на персонаже в клиенте mudjs

Новая панель, где в сокращенном виде выводятся большинство воздействий (аффектов) на персонаже. Положительные зеленым, отрицательные красным, те которым жить осталось меньше тика — желтым.



Upd: все элементы панели теперь кликабельны, появляется окошко с описанием содержимого этого элемента. Для групп эффектов выдается расшифровка всех возможных сокращений.

Upd: клиент в действии, исходники клиента

Правая панель состояния в клиенте mudjs

Следующий виток интеграции вебклиента с миром: в протокол общения добавлена информация о текущем положении персонажа (если оно и так видно по команде 'где'), о времени и погоде (если она видна). Все это выводится в правой панели клиента. Пока что это всё не настраиваемо, т.е. у игрока нет выбора, какую информацию показывать, какую отключить. С добавлением новых панелей эту задачу придется решить так или иначе.



Upd: клиент в действии, исходники клиента

Отображение информации о группе в веб-клиенте mudjs

Новая фишка в клиенте: отображение состояния твоей группы, как более сжатая версия того, что выводит команда group.
Вверху показываются все персонажи, дальше — домашние животные и призванные существа. В планах еще добавить флаги, обозначающие самые важные отрицательные или положительные воздействия на согрупнике, такие как слепота или защита святилища.
Табличка группы обновляется мгновенно, так же как и строка подсказки (prompt), т.к. вся информация каждый раз высылается от сервера к клиенту.


Upd: клиент в действии, исходники клиента

Маппер для веб-клиента mudjs

(репост с forum.mudconnector.su)

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

* По нажатию на кнопку «карта» в соседней вкладке откроется обычная ASCII-карта текущей зоны, если она есть среди карт на сайте

* Если эта карта обладает специальной разметкой, текущее положение персонажа будет подсвечено красным. Если сместиться из комнаты в комнату, текущее положение мгновенно обновится.



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



Upd: клиент в действии, исходники клиента

Стройплощадка DreamLand

(репост с forum.mudconnector.su)

Выложен первый, черновой вариант документации по внутримировому редактору зон (OLC) и скриптовому языку.

Со всем этим можно экспериментировать на отдельно поднятом сервере — стройплощадке (dreamland.rocks 7000 или dreamland.rocks/mudjs/build.html)
Там смертным доступны некоторые дополнительные команды, такие как load/vnum/holylight, для удобства редактирования зон.

DreamLand месяц спустя

Репост с forum.mudconnector.su:

Сегодня ровно месяц как мир снова поднялся после пятилетнего перерыва.
Думаю, есть смысл подвести итоги. Всё нижеперечисленное — заслуга не только
иммов, но и игроков, результат их упорного труда, за что всем огромное спасибо.

* Код:
** Исходный код портирован под новый компилятор, вычищены свежие и старые крашбаги
** Добавлена поддержка веб-сокетов
** В скриптовом языке появились замыкания

* Веб-клиент:
** Прикручены новые фишки (тригера-хоткеи-алиасы), поиск по истории команд, кнопки интерфейса
** Интегрирован с миром по собственному xml-протоколу, есть первые примеры обмена данными между сервером и клиентом
** Код клиента выложен в общий доступ на github

* Сайт:
** создан с нуля и продвинут в гугле
** созданы поисковики по разными видам предметов
** добавлен раздел со всеми путями и многими картами; карты продолжают добавляться
** опубликована 1я часть учебника для начинающих
** регулярно обновляется раздел новостей
** муд зарегистрирован в соц.сетях и на мудконнекторах
** восстановлены старые домены
** код сайта выложен в общий доступ на github

* Мир:
** добавлены новые разделы помощи и улучшены существующие
** много улучшений для новичков (при создании персонажа, в начальной зоне, по командам, хелпам, магазинам)
** идет активная работа по переводу оставшихся зон на русский (2 закончено, 3 почти готовы, еще 7 в работе)
** продолжается русификация сообщений, надписей, справки
** обращение с предметами стало более удобным
** вычищаются все свеженайденные баги и опечатки
** приняты меры по защите персональных данных

* Набрана новая активная команда иммов

WebSocket MUD client для DreamLand теперь на GitHub

Веб-клиент mudjs выложен на GitHub в открытом доступе:

github.com/filths/mudjs

Клиент хорошо зарекомендовал себя в DreamLand. На главной странице проекта есть инструкции, как начать пользоваться этим клиентом для любого муда.

Проекту всего пару недель, и есть масса вещей, которые неплохо было бы туда докрутить. Pull requests приветствуются.