Архивы: по дате | по разделам | по авторам

Плоскоземелье

Архив
автор : Серж Скаут   10.08.1999

Как летит время! Казалось бы, менее полугода назад я писал об очень интересном начинании в деле создания виртуальной реальности в Интернете - языке 3DML. Тогда проект находился на стадии "группа энтузиастов придумала классную штуку". С тех пор фирма Flatland, создавшая 3DML и сопутствующее программное обеспечение, ушла далеко вперед и заручилась поддержкой разнообразных больших дядей. В результате и софта стало побольше, и качеством он стал получше, а уж мирков этих трехмерных расплодилось - хоть пруд пруди  [1]. По законам любой Интернет-тусовки сайт www.flatland.com оброс разнообразными рассылками, форумами, галереями работ и, естественно, группой фанатов, среди которых, как всегда, особенно выделяются японцы.


Жители Страны Восходящего Солнца фанатеют по любому поводу серьезно и с полной самоотдачей. Взгляните на проект "Цифровой Киото" (www.digitalcity.gr.jp/kyoto, рис. 1): с использованием, в общем-то, не слишком гибкого 3DML и множества реальных фотографий в качестве текстур воссоздан облик милого японского городка. В полном виде, кстати, проект занимает 26 Мбайт, а желающим его просмотреть настоятельно рекомендуется обзавестись 128 мегабайтами памяти (я бы еще посоветовал двухмегабитный канал). Есть там, правда, и маленькие кусочки города, мегабайта, так, по два каждый, - с ними можно ознакомиться и на 28-килобитном канале (учитывая streaming-характер загрузки мирка). Хотя в любом случае имеет смысл, скажем, зайти на этот сайт, включить загрузку, а потом пойти пообедать - как раз к вашему возвращению мирок примет более или менее пристойные очертания.

Впрочем, и остальной мир от японцев не отстает. Особо полюбился 3DML поклонникам культового "Tomb Raider" и милашки Лары (рис. 2). В ее честь строятся сайты, украшенные портретами кумирши. По сложившейся традиции их почему-то называют гробницами (tomb). Такая вот странная любовь получается... А сами плоскоземельцы (flatlanders) эту народную любовь поддерживают, направляют в нужное русло и подпитывают постоянными конкурсами, в которых можно выиграть то AMD'шный компьютер, то 3D-акселератор, то еще какую полезную всячину, например, свидание с Ларой или, на худой конец, плакатик...

В общем, 3DML отправился в победное шествие по просторам Интернета. Легкость создания мирков и быстрота работы 3DML-клиента привела к тому, что уже сейчас этот язык рассматривают как реальную альтернативу VRML именно в области Интернет-технологий виртуальной реальности, особенно там, где богатые возможности VRML оказываются избыточными, а недостатки (трудность, а следовательно - и дороговизна создания, большие объемы кода) перевешивают лучшее качество визуализации и хороший моделинг.

Что нам стоит мир построить

Как ясно уже из названия, 3DML относится к подмножеству языков, созданных на базе спецификаций XML (www.xml.com). В настоящее время он полностью не соответствует стандартам, принятым в XML. Так, в 3DML активно используется значок "&", являющийся в XML сильно зарезервированным, кроме того, 3DML не зависит от регистра символов, что с позиций XML тоже неверно. Однако как раз сейчас 3DML коренным образом перерабатывается и приводится к стандартному синтаксису. В случае удачи разработчики из Flatland получают очень серьезный козырь в борьбе с главным конкурентом - языком VRML, который, "благодаря" своей структуре, никак не может стать XML-совместимым.

Рассмотрим подробнее, что же представляет собой 3DML. Я уже рассказывал об этом языке описания VR в статье "Этот плоский трехмерный мир", но, поскольку статья не выложена на сайт "Компьютерры", да и сам 3DML с тех пор претерпел ряд серьезных изменений, вкратце раскрою методологию построения мирка и синтаксис языка еще раз.

Мирки в 3DML строятся из кубиков. Это значит, что ежели в детстве вам посчастливилось иметь конструктор "Лего", то понять принцип построения 3DML-сцены будет очень просто. Если детство было тяжелым и вместо "Лего" из игрушек вам достались только советские монстроподобные кирпичики-городки, придется немного посложнее, но и у вас получится. Если же вы в детстве вообще ни во что не играли - и читать дальше не стоит...

Итак. Мирок представляет собой трехмерный куб, состоящий из кубиков-блоков поменьше, размером 256х256х256 пикселов каждый. Разбиение мирка на подобные блоки весьма условно, поскольку в пределах отведенного пространства может находиться объект любой конфигурации - стена, окно, дверь, дерево и так далее. Важно то, что каждый блок является самостоятельным полноценным объектом, полностью описывающим занимаемый им участок. Блоки, из которых составляется мирок, являются предопределенными - так же, как в "Лего" есть тридцать-сорок видов деталек, так и в 3DML есть конечный набор блоков. Они сгруппированы в наборы, которые хранятся на www.flatland.com. При первоначальном обращении к мирку, использующему какой-либо набор блоков, последний подгружается и сохраняется на жестком диске пользователя. Таким образом, при последующем просмотре какого-нибудь другого мирка, использующего тот же самый набор, из Сети грузится только карта и пользовательские текстуры, что значительно ускоряет весь процесс.

Может показаться, будто подобная упрощенная конструкция не позволит создать что-либо мало-мальски интересное и серьезное. Но это не так! Ведь и в обычном HTML используется не так уж много тегов, а вариантов дизайна Web-страниц просто не счесть. На настоящий момент существует три официальных набора блоков и пять официальных наборов текстур, используемых по умолчанию (текстуры после первоначальной загрузки также кэшируются на жестком диске). Всего официальных блоков ровно сто. Существует также несколько неофициальных наборов блоков, расположенных на blocksets.flatland.com/unofficial  [2], но как управляться с ними - известно лишь их создателям. Хотя для хакеров, я думаю, вскрыть эти наборы да посмотреть, что там такое внутри - пара пустяков... Если кто-нибудь сподобится - отпишите мне, я за вас порадуюсь.

Каждый блок в базовом наборе имеет собственную геометрию и предопределенный набор текстур, но, поскольку 3DML пророс все же из XML, все эти параметры (за исключением геометрии блока) могут быть переопределены. Блоки могут быть цельными, как, к примеру, стены, или "дырявыми", как двери. Разница в том, что в первый вы бьетесь лбом, а через второй проходите, не замечая, пусть даже на него и натянута каменная текстура. Если блок используется "как есть", без переопределения его параметров, то он полностью загружается и прорисовывается из кэша на диске.

Как строится описание мирка? Поскольку 3DML - один из "языков разметки", состоит он, как обычно, из заголовка и "тела". В заголовке определяется название окна, описываются используемые в сцене наборы блоков, указываются размеры карты мира в блоках в длину, ширину и высоту, цвет и текстура для земли и неба, уровень общего освещения и фоновый звук. Кроме того, в заголовке можно описать постоянный источник света типа солнца или луны, с приданием ему соответствующей текстуры.

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

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

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


###...###
#.......#
#.......#
#.......#
#########


Здесь знаком "#" обозначены стены, а знаком "." - пол. А вот так этот уровень будет выглядеть в браузере (рис. 3).

Важным отличием текущей версии 3DML от его прародителя является поддержка двухсимвольных карт. В них каждый блок описывается уже комбинацией из двух символов, что теоретически позволяет иметь более восьми тысяч разных видов строительных элементов. При этом можно переопределить существующий базовый блок, например, обтягивая его другими текстурами, и присвоить ему другой ASCII-определитель. Таким образом, мы наблюдаем классический объектно-ориентированный подход, и в результате возможности нашего "Лего" возрастают безгранично.

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

А под капотом - "роверовский" движок...

К созданию собственного мотора во Flatland подошли серьезно. Как нельзя более кстати пришлось и стратегическое партнерство с Aureal Semiconductor, разработавшей известную технологию трехмерного звука A3D и создавшей чипы Vortex и Vortex 2.

На настоящий момент на сайте Flatland доступна версия 1.2 3DML-клиента под названием "Rover". Ее отличия от стоявшей у меня ранее версии 0.9.х видны невооруженным глазом. В предыдущей версии о плавном перемещении не было и речи, любое движение выглядело дискретным, блочным. Это напоминало даже не "Doom", а "Wolfenschtein 3D" (если кто еще помнит такую игру). При "повороте головы" по правой кнопке "тело" не поворачивало вслед, и дальнейшее движение вперед отправляло вас, к вящему удивлению, совсем в другом направлении. Теперь движение стало помягче, хотя перемещаться можно по-прежнему только в одном из восьми направлений - вправо-влево, вперед-назад и по диагонали. Ошибка с "голововерчением", к счастью, устранена.

Rover стал поддерживать A3D-звук. С этой технологией мирки стали гораздо живее - объекты теперь отражают и поглощают звук. Правда, для этого требуется подгрузить драйверы www.a3d.com/html/home/main/3d_tools.htmс , а еще лучше - обзавестись соответствующей звуковой картой на чипе Vortex. Добавлена также поддержка трехмерных ускорителей, причем включать и выключать как ускорение, так и 3D-звук можно прямо из браузера. Вообще, элементы управления клиента очень удобны и хорошо продуманны.

Наконец появился и релиз под Windows NT, а в настоящее время ведется разработка Rover под другие операционные системы и платформы, включая Macintosh. Что приятно: размер Rover'a по-прежнему значительно меньше существующих VRML-клиентов, а работает он (на глазок) много быстрее. Существуют версии клиентов для Internet Explorer, Netscape Navigator и AOL Browser.

Теперь о неприятном. Как и прежде, Rover способен работать лишь в 16-битном цвете. Другим и, пожалуй, наиболее важным его недостатком является невозможность одновременного просмотра нескольких виртуальных миров в разных окнах браузера. Таким образом, основной закон Интернет-серфинга - открыть как можно больше окон и прыгать между ними, пока контент грузится в фоновом режиме, - для Rover'а неприменим. Но в целом софтинка оставляет впечатление очень цельной, быстрой и хорошо "вылизанной": за неделю работы - никаких багов.

Что можно, что нельзя

Поскольку рассмотрение 3DML без Rover и наоборот совершенно бессмысленно, в дальнейшем эту систему виртуальной реальности в целом я буду обзывать по-простому, по-народному "Плоскоземельем".

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

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

В-третьих, в Плоскоземелье, как я уже говорил, очень хорошо поставлен звук. Помимо фонового можно создавать точечные источники звука, привязывать их к определенным местам мирка, а благодаря технологии A3D еще и добавлять пространственные эффекты  [3].

Кроме того, существует еще и свет. В последних версиях поддерживается аж семь видов световых источников, включая цветные, пульсирующие, направленные, крутящиеся и многое другое. Свет, кстати, просчитывается довольно детально, и при желании, используя разнообразные комбинации световых и звуковых эффектов, можно создавать чрезвычайно психоделические мирки. Более того, в ближайших релизах заявлена поддержка mp3-файлов, что позволит понаделать ну совсем отвязных штук. Только представьте: спускаетесь вы в какое-нибудь подземелье, а там "Pink Floyd" наигрывает...

Для придания исчерпывающего реализма можно использовать собственные текстуры, включая прозрачные и анимированные, а также спрайтовые персонажи в сцене. То есть в принципе технологическое развитие Плоскоземелья достигло той стадии, на которой можно было бы создавать онлайновые игры на уровне старого "Doom"... Если бы не одно но: эти миры мертвы.

По крайней мере, были таковыми до выхода последней версии Rover. Интерактивности в них не было ни капли. Одинокому страннику  [4], занесенному в один из районов этой странной земли, оставалось лишь бродить, глядя по сторонам, слушать звуки, читать поясняющие надписи, рассматривать мигалки да перескакивать по ссылкам и телепортам из одного безлюдья в другое... И ни тебе кнопочку нажать, ни дверку открыть - все вокруг застывшее, как декорация в дешевом Луна-парке.

Понятное дело, интерес к таким миркам быстро пропадал. И разработчики ввели в спецификацию языка новый тег . Пока что он позволяет лишь замещать одни блоки другими в ответ на какие-то действия пользователя, но уже это позволило добавить создаваемым мирам разумной реакции на действия пользователя. Как результат - появилось несколько онлайновых 3DML-игр, к примеру, "Proxima Station" (people.delphi.com/rickadams/proxima/index.html) и "The Temple Gate" (members.tripod.com/danDani/gate.htm, рис. 4). Обещано расширить возможности этого тега и даже ввести в 3DML Java-скрипт, который сейчас поддерживается только в ссылках на внешние HTML-ресурсы, - таким образом, вы можете вызвать из 3DML-мирка, встроенного в HTML-страницу с помощью тега , прописанный в этой же странице скрипт. В дальнейшем же, похоже, усилия разработчиков будут сосредоточены именно на внесении в язык дополнительной интерактивности. Берегись, VRML!

Покамест же люди выходят из положения, как могут. К примеру, в "Цифровом Киото" для оживления обстановки выбран Microsoft Agent.

И наконец, существует несколько трюков, с помощью которых можно изрядно расширить ассортимент предлагаемых строительных блоков. Интересующиеся смогут узнать о них более подробно на www.flatland.com/direct_build.html.

Ручки и нотепад?

Вполне естественно желание читателя узнать, какой инструментарий для разработки 3DML-приложений существует на настоящий момент. Вынужден огорчить поклонников WYSIWYG: никаких "визифиговых" редакторов 3DML нетути и в ближайшее время не предвидится. Все миры создаются по старому доброму принципу, ручками и нотепадом. Точнее, TextPad'ом - довольно продвинутым редактором с возможностью подключения внешних модулей, среди которых есть и библиотека 3DML-тегов. Конечно, это может оттолкнуть людей, воспитанных на Windows 95, но скажу честно: 3DML настолько проще, чем даже HTML, что писать его ручками - сплошное удовольствие... Если же написать хоть строчку кода для вас смерти подобно, а тарифы за доступ в Интернет для вас не имеют никакого значения, скорее смотрите сюда: spotnik.flatland.com.

Строим он-лайн!

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

Чего еще?

Если вы заинтересовались 3DML и горите желанием "день потерять, потом за пять минут долететь", вам следует обратить особое внимание на следующие ресурсы:

- www.flatland.com

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

- www.lgg.ru/~snake/3d

Очень полезный и умный сайт на русском языке. Тем же, кто с английским не в ладах, стоит пойти сюда. Помимо полного перевода руководства и учебника по 3DML, здесь вы найдете также советы и секреты, сильно облегчающие жизнь создателям Плоскоземелья. Вдобавок отсюда же можно скачать и учебник по VRML.

- www.textpad.com

Здесь, как ясно из названия, живет TextPad и библиотеки к нему.

Ну, и, конечно, стоит потратить полдня на то, чтобы посмотреть лучшие 3DML-мирки - это можно сделать прямо с сайта Flatland.



1 (обратно к тексту) - В английской терминологии 3DML-мир называется "spot". По-русски я, хоть и не совсем точно, буду называть это "мирком" с целью отделить мирки виртуальные от мира реального.

2 (обратно к тексту) - По-простому туда не залезть. Кому надо - используйте что-нибудь типа BlackWidow.

3 (обратно к тексту) - Как я был поражен, когда в "Duke Nukem" впервые услышал пространственный звук, бродя вокруг фонтанчика из разнесенной гранатометом водяной колонки! Так вот, здесь можно делать что-то похожее...

4 (обратно к тексту) - Обратите особое внимание на слово "одинокому": к сожалению, в отличие от VRML, в Плоскоземелье нельзя побродить вместе с другом или пообщаться веселой толпой аватаров - в настоящее время поддерживается лишь однопользовательский режим.





© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.