+17.65
Рейтинг
9.51
Сила
avatar

1
Увлекательный мир Online IDE

В последние годы появилось довольно много online IDE, позволяющих создать свою среду разработки прямо в браузере.
Вот хорошая обзорная статья, с преимуществами и недостатками каждой системы: https://www.slant.co/topics/713/~best-cloud-ides

Идея заиметь такую среду и для дримленда мне очень понравилась. Для тех, кому лень возиться с исходниками на своей машине, поднимать виртуалку или настраивать docker — это неплохой способ быстро ознакомиться с проектом. Перебрав несколько IDE разной степени бесплатности, я остановилась на Goorm IDE. Главные преимущества, на мой взгляд:

* Редактор и IDE для C++ не лучше/не хуже чем у остальных. Полноценного online IDE для C++ с автоподсказками и рефакторингом мы вряд ли дождемся — никому это особо не надо.
* В бесплатном режиме предоставляется 1 контейнер с гигом оперативки: фактически свой мини-сервер с рутовым доступом, как из консоли браузера, так и по ssh.
* Контейнер ставится на паузу после двух часов бездействия (а не десяти минут, как в некоторых других системах).
* Хорошая интеграция с Github.
* Локальные порты (например, 9000) можно сделать доступными снаружи с помощью port forwarding, получив полноценный, доступный отовсюду муд-сервер.
* Одновременно могут работать 5 разработчиков и 3 наблюдателя, видя изменения друг друга в реальном времени.



Самым главным препятствием была, конечно же, KOI8-R кодировка у исходников. Отображались файлы верно, но любая попытка редактирования сохраняла их в UTF-8. Поэтому первым шагом был перевод исходников в UTF-8. Вместо тернистого пути перевода всей внутренней работы на новую кодировку, был выбран обходной путь: исходники хранятся в UTF-8, но компилятору задается специальный флаг, который компилирует их так, будто бы они в KOI8-R.
Опции для GCC: -finput-charset=UTF-8 -fexec-charset=KOI8-R. Для компилятора Visual C есть похожие флаги.

В остальном все оказалось довольно прямолинейно. С полной инструкцией можно ознакомиться на вики проекта: github.com/dreamland-mud/dreamland_code/wiki/Goorm-IDE

Mudjs: отображение здоровья, маны, шагов в виде progress bar

Илиус добавил прогресс-бары со здоровьем, маной и кол-вом шагов.



На мелких экранах цифры и надписи исчезают, а сами бары превращаются в три тонкие полоски.



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

МПМ "Грани Мира"



МПМ Грани Мира снова открылся под адресу 142.93.100.142 4000


Исходные коды проекта выложены в открытый доступ и для совместной разработки на github.com/planescape-mud/planescape_code

У нас есть канал на Discord-сервере, посвященном русскоязычным мадам. Заходите на discord.gg/RPaz6ut. Туда же попадают все оповещения о активности по коду на github.

1
DreamLand MUD стал OpenSource

Репост новости из мира:

DreamLand стал проектом с открытым исходным кодом. Каждый может принять
участие в разработке через pull-requests. Большинство арий по-прежнему закрыто.

Все наши репозитории находятся в github.com/dreamland-mud

* dreamland_code — исходный код

* dreamland_world — конфигурационные файлы и несколько зон для удобства
локальной разработки и строительства

* dreamland_docker — инструкции и настройки для docker

* dreamland_web — вебсайт, поисковик, карты

* mudjs — веб-клиент

* mudjs-vue — веб-клиент Террана

Ставьте звездочки кому не лень >8)

Mudjs: новые окна в панели состояний

Что-то давно никто ничего не постил про веб-клиент!

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



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

Новый WebSocket муд-клиент на базе mudjs: mudjs-vue

(репост новости из мира)

Один из наших игроков, Terran, проделал огромную работу, переписав вебклиент с использованием библиотек VueJS и Quasar.
Вот список вещей, которые или уже доделаны или еще в разработке:
* выдвигающаяся панель слева с полезными ссылками
* выдвигающаяся панель справа с несколькими вкладками
* поддержка навигации мышкой (виртуальный кейпад)
* панели, где можно задать триггера, горячие клавиши и алиасы
* поддержка нескольких профайлов с настройками
* загрузка/выгрузка всех настроек
* фильтрация сообщений каналов в отдельные вкладки на правой панели



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

Клиент в действии: https://dreamland.rocks/mudjs-vue
Исходники: github.com/ruffinakoza/mudjs-vue

Любой желающий может принять участие в разработке.

Оригинальный клиент mudjs: исходники, клиент в работе

Discord: автоматический пост новостей

Поделюсь как настроить постинг новостей в канал Дискорда через вебхук.

Обновления из GitHub


Для своего канала легко создать webhook и настроить репозиторий Github, чтобы он автоматом постил все обновления в этот webhook.
Каждый коммит или даже манипуляции с Issues будут появляться на канале. Всё описано в этой статье.

Обновления изнутри мира


У webhook есть свой API, через который с помощью простого POST-request можно пихать свои сообщения.
В момент отправки новости изнутри мира можно, например, также записывать ее в отдельный временный файл в специальном каталоге.
Потом из крона периодически вычитывать эти файлы и отправлять на Дискорд. Файл должен быть в формате JSON и кодировке utf-8.

Пример файла:

{
   "content": "**Заголовок использует Discord markup и будет выделен жирным**\nРазные улучшения\nмного разных улучшений.\n",
   "username":"Новости мира XXX"
}


Пример команды для отправки:

    curl --request POST \
      -H "Content-Type: application/json" \
      --data @"$filename" \
      --url "https://discordapp.com/api/webhooks/4701xxxxx/cK1xxxx"

Mudjs: эксперимент с кнопками навигации

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

Upd: длинное нажатие на кнопки направления теперь пытается отпереть и открыть двери по этому направлению.


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

Продолжение работы над контекстным меню для предметов в клиенте mudjs

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



Меню также выводится для предметов в магазине, позволяя купить или узнать свойства.



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

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

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

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

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

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

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

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

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



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