Microsoft Virtual Worlds
Microsoft Virtual Worlds
Архитектура платформы Virtual Worlds
Редактирование в процессе работы
Будущее платформы Virtual Worlds
В данном обзоре мы познакомимся с одной из систем для создания виртуальных миров — Microsoft Virtual Worlds. Эта система — результат исследования, проводившегося Microsoft Research, целью которого было создание программной платформы, поддерживающей многопользовательские среды для организации двух- и трехмерных онлайновых сообществ. Microsoft Virtual Worlds — это распределенная объектно-ориентированная архитектура, включающая в себя, в частности, такие компоненты, как общение между клиентом и сервером и хранилища данных. Платформа состоит из набора COM-объектов, реализованных в ряде динамических библиотек, а также из нескольких компонентов ActiveX и серверных программ.
Платформа Microsoft Virtual Worlds может использоваться для различных целей — в области коммерции, образования, развлечений и т.п. Поддерживается текстовая, графическая, голосовая информация, возможность реализации аватаров (персонажей, представляющих реальных людей), их общения друг с другом (в версии 1.5 поддерживается до 30 аватаров).
Для создания миров и объектов в распоряжение разработчика предоставляются различные средства. Имеется возможность изменения и настройки миров в процессе работы; пользовательский интерфейс базируется на DHTML и VBScript — таким образом, управлять объектами и их поведением можно из Web-страниц.
В настоящее время Microsoft Virtual Worlds — это некоммерческий продукт, доступный на Web-сайте фирмы по адресу: http://vworlds.research.microsoft.com/.
Немного истории
Уже в течение нескольких лет подразделение Microsoft Research Virtual Worlds Group (VWG) проводит исследования использования Internet как социального интерфейса. В 1996 году VWG разработала чат-интерфейсы Microsoft V-Chat и Comic Chat (в настоящее время — Microsoft Chat).
Microsoft V-Chat — это мультимедийная, многопользовательская среда, позволяющая людям общаться в режиме онлайн из двух- и трехмерных сред, используя графические персонажи — аватары. Аватары в Microsoft V-Chat поддерживают полный набор жестов, позволяющих пользователям самовыражаться более естественным образом. Пользователи могут выбирать аватары из обширного набора или создавать собственные, применяя специальное средство — V-Chat Avatar Creation Wizard. Также возможно использование звуков, анимации и визуальных эффектов. V-Chat представляет собой высокоуровневый интерфейс к IRC и, таким образом, пользователи могут вести диалог в чисто текстовом режиме.
Microsoft Chat реализует онлайновый вариант комиксов, когда вводимый текст отображается в виде «облачков», а персонажи привносят в общение эмоции и анимацию. Microsoft Chat также является высокоуровневым интерфейсом к IRC.
Virtual Worlds Platform — это текущий проект Virtual Worlds Group, расширяющий концепцию онлайнового общения до реализации виртуальных миров с многочисленными персонажами.
Архитектура платформы Virtual Worlds
При создании платформы Virtual Worlds Platform разработчики ставили перед собой следующие задачи:
- реализация распределенной архитектуры;
- возможность сохранения объектов и их состояния;
- расширяемость системы конечными пользователями;
- настраиваемость системы во время ее работы;
- наличие средств защиты.
В следующих разделах мы более подробно рассмотрим, как эти задачи были решены в Virtual Worlds Platform.
Объектная модель
Так как Virtual Worlds Platform базируется на COM и OLE Automation, в основе платформы лежит объектная модель, состоящая из нескольких базовых объектов, среди которых такие объекты, как Room, Avatar, Portal и Artifact. Все они базируются на простом объекте Thing. Пользователи системы могут добавлять свойства и методы объектов за счет механизмов наследования.
Объект Thing является родительским объектом для всех остальных объектов и задает свойства и методы, присутствующие у всех объектов. К основным свойствам можно отнести имя объекта, ссылку на родительский объект, ссылку на владельца (объект Avatar), текстовое описание и геометрическую модель, ассоциированную с объектом. Объект Thing также задает объект-контейнер и список вложенных объектов. Основным методом всех объектов является метод MoveInto, изменяющий контейнер, содержащий данный объект.
Объект Artifact практически не отличается от объекта Thing, но его метод MoveInto позволяет пользователям выбирать объекты, собирать их и освобождаться от них.
Объекты Room и Portal задают топологию виртуального мира. Объект Room (комната) имеет свойства Entrance (вход) и Exit (выход), которые дают список порталов, ведущих в то или иное место. Комнаты могут быть«закрыты» или связаны со списком пользователей, имеющих доступ в них. Таким образом пользователи могут создавать«уединенные» места для приватного общения. Объект Portal имеет свойства Source и Destination, описывающие связываемые порталами комнаты. Каждая комната представляет собой двух- или трехмерное дискретное пространство с внутренней и внешней геометрией и структурами для предотвращения коллизий. Порталы также могут содержать данные для визуального представления.
Объект Avatar имеет большой набор свойств и методов, описывающих объект, представляющий пользователя внутри виртуального мира. Среди свойств отметим пол аватара (но не обязательно пол пользователя), список«друзей», список игнорируемых пользователей, домашнюю комнату, дополнительную пользовательскую информацию, пароль. К методам аватара относятся метод Tell, передающий текстовые строки пользователю, и IsConnected, позволяющий узнать из скриптовой программы, соответствует ли аватар подключенному к системе пользователю.
Помимо поддержки механизмов наследования, в Virtual Worlds Platform реализован механизм событий, облегчающий написание методов, реагирующих на действия системы. Объекты Virtual Worlds Platform поддерживают метод FireEvent, позволяющий инициировать возникновение какого-либо события. Например, при вызове метода Alex.FireEvent(«MyEvent») вызываются следующие методы:
- методы OnContainerMyEvent для всех объектов в контексте объекта Alex;
- метод OnContentMyEvent контейнера объекта Alex;
- метод OnMyEvent объекта Alex;
- методы OnPeerMyEvent всех объектов в контейнере объекта Alex.
События возникают и в таких случаях, как подсоединение и отсоединение, общение, перемещение, вход и выход из комнат, пересечение границ и т.п.
Распределенная архитектура
Virtual Worlds Platform — это многопользовательская мультимедийная система. Пользователи могут «войти» в мир и общаться с другими пользователями, находящимися в этом мире. Для облегчения координации действий и реализации механизмов сохранения объектов и их состояния в Virtual Worlds Platform используется архитектура «клиент-сервер». Поддержка этой архитектуры встроена в объектную модель, минуя DCOM — распределенную компонентную объектную модель, которая не может быть использована здесь в силу отсутствия в ней ряда специфичных для Virtual Worlds Platform функций. При разработке объектной модели Virtual Worlds Platform были приняты следующие допущения:
- клиентские объекты «знают», что они представляют собой proxy серверных объектов;
- клиентские изменения свойств объектов автоматически передаются серверу и другим клиентам;
- серверные изменения свойств объектов автоматически передаются клиентам;
- объекты могут быть помечены как «клиентские» или как «серверные»;
- свойства могут быть помечены как«локальные» — их изменения остаются незамеченными для сервера и других клиентов;
- клиентские вызовы серверных методов автоматически передаются серверу;
- серверные вызовы клиентских методов автоматически передаются клиентам.
Для пользователей (разработчиков виртуальных миров с использованием V-Worlds SDK) общение между клиентом и сервером происходит невидимо. После того как клиент подсоединился к серверу, изменения свойств автоматически реплицируются (на сервере и других клиентах), а методы автоматически выполняются на клиенте или на сервере. Отметим, что удаленные методы выполняются асинхронно — синхронное выполнение методов в архитектуре «клиент-сервер» требует написания дополнительного кода.
Обновление информации
Каждый клиент имеет набор локально кэшируемых объектов. К этим объектам относятся:
- объект Avatar, представляющий конкретного пользователя;
- объекты Artifact, представляющие артефакты, собранные аватаром;
- объект Room — комната, в которой находится пользовательский аватар;
- другие объекты в комнате (аватары, артефакты, комнаты и т.п.).
Клиентский кэш создается, когда пользователь (его аватар) «входит» в комнату. В это время все предыдущие пользовательские объекты удаляются из кэш-памяти и создается новый набор объектов, получаемых с сервера. Некоторые объекты не включаются в кэш. К ним, в частности, относится содержимое других аватаров. Поскольку текущий набор объектов связан с конкретной комнатой, пользователи могут управлять только объектами, ассоциированными с данным местоположением аватара. Так как аватар не может быть одновременно в двух местах, пользователь должен переместить свой аватар в определенную комнату, прежде чем управлять его объектами.
Преимущество используемого алгоритма заключается в существенном упрощении логики обновления клиентского кэша. Зная, какие объекты находятся в клиентской кэш-памяти, сервер может определить, какие клиенты должны быть оповещены об изменениях.
Помимо описанного выше способа обновления информации и оповещения об изменениях, в V-Worlds существует ряд механизмов для включения дополнительных объектов в клиентский кэш.
Объекты (через соответствующее свойство) могут быть помечены как «открытые» или «закрытые». Когда контейнер открыт, сервер посылает локальные копии его содержимого всем клиентам, находящимся в данной комнате. Некоторые объекты могут быть помечены как «привлекающие внимание». В данном случае нет необходимости в использовании механизма «открыт/закрыт», так как содержимое такого объекта будет явно «видно» всем клиентам, даже если объект закрыт. И, наконец, существует специальный механизм для регистрации интереса к объекту. Если клиент«проявил» интерес к такому объекту, он будет информирован об изменениях объекта независимо от иерархии содержимого или других механизмов.
Сохранение изменений
Возможность создания и изменения объектов является принципиальным отличием V-Worlds от графических чат-систем. Все изменения значений свойств объектов сохраняются сервером в файлах протокола. Некоторые свойства могут иметь атрибут volatile, указывающий на то, что их изменения не должны заноситься в протокол. При загрузке объекта сервер считывает значения его свойств из протокола и автоматически вносит необходимые изменения.
Редактирование в процессе работы
Одна из привлекательных возможностей V-Worlds — это поддержка редактирования в процессе работы. V-Worlds позволяет создавать и модифицировать объекты, даже когда они используются сервером или другими клиентами. V-Worlds также позволяет добавлять и удалять методы и свойства. После того как изменения внесены, V-Worlds сообщает о них другим клиентам, а также заносит изменения в протокол, который ведется на сервере.
Средства защиты
Возможность редактирования объектов, их свойств и методов в процессе работы требует наличия средств защиты информации. В V-Worlds используется механизм защиты, базирующийся на принципе, согласно которому код может модифицировать объекты, принадлежащие владельцу данного кода. Для этого необходимо, чтобы:
- все методы и объекты были ассоциированы с владельцем;
- система могла определить права того или иного пользователя;
- доступ ко всем методам и свойствам мог быть защищен.
Все объекты в V-Worlds имеют свойство Owner, указывающее на объект Avatar, создавший тот или иной объект. Так как пользователь всегда имеет связанный с ним аватар, то объект Avatar используется для задания контекста защиты. Этот контекст защиты затем используется для определения прав того или иного пользователя на создание и модификацию свойств и методов объектов.
Реализация
Как мы отметили выше, Microsoft Virtual Worlds базируется на COM-интерфейсах. Основным интерфейсом служит интерфейс IThing, являющийся предком для всех остальных объектов и обеспечивающий базовую функциональность Microsoft Virtual Worlds, а именно:
- возможность добавления и удаления методов и свойств объектов;
- возможность доступа к методам и свойствам, реализацию наследования, сохранения объектов;
- поддержку низкоуровневых свойств всех объектов;
- доступ к механизму OLE Automation.
После того как мы кратко рассмотрели архитектуру Microsoft Virtual Worlds, давайте познакомимся со средствами разработки, предоставляемыми для создания виртуальных миров для этой платформы.
Средства разработки
Платформа Microsoft Virtual Worlds состоит из сервера и обширного набора средств разработки — Microsoft Virtual Worlds SDK.
Средства разработки построены на основе мастеров, которые позволяют выполнить процесс построения виртуального мира шаг за шагом — выбор типа создаваемого мира, добавление комнат, порталов, объектов и т.п.
Входящие в состав SDK средства позволяют создавать новые миры «с нуля» либо редактировать существующие, а также создавать и присваивать свойства любым объектам. Использование специализированных редакторов позволяет изменять геометрию и границы объекта. В SDK есть средства для выбора объектов, их размещения, изменения перспективы, масштабирования, вращения, изменения размеров и создания границ.
Кроме того, можно редактировать сами объекты и их свойства. Для этой цели служит редактор Virtual Worlds Object Explorer, предоставляющий единый интерфейс для просмотра всех существующих объектов и их редактирования. Данный редактор также может использоваться и в пакетном режиме.
Онлайновая справочная система содержит всю документацию по Virtual Worlds — от руководства пользователя до описания процесса создания собственных виртуальных миров.
В состав SDK также входят многочисленные примеры, позволяющие быстро освоить использование и создание виртуальных миров.
Отдельное средство — Avatar Construction Kit (ACK) — служит для создания и редактирования аватаров.
С его помощью можно использовать GIF-файлы для создания основных жестов аватаров, просматривать анимационные последовательности, а также изменять уже существующие аватары. Данный редактор работает с файлами в формате SPR, состоящими из 24 графических изображений. После того как аватар создан или изменен, его можно опубликовать на сервере, и он будет доступен для выбора из редактора виртуальных миров.
Будущее платформы Virtual Worlds
В настоящее время Microsoft Virtual Worlds существует в версии 1.5. В дальнейшем планируется расширить данную платформу за счет следующих изменений и улучшений:
- уменьшение размера сообщений, пересылаемых между клиентом и сервером (в текущей версии средний размер сообщения равен 130 байт);
- увеличение скорости обмена данными между клиентом и сервером;
- реализация поддержки многопотоковых транзакций на сервере;
- улучшение механизмов идентификации пользователей и защиты объектов;
- использование сервисов каталогов для ведения протоколов;
- введение возможности хостинга виртуальных миров на нескольких серверах;
- реализация средств для миграции объектов;
- введение различных мультимедийных расширений, включая перемещаемые камеры вместо статических, используемых в текущей версии;
- реализация новых средств для создания аватаров на базе Avatar Construction Kit.
Заключение
В данном обзоре мы рассмотрели Microsoft Virtual Worlds — программную платформу, поддерживающую многопользовательские среды для создания двух- и трехмерных онлайновых сообществ. Мы познакомились с архитектурой этой платформы, средствами разработки, позволяющими авторам разрабатывать собственные виртуальные миры, расширять функциональность существующих и создавать аватары, а также показали возможные направления дальнейшего развития платформы Microsoft Virtual Worlds. Дополнительную информацию и обновления программного обеспечения можно найти на Web-сайте по адресу: http:// vworlds.research.microsoft.com/. На нашем CD-ROM представлены средства разработки Microsoft Virtual Worlds SDK и ряд примеров виртуальных миров, которые можно использовать для дальнейшего изучения Microsoft Virtual Worlds.
КомпьютерПресс 8'2000