Как казаки MUD писали

Недавно на меня нахлынула ностальгия по старым временам и мне захотелось снова побилдить. В чужой мад проситься не хотелось, поэтому начал искать подходящий движок для себя. Одним из требований являлось наличие редактора зон для мада (да, вот такой я избалованный и испорченный, хочу работать с комфортом).

После непродолжительных поисков наткнулся на QuickMUD + Lua, это обычный ROM 2.4b6 к которому приделали возможность писать mprogs'ы на Lua5.1. Для не модифицированного ROM есть редакторы зон, некоторые даже с открытым кодом. Выбор пал на Area Editor v1.34 автора MUSHclient'а Ника Гаммона (исходники редактора доступны здесь). Это достаточно качественный и надежный редактор, который полностью меня устраивал.

Тут появилась проблема русификации QuickMUD'а и я обратился к prool 'у, который великодушно согласился помочь мне, за что ему огромное спасибо. Так появился проект https://bitbucket.org/prool/quickmud-lua-russian/overview. Он без труда собрал QuickMUD под Linux, но с Windows возникла проблема: под cygwin движок собираться отказался. Тогда я вспомнил, что в моей Windows 10 есть встроенный Ubuntu, дальше я действовал по инструкции «Запускаем MUD-сервер на Windows 10». Вкратце, все работает и QuickMUD собрался и запустился, только дополнительно к той инструкции потребовалось еще установить Lua5.1.

Дальше я стал экспериментировать с зонами QuickMUD'а, в основном они устроены также, как и в ROM 2.4b6 и без Lua-скриптов их можно делать в Area Editor. Только после редактора зон надо менять у них кодировку с Windows-1251 на UTF-8 (QuickMUD работает на этой кодировке).

Написав пару комнат, я начал разбираться с тем как делать Lua-триггеры. Зона в ROM представляет собой один файл с расширением .are, который поделен на несколько секций (#AREA, #MOBILES, #OBJECTS, #ROOMS и т.д.). В каждой секции соответственно содержится информация о мобах, комнатах, объектах и т.д. Весьма забавно объяснение почему все это запихнуто в один файл, оказывается так удобнее пересылать их по почте (я не шучу, читайте документацию). Так как mprogs'ы изменены в файле зон QuickMUD'а появилась дополнительная секция #MOBPROGS, в которой содержатся скрипты зоны. Их можно писать как стандартным образом, так и на Lua. Выглядят примерно так:
#MOBPROGS
#{Vnum}
{program_command_1} NL
{program_command_2} NL
{program_command_3} NL
     .   .   .
{program_command_N} NL
"~" NL
     .   .   .
#0

К мобу цепляются командой:
M {Keyword} {Vnum} {Argument}~ NL
Как только вы создадите эту секцию, редактор зон откажется работать с этой зоной, этот раздел он не понимает и выдает ошибку на неверный формат зоны.

Надо сказать, что тут я немного приуныл, так как понял насколько ущербен изначальный ROM 2.4b6 и как мало в нем функционала. MOBprogram'ы даже с луа не дотягивают по функционалу до DG-scripts циркла. Чтоб из него получилась конфетка, нужно очень много работы. Но может оно и к лучшему и так можно написать мад под себя?

Некоторые мысли по улучшению движка. Во-первых, секцию #MOBPROGS нужно выносить в отдельный файл, так из-за ошибки в луа-скрипте мы не потеряем зону полностью. Во-вторых, должна появиться возможность цеплять луа-скрипты не только к мобам, но и к комнатам, объектам и даже целиком ко всему маду сразу. В-третьих, тупо-список area.lst надо заменять на скрипт запускающий зоны с различными параметрами, это позволит сделать мир более гибким и живым.

2 комментария

avatar
  • prool
  • 0
Подтверждаю, все так и было :)

Вот моя краткая заметка об этом — http://blog.mud.kharkov.org/archives/719
avatar
  • prool
  • 0
вот правильный url моей заметки — blog.mud.kharkov.org/?p=719
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.