Новости Virtustan MUD

Последнее время муд стал падать со странными сообщениями

crash here: *** buffer overflow detected ***: terminated

Я погуглил, пишут что это ошибка в модуле EPOLL, я решил его выключить. Залез в код, а он выключен, причем очень давно, когда я добавлял в код поддержку нескольких портов. Тогда надо включить, может ошибка пропадет – по-ламерски подумал я. Стал пытаться включить, не компилируется, из-за моих изменений по многопортовости. Возился, возился, бросил, подумал, что это знак перейти на свежий код.

И Виртустан перешел на свежую версию кода Былин. В результате все мои новые команды и модификации пропали, но они сохранены в старой версии кода, постепенно я их внесу.

Но зато я сделал патч до внесению протокола MSSP в свежий код Былин.
Патч вот.

Приложения.

1. Почему эти ошибки стали возникать только в последнее время? Я постоянно обновляю свой сервер, это общие правила безопасности, без этого нельзя. Но с обновлениями приходят не только новые фичи, но и новые баги. Или как другая версия, мир изменился (я чувствую это в земле, я чувствую это в воде) и появился новый тип интернет-атак с длинным запросом. А атаки в интернете постоянно развиватся, например последние дни я начал замечать в логах nginx запросы на файлы типа backup.sql (к мудам это не имеет никакого отношения, но подобных запросов раньше не было)

2. Что такое EPOLL. Работа с периферийными устройствами может быть по прерыванию или по запросу. Муды обычно работают по запросу (httpd и Майнкрафт тоже). Но есть несколько версий библиотек для этого. Первая, это старый классический poll/select, вторая EPOLL, а есть еще EPOLL2. Код Былин может унаследовал от своего отца Circle два способа – poll и EPOLL (см. в коде операторы #ifdef EPOLL). В Линуксе можно и так и так, а в cygwin и macOS компилируется тольков варианте без EPOLL.

3. Поддержка доступа к маду по нескольким портам в самом маде необязательна. Ее можно сделать снаружи мада, например, средствами iptable. Но пока Виртустан работает только на порту 3000 (хост мой стандарный, mud.kharkov.org)

И снова сборки

Вот

http://mud.kharkov.org/files/towers_win64_v2.tgz

это бинарники для 64-разрядной Виндовс первой версии мада Towers of Aladon. Это 1997 год, по сути это очень частично русифицированный ROM. Игра имеет архивное и музейное значение, я думаю.

Updated 26 jan 2023

Shadow Realms MUD

Внезапно я занялся этим мудом. Его исходники в виде архива были очень давно выложены на сайте этого муда (сайт сейчас не работает). Я их причесал, они стали у меня запускаться. Вот они https://gitlab.com/prool/shadow_realms_mud

А теперь я адаптировал исходный код к cygwin и сделал виндовую сборку этого муда:

http://mud.kharkov.org/files/srmud_win64.zip

Кроме того, я запустил этот муд на своем сервере (порт 4444, хост mud.kharkov.org). А оригинальный муд не работает, как и его сайт

О локалке Граней Мира

Вначале краткий отчет о моих попытках сделать виндовые бинарники (“локалки”) Дримленда и Граней мира: не получилось.

Я консультировался с Руффиной и другими программистами этих миров, они ничем помочь мне не смогли. Большинство мад-серверов базируется на серверах с ОС Linux, чаще всего Ubuntu, и разработка идет под них, под их компиляторы, библиотеки, особенности сетевой архитектуры. Совместимость типа “этот код компилируется везде” бывает очень редко. А в случае Дрима и Граней у их команды есть свой метод, они берут обычный мад и оборачивают вокруг него обертку из своего кода со скриптовым языком Fenia. И вот эта обертка, написанная на С++ очень чувствительна к версии компилятора и у меня на Винде в cygwin не собирается или собирается с проблемами, не позволяющими маду запускаться. Кстати, метод Дрима чем-то похож на то, как из обычного (ванильного) сервера Майнкрафт делается сервер Forge или Fabric, только в случае Майнкрафта обертка делается не на уровне исходника, а на уровне бинарного кода, потому что Майн – закрытое проприетарное программное обеспечение. И если вернуться к мадам, еще существует встраивание в мад-сервер скриптового языка lua, тоже вроде по похожей схеме, как и в Дриме. Лично я как смиренный программист восьмидесятых скриптовые языки не люблю и у меня мад-сервера монолитные, и многие возможности я вношу на уровне кода ядра, то есть они hardcoded. Мне так проще, но с точки зрения правильного подхода к архитектуре это не совсем правильно.

“Вся Галлия делится на три части”

В мудах из семейства Diku/Circle/ROM можно выделить три части. Первая это код, то есть исходный текст на языке C или C++ или их сочетании. Вторая это мир, то есть игровые зоны, в текстовом формате файлов zon/wld/mob/obj/trg/shp для ветки Circle и в едином формате are для ветки MERC/ROM. Третью выделяю только я, это то, что я называю “файлы данных” и чаще всего они находятся в каталоге misc. Там находится “цифирь”, то есть все параметры классов, умений, заклинаний, уровней и так далее. Часть из этих цифирей находится в коде, и для их изменения надо уметь перекомпилировать исходники (и иметь их в наличии). А вот те цифры, которые находятся в файлах данных можно просто поменять и перезапустить мад (или выполнить в маде команду reload) и все в мире изменится.

Чтобы запустить у себя сервер надо иметь все три части, причем код может быть как в виде готового бинарника, так и в виде исходников, что конечно предпочтительнее, по крайней мере для тех, кто знает основы программирования. А иногда эти части распространяются отдельно (и порой имеют различные лицензии и правовые статусы). Например, tbamud присутствует на github полностью, то есть код, файлы и зоны. Эти зоны они называют stock zones, но некоторые авторы зон (билдеры) не разрешают свободно распространять свои зоны. Кроме авторского произвола (или желания заработать) здесь есть и игровая логика – изучив файлы зоны игроки получат преимущество, так как заранее, не играя будут знать топологию зоны, квесты, параметры монстров и так далее. Это как в D&D игрокам сильно не рекомендуется читать Книгу мастера (спойлеры, “вам потом неинтересно будет”).

А вот Былины (несмотря на сложный характер отцов-основателей) были чуть ли не первым русскоязычным мадом, опубликовавшим свой исходный код вместе со “стоковыми” файлами и тремя начальным зонами. Ну, вы знаете эту душераздирающую историю, несколько раз из штаб-квартиры Былин происходили утечки других зон (и файлов), на базе которых делали пиратские “локалки”, например широко известная в узких кругах “НВОшная локалка” или не менее известное Зеркало.

Недавно я нашел на github англоязычный Luminari MUD, который объявлен как последователь tbamud (а tba – наследник Circle), причем в Luminari использован механизм D20. Я решил его поковырять, оказалось, опубликован только код, который достаточно легко собрался. И что дальше с ним делать? Оказалось, что в Luminari используется хранение базы игроков и некоторые параметры и хелпы в базе mysql, то есть в качестве “стоковых файлов” должен был быть дамп этой базы, которого в поставке не было. И игровых зон не было. Игровые зоны я взял со старой версии  Luminari, а проблему с базой решил самым кардинальным образом – я начал жестоко курочить код (я называю это методом дурацкого хака и помечаю коментарием prool fool), и получится франкенштейн, который как-то запускался. Он не умеет хранить базу игроков, в нем надо постоянно регистрироваться, но походить по комнатам можно. Этот хак я еще не опубликовал, я не думаю, что он может быть кому-то сильно интересен.

А совсем недавно я нашел исходники русскоязычного муда по Ведьмаку. Начал их ковырять, и увидел, что они сделаны на базе Былин и чего-старого типа старого Circle или старого ROM. Информация об игроках там хранится в 24 подкаталогах с именами в виде латинских букв. То есть игрок Алекс будет лежать в каталоге a, игрок Пруль в p, Романа в r и так далее. Это было в каком-то старом ROM, потому что новые Circle (как и Былины) используют 6 каталогов A-E F-J K-O P-T U-Z ZZZ. Но остальные потроха у Ведьмака былиновские, но файлов и зон не было от слова совсем. Я откомпилировал его (это оказалось просто) и начал подбрасывать ему файлы данных от старого Зеркала, при ошибках делая их пустыми (то есть умений и заклинаний не будет). И постепенно сервер начал запускаться, потом я подбросил ему одну зону от Зеркала и ЭТО запустилось.

Для желающих поковырять вот моя франкенштейн-версия на gitlab https://gitlab.com/prool/cholera-mud

Называется она Холера муд. Ведьмак Геральт в фильмах и играх любил ругаться по-польски, слово KURWA я посчитал слишком неприличным, а вот CHOLERA в самый раз.

А вот сборка Холеры для Виндовс http://mud.kharkov.org/files/cholera-mud.zip

Она же временно крутится у меня на сервере на порту 7777 (хост мой обычный, mud.kharkov.org)

Впрочем, оригинальный Ведьмак вполне себе жив и крутится вот здесь: game.mudlast.ru 2700

MUD server binaries for Windows. Russian and English

Здесь будут как сборки, сделанные (откомпилированные) мной, так и не мной. На некоторых сайтах мадов выкладывается готовая сборка с несколькими зонами для билдеров и вообще для ознакомления. А Дримлендовцы выложили полный мир, правда собрать его для Винды мне не удалось (а вот под Ubuntu он собирается, не скажу, ч то легко, но таки да). Эти сборки на жаргоне игроков иногда называют локалками.

Мои мады. My works, in Russian language

Виртустан http://files.mud.kharkov.org/virtustan-mud/vmud-windows/

Зеркало http://files.mud.kharkov.org/zerkalo

И не мои мады (некоторые сборки делали авторы этих мадов, некоторые я). Not my works, in Russian

Берег Семи Воплощений http://files.mud.kharkov.org/c7i/

Опасная фантазия http://files.mud.kharkov.org/df2/ (там несколько сборок)

Сфера Миров http://files.mud.kharkov.org/sow/

PlaneScape http://files.mud.kharkov.org/psmud/test_server.zip – эта локалка не работает, я проверил

SR MUD http://files.mud.kharkov.org/sr_mud/ (несколько сборок)

https://github.com/Muderru/AdanCreationKit (сервер с 4 зонами, еще на их сайте есть другая версия его)

SOG – Shadow of Gray http://files.mud.kharkov.org/SoG/

Towers of Aladon http://files.mud.kharkov.org/towers_win64_v2.tgz

Forgotten Dungeon http://files.mud.kharkov.org/fdungeon.zip

И англоязычные сервера (все сборки делал я). My works about English codebases:

CircleMUD http://files.mud.kharkov.org/circle-windows/

DikuMUD http://files.mud.kharkov.org/dikumud_for_windows.zip

EmpireMUD http://mud.kharkov.org/files/empiremud

MERC http://files.mud.kharkov.org/merc/

ROM http://files.mud.kharkov.org/rom/

tbaMUD http://files.mud.kharkov.org/tbamud_for_windows.zip

Anatolia MUD http://files.mud.kharkov.org/anatoliamud.zip

Magma MUD http://files.mud.kharkov.org/magma/

Envy MUD Envy

Vampire Wars MUD http://files.mud.kharkov.org/archive/vw-mud-win64.zip

ПРИМЕЧАНИЕ. Не все “локалки”, то есть сборки мад-серверов для Виндов работоспособные. Если моя локалка глючит, напишите мне, я постараюсь исправить, а чужие сборки поправить невозможно.

Updated 25-Feb-2024