Главная
Новости
Статьи и обзоры
Горожанин
Обнинск в Internet
Web Design
Hardware
Software
Безопасность
Серфинг
Игродром
Relax
Технологии
Web-обзор
Интернет-ликбез
Опросник
УП-Технологии
ART.net
Ссылки
Архив
О нас
Контакты
Форумы
Основатель: К.Николаенко
Главный Редактор: С.Коротков
Web Design: Neutron
|
|
= Технологии =
"БЛИЦ" ТРЕХМЕРНОГО МИРА
(с) Сергей Лосев
На вопрос, что же все-таки представляет собой Blitz Basic, ответить очень просто - это по-умному организованный игровой движок, в котором для управления объектами используется расширенный и дополненный диалект языка программирования Basic.
Его возможности, конечно, несравнимы с такими коммерческими пакетами, как Quake, LithTech, Unreal. Впрочем, для своего ценового диапазона (от 100 долл.) он достаточно мощный. По силам Blitz Basic даже оналайновые ролевые игры с довольно неплохой графикой. Кроме того, это расширяемая система. При помощи DLL-модулей, создаваемых в профессиональных средах разработки (Visual Studio, Delphi), можно сколь угодно долго совершенствовать ее. На до отметить, что вокруг Blitz Basic собралось уже много профессионалов. Они выпускают коммерческие и некоммерческие библиотеки, модули и программы, к примеру, упрощающие создание игровых сцен.
Blitz Basic способен на многое. И хотя его возможности не бесконечны, первые шаги внутрь 3D-игр с его помощью вполне реальны. Скажем, благодаря ему можно быстро разобраться с системой координат и нормалями, научиться позиционировать объекты в пространстве, фиксировать и обрабатывать столкновения ("коллизии"), управлять камерой, создавать вершины (вертексы) и т.п.
ПРОСТОЕ СЛОЖНОЕ 3D
Сегодня уже довольно трудно встретить компьютерную игру без трехмерной графики. Разве что в некоторых логических играх и аркадах все еще применяются плоские объекты, да и они все чаще имитируются средствами 3D. Так что статью о Blitz Basic, пожалуй, нужно начать с одного тезиса: трехмерная графика безгранична, и о ней можно говорить бесконечно долго. К терминам "полигоны", "текстуры", "туман", "модели" и прочим подобным терминам, без сомнения, известным каждому, кто когда-либо встречался с компьютерными играми, можно добавить сотню других, менее известных. Отображение и взаимодействие объектов, накладывание текстур и генерация теней, рябь на водной поверхности и разлетающиеся при взрыве осколки - каждой из этих задач можно посвятить отдельную статью.
К примеру, рассмотрим так называемые outdoor-игры, т.е. игры, действие которых происходит, что называется, на свежем воздухе. В них отображается ландшафт, поверх которого - 2D и 3D-модели. Во внутреннем представлении он выглядит не столь привлекательно - как правило, каждый ландшафт "раскладывается" на карту высот, текстурную карту и карту освещения (карту теней). Программа "собирает" эти разрозненные кусочки и, используя специальные алгоритмы (о них можно узнать на сайте ), генерирует ландшафт со всеми его холмами, оврагами и равнинами. Добавление к ландшафту водоемов - следующая, порой нетривиальная задача. В играх одних жанров достаточно сделать синеватую рябь - это сойдет за воду. В других, наоборот, надо просчитывать движение каждой волны, используя в общем-то известные еще со школьных времен математические формулы. Наконец, поверх ландшафта рисуются объекты. Трава должна "шевелиться" по ветру, животные и люди - перемещаться, отбрасывая при этом правильные тени. Когда количество отображаемых объектов (пусть даже низкополигональных) достигает нескольких сотен, программа начинает ощутимо тормозить. Так что не менее важная задача - оптимизация, решаемая, к примеру, удалением невидимых на экране объектов и снижением качества моделей и полигонов удаленных объектов.
Другой пример - полная противоположность первому. В играх, действие которых происходит в закрытых помещениях, не нужно стремиться к показу гигантских пространств, а, следовательно, можно сосредоточиться на деталях. Например, аккуратно прорисовать интерьер комнат и коридоров, добавив множество мелочей и не забыв предусмотреть т.н. карту освещений (lightmap) - специальную текстуру, накладываемую на весь уровень целиком или на отдельные видимые на экране залы и комнаты. Для Blitz Basic разработан специальный формат B3D, в котором, как и в более известном BSP (этот формат и подобные ему используются в Quake-подобных играх), поддерживается и карта освещений, и обработка коллизий. Впрочем, в Blitz Basic можно использовать и формат BSP, причем загрузить целый уровень так же просто, как, скажем, создать куб. Иллюстрирует сказанное небольшой пример:
level=LoadBSP ("example.bsp",.8)
BSPAmbientLight level, 0, 266, 0
While Not KeyDown (1)
RenderWorld
Flip
Wend
End
Вы можете использовать формат B3D, BSP, 3DS или даже Х (этот формат является родным для DirectX). Впрочем, в отличие от BSP, которые создаются в специализированных пакетах, нередко довольно громоздких, B3D или Х-уровни, по сути, редактируются в обычных пакетах 3D-графики, таких, как, например, 3D StudioMax. Конвертеры же форматов доступны бесплатно на сайтах о Blitz Basic или о программировании графики/игр вообще.
Совершенно очевидно, что в рамках одной статьи рассказать о всех премудростях 3D нет никакой возможности, да и основная тема немного другая - продемонстрировать на примерах, как ключевые игровые алгоритмы реализованы в Blitz Basic, языке программирования или, если хотите, игровом движке. Узнав, как с его помощью управлять камерой, погружать трехмерную сцену в туман, управлять текстурами и др., можно сделать большой серьезный шаг в сторону...игр.
Продолжение следует.
|
|