Еженедельник Свет в Интернет

Главная

Новости

Статьи и обзоры
  Горожанин
  Обнинск в Internet
  Web Design
  Hardware
  Software
  Безопасность
  Серфинг
  Игродром
  Relax
  Технологии
  Web-обзор
  Интернет-ликбез
  Опросник
  УП-Технологии
  ART.net

Ссылки

Архив

О нас

Контакты

Форумы


Основатель:
К.Николаенко

Главный Редактор:
С.Коротков

Web Design:
Neutron


Наш спонсор






Порт POPULAR.RU
POPULAR.RU RegionalBanner Network.






Океан


НПП Метра - промышленные электронные автомобильные вагонные весы
Goldy Interior - салон офисной мебели: кабинеты руководителей, мебель для персонала

= Технологии =

"БЛИЦ" ТРЕХМЕРНОГО МИРА

(с) Сергей Лосев

На вопрос, что же все-таки представляет собой 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, языке программирования или, если хотите, игровом движке. Узнав, как с его помощью управлять камерой, погружать трехмерную сцену в туман, управлять текстурами и др., можно сделать большой серьезный шаг в сторону...игр.

Продолжение следует.



Copyright © Свет в Internet   Designed by Свет в Internet