Erendir ([info]erendir) wrote in [info]ru_mud,

MUD2

Вдохновлённый примером [info]ivalon хочу вынести на обсуждение пару идей и предложение по улучшению и оживлению МАДов:

 В первую очередь я прошу играющих людей порекламировать это сообщество - просто кинуть ссылку в письма. Ибо за отсутствием портала вроде mudconnector.ru даже в проекте стоит попробовать собрать людей хоть тут.

Как верно указал [info]ivalon, МАДы используют технологии начала 90х, а на дворе - 2007 год.
 А последний RFC 861 по telnet вообще датировано 1983 годом.  Раритеты может и  представляют музейную ценность, но  ИМО всё же стоит воспользоваться слегка более современными технололгиями передачи и обработки текста. Например, http...

 Теперь про формат общения клиента с сервером:

 Что хотелось бы видеть в игре: окошко инвентаря - не картинки шмоток, но просто отдельное окошко; то же экипировка, интерактивное окошко заклинаний и скиллов - щёлкнул мышкой или выбрал стрелочками и нажал enter, и клиент послал команду. Так же statusbar вместо/вместе с промптом со всякой полезной информацией о погоде и положении звёзд... Ну, и так далее.
 Как этого на мой взгляд можно было бы добиться:
  Разделим информацию на "окна". Они могут быть двух (ИМХО) видов: поток - текст постоянно дописывается (то, как оно выглядит сейчас); и обновляемое - текст обновляется при каких-либо событиях в игре (например, надел шмотку - окно экипировки обновилось). Т.е. от сервера требуется сообщать клиенту, в какое "окно" идёт информация, и далее действие с этой информацией: для потока добавить текст в конце - тут вроде всё понятно; для обновляемого: изменить значение переменной - это уже интереснее.

 Например: игрок отправляет серверу команду: "оде шлем":
 Сервер возвращает клиенту следующее:
   <event window="main" do="add">Ты надеваешь <i>очень крутой шлем</i>.</event>
   <event window="inventory" do="delete">очень_крутой_шлем</event>
   <event window="equipment" do="change"> голова := "очень_крутой_шлем"</event>
Клиент обрабатывает информацию: выводит сообщение о том, что одет шлем, удаляет из массива в "окне" инвентаря предмет и в "окне" экипировки меняет значение переменной "голова".
 Теперь, если открыть в клиенте окно инвентаря, в заданном сервером и при желании отредактированном под себя пользователем стиле выведется, что одето на персонажа.
 Конечно, всё это очень сыро и грубо, но должно пояснить мою идею.

 Что это даёт технически:
 Игровая информация переданная в формате html либо xhtml может форматироваться  и обрабатываться перед выводом на экран до офигения, причём возможно будет задавать, как именно сервер хочет, чтобы эта информация выводилась при помощи файлов стилей для каждого из "окон", а также возможно создание интерактивности выводимого текста - навёл на имя перса в комнате, а тебе во всплывающей подсказке информацию из "смо имя" дали.
 Клиент может без проблем выводить например ХП в статус-бар (да-да, это можно и сейчас, но обновляться оно будет по получении промпта, а не при реальном изменении.) и не только...
 Да всё что угодно можно сделать!
 Причём т.к. изменения затрагивают только вывод информации, такая можернизация не потребует кардинальной переработки сервера.
 К сожалению, принципиально новый клиент всё же необходим. (Хотя по большому счёту функциональность той же миранды близка к описанному мной клиенту).

UPD1
 
Очевидно, следует различать два этапа общения клиента и сервера:
 Первый этап: установка соединения и настройка дальнейшего общения.
   При подключении к серверу он сообщает клиенту:
- название мира ("arda") - чтобы всё специфическое для этого мира (всяческие стили, картинки, звуки) хранилось в отдельной папке.
- кодировку общения (переформатированием должен заниматься клиент - по аналогии с веб-броузером)
- какие окна (main, inventory...) ему необходимы, а также их формат (для inventory например это - список слотов) и в случае отсутствия соотв. файла со стороны клиента - файл-стиль, способ вывода инфы в конкретном окне (один сервер - один вариант, другой - другой. Для инвентаря в таком файле может содержаться описание таблицы "слот шмот состояние" - слот="голова", шмот = голова, состояние=голова.состояние, фоновой картинки и т.д.)

 Второй этап: собственно общение с сервером, смотри выше.


дополнения: UPD1

 Выношу на суд общественности. Прошу сильно не бить, критику приводить конструктивную.

  • Post a new comment

    Error

    Your reply will be screened

    Your IP address will be recorded 

  • 41 comments

[info]lazyreader

January 14 2007, 11:57:55 UTC 5 years ago

Любой нормальный клиент уже сейчас имеет возможности это делать, лишь бы в выводе движка была хотя бы какая-нибудь разметка. У вас - xml, но можно и другие тэги, вплоть до того, что многие триггера используют ansi-последовательности для цветов.

Правда, не все имплементоры хотят облегчать автоматизацию клиентов.

[info]erendir

January 14 2007, 13:11:27 UTC 5 years ago

Скажите, что Вы понимаете под "любой нормальный клиент" и если жаба таковым является, то как в ней реализовать то, что я описывал?..

[info]steir

January 14 2007, 13:06:57 UTC 5 years ago

В реале все сводится к разработке нового протокола для работы мада.
Если будет протокол, то можно будет адаптировать под него и сервер и клиенты.

В качестве временной альтернативы на стороне клиента можно использовать
что то вроде прокси - программы (наподобие mccp-proxу), когда существующий
клиент работает через спец.программу на этом же компьютере. В задачу этой
прокси будет входит преобразование telnet - новый протокол (mgp - mud game protocol)

Думаю новый протокол даст реальный толчок к развитию.

[info]erendir

January 14 2007, 13:15:35 UTC 5 years ago

вот я и пробую описать, как мог бы выглядеть этот протокол...
Может, Вы мне поможете?..

[info]surger

January 15 2007, 00:39:32 UTC 5 years ago

+1

[info]steir

January 14 2007, 13:43:35 UTC 5 years ago

Начнем с того, что сервер и игровой мир может иметь свои особенности, поэтому
для начала сервер и клиент должны договориться между собой о формате данных, пересылаемых
между ними. Это :

1. Основная кодировка сервера, на которой он работает. Думаю задачу поддержки кодировок
нужно переложить на клиент. Путь он делает преобразование в кодировку сервера. Это лишит
нас необходимости выбирать ее при входе в игру и немного разгрузит сервер на преобразовании.
Тем более это даст возможность сделать в качестве основной кодировки на сервере UNICODE,
что потенциально дает возможность поддержки нескольких языков в маде.

2. Нужно клиенту сообщить количество окон с информацией, которые он поддерживает. Например,
сервер говорит, что у меня есть: inventory, stats, wear, map и т д

Думаю по началу в первой версии протокола достаточно будет от сервера получать те самые изменения в этих самых окнах.

Естественно должно быть сжатие трафика по умолчанию.

Также я думаю на роль клиента можно повесить преобразование команд от игрока к серверу.
Сервер тратит много времени на разбор строк с командами игроков. Если будет что то типа
метаформата - то теоритически можно каждому игроку настроить свой независимый набор команд,
и разгрузит сервер - что уменьшит лаги.

[info]erendir

January 14 2007, 14:39:54 UTC 5 years ago

1.Кодировка: конечно. По аналогии с веб-страничками и браузерами.
2.Настройка: конечно. А также всяческие стили, картинки, звуки...
3.Разбор строк: вот тут я не совсем понял Вашу мысль. Не могли бы Вы пояснить, как это будет выглядеть?..

[info]pessok

January 14 2007, 21:52:30 UTC 5 years ago

ээээээээээ. можно я по порядку похаю? )) спасибо.
1 - клиент по определению сам не может определить кодировку. даже в нашых любимых icq-клиентах кодировку мы ставим сами.
unicode - созднанныйм специально для кириллицы формат
2 - ага. клиент может поддерживать окно инвентари, информация о котором в каждом маде разная... может поддерживать stats,,, а сервер может не поддерживать. делать специально для ленивых поддержку определенных окон иммы не будут.
Насчет первой версии протокола я вообще рыдаю )))))))))))
Эээээ. разработка нового протокола (если мы вкладываем в это слово один смысл) просто нереальное дело для группы энтузиастов. что есть протоколо? информация о том, как слать и получать пакеты... зачем нужно новую-то сстему? на данном этапе развития сети есть 2 протокола - устаревший телнет, который мог мог работать с анси, и tcp/ip которое может передавать все... ВСЕ - мало? нужно придумать новый протоколо и переработать все оси и веб сервера, чтобы они это понимали?.. бред имхо.

[info]pessok

5 years ago

[info]pessok

5 years ago

[info]erendir

5 years ago

[info]ivalon

January 14 2007, 20:51:09 UTC 5 years ago

Очень интересные мысли, классно. Но меня смущает вот такая вещь - что вообще из себя представляет разработка протокола? Насколько это вообще реально? И потом, насколько я понимаю, можно создать протокол, но ведь надо еще заставить операционную систему понимать его. То есть надо не только разработать протокол, но еще и как-то встроить его в систему, ведь так? А как вообще что-то можно встроить в венду? Или для работы ничего не потребуется, кроме сервера и клиента? Объясните этот момент пожалуйста.

[info]erendir

January 14 2007, 21:35:39 UTC 5 years ago

Дело в том, что я и сам достаточно слабо представляю себе механику этого процесса, и большая часть моих знаний о механизме протоколов почерпнута из википедии. Начинать копать нужно здесь.

Прелесть 15-летней давности телнета состояла в простоте: если отвлечься от телнет-команд (оттуда растут ноги проблемы с "я"), абсолютно ненужных для МАДов, то общение клиента-сервера выглядит как пересылка по TCP последовательностей байтов, конец пересылки - спец.символ (GA вроде). И всё.
Преимущество - простота, недостатки многочисленны.
Согласно модели OSI, телнет протокол относится к двум высшим уровням: представления(6) и прикладному(7). Представления - т.к. передача данных идёт описанным выше образом; прикладному - т.к. приложения обрабатывают эти данные именно этим образом. ИМО.
Но в принципе ту же функциональность обеспечивает http. Но просто http для МАДов не совсем подходит - на прикладном уровне по крайней мере... Хотя... Может и подходит - для МАДов в их теперешнем виде.
Но если прикрутить что-то сверху, на этот хттп. То получится замечательно.

Соотв. нужно определить это "что-то" и научить сервер и клиент общаться посредством этого "чего-то".

Т.е. нужно сформулировать свод правил передачи и обработки текста: на данный момент все эти правила (для МАДов) заключается в "конец строки обозначается символом GA, красный цвет - последовательностью символов #$B1[0;31m", причём цвета к телнету отношения не имеют.
Вместо правил передачи текста будет то, что есть в http
А вот формат текста и его интерпретацию нужно определить.

Вот примерно так это я себе представляю.

[info]pessok

January 14 2007, 21:56:32 UTC 5 years ago

не реально

[info]pessok

January 14 2007, 21:42:27 UTC 5 years ago

бууууууууууууууу. даже не стал читать комментарии. чепуха полная.
1 - такой клиент с статус баром и окном инвентаря - змуд, доведенный до ума прямыми руками. не надо говорить, что мад не только для пряморуких. если руки кривые - всегда у пряморукого можно попросить сборку змада. (сам лично змад не пользую, ибо жабы и без всяких там окон хватает)
2 - новые мады уже сейчас работают на xml, что значительнее прогрессивнее.
3 - использовать хтмл вместо телнета? что это даст? телнет позволяет те же самые преобразования текста что и хтмл. !текст я не беру.
4 - уж если руки у человека совсем, не в пример мозгу, прямые, то новый мад-клиент не поможет. затачивать промт на каждый мад - да адалдеть можно.
5 - насчет обновления статус-бара согласен. обновляется только вместе с обновлением промта... но чем этого мало то? промт обновляется в маде "получая ответы с сервера". сделать по-другому невозможно. если нанелси чару дамагу - промт обновился. ессно и статус бар тоже. смысл выводить хиты отдельно? насчет запоминания заклов - да (если брать мады с маной или с запоминанием !потиковым), там пока не тукнешь ентер - статус бар не обновится. но ради такой мелочи переделывать сервер - глупость.
вопрос о том, чтобы слать с сервера НАПРЯМУЮ в одно окно клиента инфу... (ту же ману допустим) это чисто локальный для одного мада и одного клиента, заточенного под этот мад, вопрос
6 - уж если пытаться придумывать новые идеи для мада - надо брать глобальное изменение и новые технологии... я такого придумать не могу, потому тупо хаю идею других ;-)
7 - без обид

[info]ivalon

January 14 2007, 23:42:07 UTC 5 years ago

Ну уж прям, чепуха.. По мне так вполне здраво. Слать-то можно не в окно, слать можно поток с каким-то заголовком например, а в клиенте пользователь создаст окно и создаст правило в клиенте, согласно которому клиент просто будет перенаправлять поток с заданным заголовком в определенное окно, ну, по принципу триггера. Вот и все, а если тебе не надо это окно с инвентарем или с чем там еще, то просто не делай окно и все, сиди по старинке. К тому же не нужно цепляться к конкретике в виде инвентаря, статуса и т.д. Этот принцип можно использовать для чего угодно.
И вообще :) Согласно такой логике мы вообще должны на лошадях до сих пор ездить. Если можно несколько лет растить и воспитывать из жеребенка взрослого коня, то зачем изобретать автомобили, которые собираются за считанные часы?
Так что, pessok, ты имхо не прав :)

[info]pessok

5 years ago

[info]erendir

5 years ago

[info]kender_kelhoff

January 15 2007, 09:36:15 UTC 5 years ago

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

пересылку текста мона настроить через и-оборзеватель, со строкой ввода внизу - вот только нахрена это надо ? что бы новички, разве что, могли зайти.

вы все смотрите не в ту степь. по вашему, если улучшить вывод текста, то мады станут популярнее. брррред. всем игрокам вполне хватает и того, что выводится впрямую. вот если, разве что, улучшить нынешний вывод текста так, что бы не было полупустого экрана и бешеного темпа - вот тогда да.

по мне, так вот создатели граней мира, на плейнскейп.ру, попытались сделать чота новое - скрипты там прикольные, мир получился - как живой, ей-же-ей. но - слабое финансирование неизбежно привело к тому, что часть имплементаторов покинуло проект, по реал-причинам, оставшиеся не смогли поддерживать работу на том же уровне и проект потихоньку загнулся. а ведь могли бы неплохо развиться...

[info]erendir

January 15 2007, 22:04:13 UTC 5 years ago

"так. не знаю, как в других клиентах, а в жабе второе окошко давно юзается. команда аутпут выводит определенный текст в сие."
мне не хватало. Пришлось довольно извратным образом организовывать себе вывод разных каналов в разные окошка вне жабы, ну и там всякая другая инфа. Проигрование звуков опять же делается при помощи скриптов, доступных жабе. Т.е. всё возможно, но можно лучше/удобнее/прямее а также доступнее НЕ знакомым с програмированием хотя бы понаслышке (либо не имеющим времени/желания разбираться). И к тому же гораздо красивее.
"вот если, разве что, улучшить нынешний вывод текста так, что бы не было полупустого экрана и бешеного темпа - вот тогда да."
Вполне. "Изменяемое оконо", прилепленное сверху с описанием текущей комнаты (а также какой-нить антуражной картинкой...), например, слегка разгрузит основное окно. Каналы отдельно. Ну и так далее. Или я неправильно Вас понял?..

[info]o4kapuk

January 15 2007, 10:48:07 UTC 5 years ago

Позвольте мои 5 копеек.

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

2. Передавать клиенту общую и специфическую информацию в виде, отличном от строк которые нужно парсить триггерами - добро. Изменение хитов (например!) может происходить десятками различных способов - замучишься триггеры писать. Ну ладно, положим хиты всегда в промпте а промпт всегда свежий, допустим. Но не в любом маде то же самое можно сказать например о максимальном количестве хитов.

3. Объясните мне, пожалуйста, зачем нужно изобретать отдельный протокол, если он уже есть? Да-да, MXP имею в виду. По поводу поддержки серверами и клиентами MXP находится в положении хоть и плачевном, а все же явно лучшем, нежели протокол, которого пока даже не существует :). Основная фишка как я понял окна, да? Ну, в стандарте MXP они вполне есть. Основная мысль - протокол изобретать не следует, а следует использовать существующий. Тем более что клиенты, его поддерживающие, существуют.
Разумеется, правильно использовать MXP на стороне сервера непросто. Но по-любому проще и правильнее, чем изобретать протокол, писать клиента с поддержкой этого протокола, а потом правильно использовать его на стороне сервера.

Я не спорю что MXP может быть крив, неудобен и непригоден по каким-либо причинам (хотя я ничего такого в спецификации не вычитал). Но перед тем как создавать протокол - мне кажется, необходимо внимательно изучить спецификации существующих протоколов, разработанных примерно для того же самого... Просто для того чтобы взять лучшее. Если вдруг ни один не подойдет. Я считаю, что стремление изобретать своё при наличии существующего в будущем чревато серьезными неприятностями, и мои слова подтверждаются наличием и распространенностью, например, нескольких кодировок русского языка.

Кстати о кодировках. Поддержку UNICODE на сервере в качестве основной (в которой тамагочатся внутренние текстовые процессы) считаю обязательной для современного MUD-сервера. Аналогию с браузерами считаю уместной. По уму - клиент должен определять системную кодовую страницу (ведь браузеры и почтовые клиенты это умеют!) и рассказывать о ней серверу в процессе подключения. А сервер какнить там через iconv...

[info]erendir

January 15 2007, 21:54:04 UTC 5 years ago

Re: Позвольте мои 5 копеек.

1. Тогда возьмём другой протокол. Или слегка изменим хттп (надо будет на него взглянуть хоть...)
2. Именно
3. Почитал МХР. Похоже я себе это и представлял. Можно взять его за основу. Хотя по сути основа - xml.
Неудобства/что добавить заключаются в следующем:
- он использует телнет, а это проблемы с "я".
- он кажется не позволит сделать то, что я обозвал "обновляемым окном"
- там нет предписаний клиенту иметь такие-то файлы (например, можно было бы всю справку запхнуть клиенту, а при подключении проверять дату последнего изменения и при необходимости скачивать новую версию)...
- я бы предпочёл более корректный xml - тогда можно за основу клиента брать любой доступный интерпретатор... (а сервер будет предоставлять клиенту для скачки набор стилей для оформления окон; все настройки клиента на сервер, осуществляемые при подключении будут опять же содержаться в файле .dtd скажем, причём его тоже можно будет один раз залить клиенту, и при новом подключении лишь проверять новую версию. (Я на днях приведу пример такого файла... Надеюсь)
- ИМО слишком много накручено вокруг защиты сервера, это возможно сделать проще (игроку нужно посылать хтмл-тэги в считанных случаях, и этих тэгов всего штук 10, если не меньше - b, i, u, a... Всё остальное, выглядещее как тэг можно при получении перерабатывать на безболезненную последовательность символов (если "<" и ">" заменять на соотв. коды)
- ИМХО там уж очень много накручено вокруг неувеличения трафика...

По уму - как в браузерах - сервер должен сообщать клиенту о своей кодировке, а остальное - забота клиента. То, что сеёчас - полный бред.
Блин, на самом деле написать телнет-прокси для преобразования кодировок из любой в любую - дело получаса, если сталкивался с телнетом (ну, +пол часа на поиске соответствующей компоненты для используемого языка программирования). И час-полтора - если нет. А потом администрация сервера вешает объявление: с 20.07.2007 весь текст сервер отдает в юникоде. Пользуйтесь <ссылка прилагается>.

[info]o4kapuk

5 years ago

[info]erendir

5 years ago

[info]o4kapuk

5 years ago

[info]mr_aleph

January 24 2007, 05:54:28 UTC 5 years ago

Re: Позвольте мои 5 копеек.

как кстати ваш мад поживает?

[info]o4kapuk

5 years ago

[info]steir

January 16 2007, 08:39:58 UTC 5 years ago

1. То что HTML не подходит я согласен. Он не предназначен для этого. Тем более он не нужен в полном объеме.
2. Нужно что то свое. И тот же MXP вполне подходит, хотя я не уверен в этом полностью. Нужно мне еще изучить этот вопрос.
3. То что сервер отдавать должен в юникоде я согласен. Телнет уже не подходит. Конечно это увеличит трафик примерно в 2 раза, но учитывая сжатие я думаю в итоге получится гдето на 25-30% (хотя это нужно еще проверить).

Думаю на первых порах достаточно будет сделать вариант: MXP + UNICODE + PROXY.
PROXY оформить отдельной программкой. Повесить ее в трей (для виндов) и пусть висит.

Anonymous

January 16 2007, 13:13:02 UTC 5 years ago

А зачем юникод-то?

[info]steir

January 16 2007, 20:11:15 UTC 5 years ago

Чтобы больше доступных символов было, например для свитков всяких,
или псевдографики.
Или одновременная возможность работать с несколькими языками.

Anonymous

January 27 2007, 11:05:30 UTC 5 years ago

Вас всех нужно уничтожить! МВАХАХАХАХА!

Лучше б вы придумали новые и хорошие мады с классной идеей, вместо того чтоб придумывать каким еще извращенным способом можно вывести "сб 1". Тьфу.

Вы всерьез считаете что новый мегапротокол с мегаклиентом решит проблему? Ну сделаете вы недолинейку ака адан3(с оченькрутым шлемом, ха-ха-ха!), только с извращенным клиентом и протоколом, и что? К вам повалит куча народу?

Вот только как приходилось в русскоязычных мадах убивать насекомых во всяких садах/мад-школах, так, видимо, и придется.

P.S. В Elendor MUSH можно и telnet'ом играть без особого дискомфорта, и удовольствия от этого меньше не становится.

С уважением, Дут

Anonymous

February 13 2007, 09:52:13 UTC 5 years ago

Bergen

Простите, но чето не то вы говорите. Если надо новый протокол для вывода ОКНА С ИНВЕНТАРЕМ, то чем Вы гвозди забиваете? Микроскопом? Если так хочется окошко можне еще 1 окно к жабе прикрутить и добавить пару строк в сет.
А если выложить в раздел "Новичкам" комплект JMC + простенький воинский сет + MudMapper и небольшой фак как всем этим пользоваться, то решается 99% проблем с подключением и первоночальной адаптацией.

[info]erendir

February 13 2007, 19:56:05 UTC 5 years ago

Re: Bergen

смысл не в окне для вывода строчек по триггеру, а в том, что сервер будет это окно обновлять при определённых событиях.

То бишь: реализация для жабы сейчас могла бы выглядеть как: клиент ждёт определённую строчку - маркировку начала вывода инвентаря - и сбрасывает всё вплоть до конца вывода инвентаря куда-нибудь.
А можно так: при каком-нибудь событии (персонаж одел шмотку) сервер сообщает клиенту об изменении в инвентаре. Что могло бы быть очень удобно.

[info]atho

February 14 2007, 07:00:34 UTC 5 years ago

Забивание гвоздей

Такс, представим что у нас есть окно под инвентарь. Информация в него выводится командой #output_stuff_window.
Чем по результату тригер типа
#act {^Вы одели %1 на свою дурную лысую голову}{#var dyrnaya_lysaya_boshka_helm %1; #output_stuff_window {yellow}{Шлем - %1};drop}{9}{output}
отличается от написания протокола/клиентов?
И чем это так удобно? Вы часто смотрите свой инвентарь/экипировку?
Не выгодней ли для привлечения/удержания игроков добавить еще одну профу, или написать зону?
Еще один вопрос, не потому ли в Былинах сейчас больше всех людей, что там самый большой мир?

wbr Bergen

[info]d_blacky

5 years ago

[info]atho

5 years ago

[info]erendir

5 years ago

[info]atho

5 years ago

[info]erendir

5 years ago

[info]erendir

5 years ago

Create an Account
Forgot your login or password?
Facebook Twitter More login options
English • Español • Deutsch • Русский…