О создании дву- и многоязычных мадов

Я предлагаю метод фальшпанели. То есть у мада есть основной язык, им будет, например, английский. Вся внутренняя инфа на английском. Для англоязычных игроков все работает как обычно. А для русскоязычных на лету переводится. Имеется ввиду конечно не использование онлайн-переводчиков, а заранее сделанный перевод.

Что нибудь примерно такое:

сообщения выводят игроку при помощи новой функции

msg_to_char_multilingual(ch,«Invalid exit»);

И англоязычный игрок увидит сообщение Invalid exit

А для русскоязычного игрока функция обратится в базе переводов (обычному текстовому файлу) и найдет соответствие

Invalid exit — Неверный выход

и выдаст игроку текст «Неверный выход»

Похожим, только более сложным и громоздким образом работает многоязычный интерфейс gettext (https://ru.wikipedia.org/wiki/Gettext)

А откуда система узнает, что игрок русскоязычный? Обратите внимание на первый параметр функции msg_to_char_multilingual, он такой же, как у реальной функции msg_to_char — это ссылка на структуру, описывающую игрока. Надо будет ввести в параметры игрока еще один параметр «Language». Или для большей простоты использовать какой-нибудь уже существующий малоиспользуемый параметр

Для ускорения поиска по строкам для оригинальных строк (английских) вычисляются хеши (например CRC32) и поиск по файле переводов будет осуществляться по хешам

Но современные сервера столь быстродействующи, а мады столь малопосещаемы, что оптимизация может и не понадобится. Или понадобится нескоро

Русификация EmpireMUD

Начал русификацию мада EmpireMUD по методу, описанному в предыдущем сообщении. EmpireMUD, кстати, отличается тем, что мир в нем состоит не из комнат, а как бы непрерывный и достаточно большой

https://github.com/prool/EmpireMUD-2.0-Beta

К вопросу о русификации имен игроков в английских кодовых базах

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

Поэтому только что мне в голову пришла простейшая идея, которую я назвал романизацией (по названию города Рима, где был изобретен латинский алфавит)

Игрок вводит имя кириллицей и оно сразу «романизируется», то есть аккуратно транслитерируется латиницей. И дальше внутри мада имя латинское и имена файлов данных латинские.

А при выводе сообщений на экран, везде, где выводится имя игрока GET_NAME(player) оно перед выводом дероманизируется:

deromanize(GET_NAME(player))

то есть транслитерируется назад

Bad news

Сервис mudstats.com, собирающий статистику мадов (в основном англоязычных, но пара русских там тоже есть) со вчерашнего дня не отвечает (таймауты)

UPDATE: 16 октября, вечер. Уже отвечает

Вышла новая версия клиента tintin++ 2.01.3

Вышла новая версия клиента tintin++ 2.01.3

Оригинальная версия собралась у меня в Линуксах без проблем. Также я обновил свой мод тинтина (prooltin)

https://github.com/prool/virtustan

Prool fool

Prool fool (англ.) – Пруль дурак

Фигня какая-то происходит с кодировкой UTF-8. После моих экспериментов она начала глючить, я откатил к последней версии кода Зеркала с Гитхаба, все равно глючит. Я проглядел какой-то фактор. (Остальные кодировки работают без проблем) Кстати, UTF глючила и когда я собирал Зеркало на сервере blind-games.ru.

Нам потребуются самые тщательные наблюдения! (И.Азимов, “Конец Вечности”)

* * *

Дальнейшие эксперименты: при обычном запуске Зеркала UTF работает. При запуске под отладчиком нет

В Виртустан-маде UTF нормально работает в обоих случаях!!!!!111111

Memory leak in Zerkalo MUD

Проверить, при аптайме в 20 дней Зеркало устраивает memory leak, жрет память и вылетает по segmentation. Может, это из-за того, что примерно в то же время памяти нажирается и squid, а свапа нет. А может, это не связано между собой

Пока я запустил Зеркало под отладчиком, посмотрим. Хотя под отладчиком оно ведет себя немного по другому, например, начинают глючить процедуры конвертации в utf8 (нормально работающие без отладчика и нормально работающие и с и без отладчика в Виртустан-маде, а также нормально работающие в Былинах). Где-то или неинициализированная переменная или еще большая фигня, например массив налазит на массив или на другие переменные

UPDATE. Оказалось, это была проблема сервера: у виртуальной машины не было свопа и спустя 20 дней работы всю память доедал Сквид, и начинал работать Out of memory killer и Зеркало глючило. Своп сделан и всё заработало нормально, максимальный аптайм пока 41 день, но это потому, что я перезагружаю сервер при обновлениях ядра, а ядро я обновляю, когда оно обновляется в дистрибутиве

E-mail

В коде моих мадов (Виртустана и Зеркала) есть код, который посылает мне е-мейл при входе игрока. И по умолчанию он включен. И вот я только что получил сообщение от кого-то, кто инсталлировал мой мад, взяв код или с моего сайта или с моего аккаунта в Гитхаб (я коды выкладываю).

Это не шпионский код, и я могу проконсультировать, как его отключить или поменять е-мейл на свой

В будущих версиях он будет

– выключен по умолчанию
– включаться, настраиваться и выключаться без перекомпиляции, из файла конфига

BAN-2

Меня, кстати, забанили на Фейсбуке на 24 часа, потому что я вообразил себя Джорджем Карлином и тупо шутил про негров. И это хорошо, займусь всяким программированием, в частности мадами. А Фейсбук зло

Я купил два “стула офисных”

Вы спросите, почему новость о покупке мной стульев имеет отношение к мадам? А потому, что когда сидишь за компьютером на неправильном стуле часами, почти сутками, потом болит спина и жопа. А правильный стул слегка помогает, но все равно надо делать перерывы каждый час. Как ни странно, ни директорские кресла на колесиках ни прочее офисное барокко мне не нравится, а вот самый дешевый офисный стул вполне эргономичен: такой у меня и в офисе и дома.