Стрим в Дрим: КРОВОЖАДНЫЕ ГОБЛИНЫ

Гоблины — опасные ребята, как оказалось :D Намутузили мою паладинскую мордочку:



Из геймдевовского:
интересен опыт перехода из МАДов разных движков. Играя в DR я привык спамить скиллы, там на это сервер отвечает каждый раз… В Дриме — забиваешь буфер, начинает лагать :) Ну и вообще бой другой — в ДР руками все надо делать (в итоге все максимально автоматизируется), в Дриме — чар сам бьет, а ты прожимаешь только умения. Ощущения от игры очень разные.

з.ы.
Чтобы очистить буфер: \

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

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



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



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

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

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

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

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: клиент в действии, исходники клиента

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

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

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

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