A MOO (MUD, объектно-ориентированный) - это текстовая онлайн-система виртуальной реальности, к которой одновременно подключено несколько пользователей (игроков).
Термин MOO используется в двух различных, но связанных смыслах. Один из них относится к тем программам, которые произошли от исходного сервера MOO, а другой - к любому MUD, который использует объектно-ориентированные методы для организации своей базы данных объектов, особенно если он делает это аналогичным образом. мода на оригинальный MOO или его производные. Большая часть этой статьи относится к исходному MOO и его прямым потомкам, но список MOO-подобных систем см. В Non-Descendant MOOs.
Первоначальный сервер MOO был разработан Стивеном Уайтом на основе его опыта создания программируемой системы TinyMUCK. В дальнейшем была проведена дополнительная разработка и поддержка со стороны основателя LambdaMOO и бывшего сотрудника Xerox PARC, Павла Кертиса.
. Одной из самых отличительных черт MOO является то, что его пользователи может выполнять объектно-ориентированное программирование на сервере, в конечном итоге расширяя и изменяя поведение сервера для всех. Примеры таких изменений включают создание новых комнат и объектов, создание новых общих объектов для использования другими и изменение способа работы интерфейса MOO. Для расширения используется язык программирования MOO, и многие MOO содержат удобные библиотеки глаголов, которые могут быть использованы программистами в коде, известном как служебные программы. Язык программирования MOO - это предметно-ориентированный язык программирования.
MOO - это доступные по сети, многопользовательские, программируемые, интерактивные системы, хорошо подходящие для создания текстовых приключенческих игр, систем конференц-связи и другое программное обеспечение для совместной работы. Однако наиболее часто они используются в качестве виртуальных реальностей с низкой пропускной способностью и множеством участников. Они использовались в академической среде для дистанционного обучения, сотрудничества (например, Университета разнообразия ), систем групповых решений и обучения объектно-ориентированным концепциям; но другие в основном носят социальный характер или используются для ролевых видеоигр или просто для того, чтобы воспользоваться возможностями программирования. Они также использовались в научных исследованиях виртуального присутствия.
. Чаще всего к MOOs подключаются пользователи с помощью клиента, который использует протокол telnet, который обеспечивает Остаточное соединение с хостом для ретрансляции вывода и отправки команд. Однако некоторые разработали веб-интерфейсы или другие подобные методы; однако это обычно ограничивает взаимодействие, которое может иметь пользователь, обычно до такой степени, что он не взаимодействует, а вместо этого может просматривать объекты и обнаруживать типичную информацию. Развитие сетей между MOO также привело к созданию SunNET, сети без хаба, обеспечивающей обмен данными между MOO и добавляющих дополнительные возможности для разработки кросс-MOO, включая сетевые каналы. Другая сеть под названием GNA-NET, разработанная Густаво Глусманом из BioMOO, объединила семнадцать сайтов, в основном образовательных. Большинство этих MOO организовали онлайн-классы или другие ранние версии дистанционного обучения.
Каждый MOO хранит содержание и состояние всех своих объектов в постоянной базе данных объектов, который предотвращает потерю объектов при перезагрузке серверного программного обеспечения MOO или компьютера, на котором он находится.
Новые MOO должны выбрать начальную базу данных, из которой они будут запускать MOO, или они могут использовать минимальную базу данных, которая содержит только необходимые объекты для запуска MOO. Существует несколько таких «основных» баз данных MOO, которые служат в качестве основы кода и утилит для запуска MOO, включая LambdaCore (из LambdaMOO ), MinimalDB (считается минимально необходимым кодом и утилит для работы полезно в MOO), (из) и (из LinguaMOO ).
Каждому объекту в MOO присваивается номер, и на него можно ссылаться по этому номеру с префиксом #, а также по его имени, когда пользователь находится в присутствии объекта. Администраторы, также известные как мастера, могут управлять MOO и присваивать этим объектам определенные глобальные имена с префиксом $, процесс, известный как согласование. В них также есть родительские системы, и каждый объект будет иметь родителя, что обычно в конечном итоге приводит к корневому классу, также известному как №1. # 0 также зарезервирован как специальный системный объект, который отвечает за управление списком глобальных имен, входящими сетевыми соединениями и другой информацией, связанной с работой системы.
MOO, вместе со всеми его племянниками, началась с текстовых приключенческих игр. С появлением Интернета MUD был сформирован как сетевая версия одной из этих игр. В конечном итоге он превратился в дерево различных типов MUD, одним из которых стал MOO.
Стивен Уайт (также известный под именами «Ghondahrl» и «ghond») написал первую версию сервера MOO, которая была выпущена 2 мая 1990 г. и использовалась для работы сервера под названием « ". Павел Кертис, сотрудник Xerox PARC, также известный под именами «Lambda» и «Haakon», взял базовый дизайн, язык и код, исправил ошибки и добавил функции для выпуска второй версии. называется «LambdaMOO» 30 октября 1990 года.
Согласно Джилл Серпентелли в ее статье «Структура разговора и личностные корреляты электронного общения»:
MOO изначально разрабатывался как MUD Сервер в том же общем стиле (разделяя большую часть синтаксиса команд и соглашений сообщества), что и TinyMUD.
. В настоящее время существует два распределения кода сервера MOO. Более популярный из двух, сервер LambdaMOO, назван так, как указание на тесную историческую и постоянную связь кода сервера MOO с первым общедоступным MOO, LambdaMOO.
Именно эта версия MOO LambdaMOO приобрела популярность в начале 1990-х годов и остается наиболее широко используемым распространением MOO. Павел Кертис продолжал обслуживать сервер несколько лет. Среди других первых участников сервера LambdaMOO были пользователи Тим Аллен («Gemba»), «Gary_Severn», Роджер Крю («Rog»), Джуди Андерсон («yduJ») и Эрик Остром (известный как «Joe Feedback»). Позже Эрик Остром обслуживал сервер, и теперь сервер обслуживается Беном Джексоном и Джеем Карлсоном и имеет проект LambdaMOO SourceForge.net.
Было показано, что поведение в социальных MOO и ролевых MOO различается. Например, в одном из ранних исследований изучали, участвовали ли пользователи в смене пола (то есть в онлайн-переходе на другой пол). Большинство участников (60 процентов) социальных MOO никогда не занимались сменой пола, в то время как большинство (56,7 процента) участников ролевых MOO это делали. Однако большинство из тех, кто занимался сменой пола, делали это в среднем только в 10% случаев. Исследование также показало, что основным препятствием для смены пола было убеждение, что это нечестно и манипулятивно.
Некоторые серверы используют объектно-ориентированные характеристики в стиле "MOO", не являясь потомками исходного сервера MOO, в том смысле, что они используют мало или совсем не используют исходный код этого сервера и используют внутренние языки, которые более или менее несовместим с языком программирования MOO. Ни один из них не достиг популярности LambdaMOO или его родственников.
Стивен Уайт продолжил писать новую похожую систему под названием, хотя она никогда не получала такой же широкой пользовательской базы, как MOO. Другая, более поздняя попытка создания программируемого объектно-ориентированного MUD-сервера была написана Грегом Хадсоном и позже поддержана Брэндоном Гиллеспи под названием «Genesis».
Один необычный MOO, не имеющий реального отношения к оригинальному MOO - это называется Муа. mooix уникален среди MUD в том, что он использует базовую операционную систему UNIX для решения всех проблем многозадачности и сетевых проблем. Это приводит к нескольким уникальным побочным эффектам, одним из которых является то, что MOO можно программировать на любом языке. mooix был написан после неудачной попытки написать MOO полностью на Perl под названием perlmoo.
На Python написано несколько MOO, включая POO, MOOP и ErisMUD.
MOO - это часто используется в программировании игр, таких как PointSet.
Участники (обычно называемые пользователями) подключаются к MOO с помощью telnet или какой-либо другой, более специализированной клиентской программы. После подключения они обычно получают приветственное сообщение, объясняющее, как создать нового персонажа или подключиться к существующему.
Почти каждая команда анализируется сервером в вызов процедуры MOO или команды, которая фактически выполняет работу. Таким образом, программирование на языке программирования MOO является центральной частью создания нетривиальных расширений базы данных, и, следовательно, виртуальная реальность.
Все MOO предоставляют флаг под названием Wizard; при установке на игрока, игрок получает возможность просматривать и изменять почти все, что есть в базе данных MOO. Такие игроки называются Волшебниками и обычно составляют основу для администрирования MOO. Назначенных владельцев MOO иногда называют Archwizards.
Эти мастера могут ограничивать доступ к MOO, а также размещать новости и отслеживать журналы. Разрешения мастера необходимы для изменения и даже выполнения команд и свойств, которыми пользователь не владеет или которые не доступны для чтения / записи. Все глаголы и свойства в объектах имеют соответствующие флаги, которые пользователь может изменить, чтобы определить свое текущее состояние. Они также могут назначать глобальные имена любому объекту.
Строители - это игроки, которым даны ограниченные возможности создавать объекты и области в MOO, тогда как программисты также могут программировать в MOO.