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

Вот

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

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

Updated 26 jan 2023

Цікаві досліди

14 января 2023 года, Харьков, в 15 ч 38 мин пропал свет из-за российского обстрела. Российская армия сейчас придерживается такой тактики: бить по электростанциям, чтобы украинцы вымерзли от холода.

Сейчас 18 ч 23 мин. Мобильного интернета почти нет, я экспериментировал с соединением смартфона (ОС Андроид) и Макбука (смартфон в режиме раздачи вайфай, то есть точки доступа).

На смартфоне в среде termux запустил tbamud, а с Макбука подключался к нему при помощи MUD клиента tintin++. Вначале не работало из-за тайм-аутов при соединении. Таймауты вызвались отсутствием интернета, то есть отсутствием доступа к DNS и таймаутами вызова gethostbyaddr. Оказалось, авторы MUDа о похожей ситуации уже позаботились и если в конфиге указать опцию nameserver slow, то всё заработает (для редактирования конфига команда cedit). То же самое происходит и при обратной ситуации: мад-сервер tbamud на Макбуке, а tt++ на смартфоне.

Похожий случай был у меня в конце февраля. Тогда мы сбежали из Харькова от обстрелов и пару недель жили в селе Ульяновка Харьковской области. Свет там был, но мобильного интернета практически не было. Я взял с собой два ноутбука и пытался наладить внукам возможность поиграть в Майнкрафт по сети. Еще из железа я взял обычный wi-fi роутер. Я включил роутер, он начал раздавать вайфай без интернета. Я подключил к нему оба ноутбука. Ноутбуки могли пингать друг друга. Запустил на обоих Майнкрафт, java версию. На одном создал локальный мир и расшарил мир по сети. Второй ноут увидел этот мир. Увидеть-то он его увидел, но соединиться не смог. Возможно, ситуация была связана с чем-то похожим на мои эксперименты с MUD. Скорее всего при старте майнкрафты что-то пытались резольвить или получить со своего сервера.

Свет починили к часу ночу 15 января.

Вообще, из-за российских обстрелов отключения света бывают у нас частенько, поэтому хочешь не хочешь, а приходится как-то занимать себя в темноте. У меня Макбук, относительно новый, по крайней мере аккумулятор держит заряд несколько часов, часов пять так точно. Можно программировать, можно читать заранее скачанные электронные книги, можно играть в локальный MUD. В локальный Майнкрафт или Майнтест тоже можно играть, но они сильно жрут энергию, особенно Майнкрафт, написанный на джаве. Майнтест это клон Майнкрафта, написан на С++ и более экономен. Надо, кстати, подучить теорию, почему процессор под нагрузкой тратит больше энергии. Ведь и когда компьютер ничего не считает, через микросхему процессора все равно идет ток, то есть он все равно потребляет энергию.

Еще одна тонкость: при авариях с электричеством почти сразу пропадет мобильная связь. Видимо, генераторы и аккумуляторы стоят не на всех сотах или их хватает очень ненадолго. Иногда в моей квартире авосеть не ловится, а если выйти с фонариком и пройтись в темноте в сторону торгово-развлекательного центра “Украина”, то там иногда можно найти места, где ловит. Почему в темноте, потому что зима, рано темнеет. Летом будет проще, будет длинный день и будет тепло и можно будет гулять вечерами, хотя хотелось бы, чтобы к лету мы победили.

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. Мне так проще, но с точки зрения правильного подхода к архитектуре это не совсем правильно.

VT-100

Как оказалось, протокол VT100 из знакомых мне клиентов реализован только в tintin++ (еще в zmud, cmud). Не реализован в tortilla, mudlet.

Для чего он может быть нужен? Ну, например для редкого мада Low Lands (Lola MUD), у которого есть оригинальный “тактический дисплей” сверху экрана и строка состояния снизу. Впрочем, при желании все это можно наверное сделать и на ANSI escape codes, позиционирование курсора есть и там.

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

В мудах из семейства 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