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

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

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

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

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

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

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

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

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

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

Инструкция для билдеров

Коллега Дариан написал инструкцию для билдеров по командам онлайнового редактора OLC (on-line creating), встроенного в мад Былины:

https://www.bylins.su/builder/olc/

Такие же редакторы есть и в мадах Зеркало и Виртустан, основанных на коде Былин. Более того, похожие команды редактирования есть практически по всех мадах, построенных на базе кода Circle или его потомков, например в tbaMUD. Естественно, с некоторыми различиями, например в англоязычных мадах нет падежей.

Как я ехал в метро

Сегодня утром по дороге на работу вместо того, чтобы залипать в твиттер, залипал в терминал termux на Андроиде и игрался со сборкой мад-серверов под Андроид.

Как я уже ранее писал, tbamud собирается с пол-пинка. ROM собирается. Виртустан муд собирается, но выпадает в корку на каком-то вызове lexical cast. А в Былинах-0 (это очень-очень-очень старая версия Былин, по сути слегка русифицированный Circle) внезапно нашелся ассемблерный код на ассемблере x86 (а телефон построен на процессоре ARM). Перепишу эти вставки на C и посмотрю, что будет дальше.

Кстати, когда телефон подключается к Wi-Fi, запущенный там мад-сервер может быть виден из Интернета, а вот при использовании 3G/4G – нет

Update. Код Былин-0 оказался психологически несовместим с используемым в Андроиде “богомерзким кленгом”. А tbamud и rom – рулез!

GloryMUD reforged

На домене glorymud.kharkov.org, на порту 5000 в качестве Глоримада или “моего текущего англоязычного мада”  уже крутится не мой любимый tbamud,  а EmpireMUD с модулем перевода на русский (с тем же модулем, что я намедни невозбранно вставил в свой клиент prooltin).

tbamud, конечно, хорош и прельстивен, но в имперском маде непрерывный мир и если я таки заставлю себя разобраться с графикой, я смогу сделать графический клиент с tile-графикой, ну примерно как  в “Сказке”

Каминг аут

На работе выдали Макбук Air. Чувствую себя кем-то типа Ренли Баратеона или Лораса Тирелла.

В порядке освоения OS X (которая основана на ядре FreeBSD) собрал там мад-клиент prooltin (мой мод tintin++). Собралось вообще без вопросов. Еще собрал мад-сервер tbamud, здесь пришлось в Makefile указать полный путь к библиотеке libiconv (а до этого инсталлировать ее при помощи brew, а до этого инсталлировать пакетный менеджер brew). Компилятор здесь, кстати, хипстерский богомерзкий clang, а не православный gcc

Glory MUD

Внезапно тараканы в моей голове сказали, что хорошо бы сделать англоязычный мад. На него начнут заходить китайцы и индусы и у меня будет посещаемость! Не зная хорошо английского я взял готовую кодовую базу с зонами, а именно tbaMUD и запустил всё это на 5000 порту. Мад будет называться “Glory to Heroes” (Слава героям!).

Сайт мада http://glorymud.kharkov.org
Адрес мада glorymud.kharkov.org 5000
Модифицированные мною исходники мада

Это тот самый tbaMUD, который я начал русифицировать неск. месяцев тому назад. Для англоязычного релиза я его дерусифицировал назад (сохранив переведенные файлы с расширениями .rus) и теперь неторопливо думаю о том, как сделать двуязычный мад

“Рубай компот, он жирный!”

Роясь в окаменелом гавне коде tbamud, который произошел от circlemud,  я обнаружил вот что: там есть тип жидкости “вода” (LIQ_WATER), а есть тип “чистая вода” (LIQ_CLEARWATER). Так вот, обычная вода утоляет и жажду и голод. А чистая вода только жажду. Что там у них в воде содержится? Питательные микроорганизмы?

Я, кстати, от нефиг делать, слегка его русифицирую