Стероиды для Diku

DikuMUD был замечательным «hack and slash» мадом, созданным студентами Копенгагенского университета в 1991 году. Он стал родоначальником огромного семейства мадов и движков для них, таких как CircleMUD, Merc и SMAUG.
Для разнообразия поведения мобов в DikuMUD помимо захардкоженных в движке функций, для билдеров предлагалось несколько простых макросов. Они и положили начало для нескольких скриптовых языков, использующихся в семействе Diku-мадов и по сей день. Здесь я хочу рассказать о наиболее ярких представителях этих языков.

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

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

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

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

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

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



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



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

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

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

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

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

SkotOS

Компания Skotos Tech выложила в открытый доступ игровую библиотеку (game library) SkotOS. Она использовалась в нескольких коммерческих играх компании. Со списком игр можно ознакомиться здесь. А тут есть несколько скриншотов. Из библиотеки убраны все проприетарные части, поэтому сейчас она в полурабочем состоянии и ищутся волонтеры, способные помочь довести ее до стабильного состояния. Библиотека SkotOS работает с игровым драйвером DGD (Dworkin's Game Driver) — это реимплементация с нуля движка LPmud, позволяющая использовать его в коммерческих целях.