Пятница, 19.04.2024, 15:38
Приветствую Вас Гость
Главная | Рецензия DBPro от David'а Good'a - Форум | Регистрация | Вход
Меню сайта
Наш опрос
Где вы планируете встретить новый год?
1. Дома
2. Не дома
Всего ответов: 8
Форма входа
Друзья сайта
Статистика
Форум
[ Новые сообщения · Участники · Правила форума · Поиск ]
  • Страница 1 из 1
  • 1
Форум » Программирование » DarkBasic » Рецензия DBPro от David'а Good'a
Рецензия DBPro от David'а Good'a
JohnKDate: Вторник, 27.03.2007, 20:31 | Message # 1
EA FAN
Группа: Администраторы
Сообщений: 408
Статус: Offline
DarkBASIC повзрослел!

DarkBASIC повзрослел! - именно таким слоганом разродилась вся забугорная пресса, не помню в каком году, в связи с выходом Microsoft Visual Basic для MS-DOS. И именно его я по праву применил для обозвания своего обзора DarkBASIC Proofessional. Действительно, малыш Дарк выбрался из пеленок и семимильными шагами устремился в направлении профессионального геймдевелопмента.

Ну не буду более заниматься словоблудием и приступлю непосредственно к рассмотрению DBPro.

На что в первую очередь мы обращаем внимание, когда начинаем знакомится с новым языком программирования?

Часть первая: IDE

Да, теперь редактор DBPro можно по праву назвать Интегрированной Средой Разработки. И не только по внешнему виду и функциям, но и по изменившемуся принципу работы. IDE VB и C++ схожи, но я думаю авторы сделали уклон в пользу второго. IDE напоминает C++.
Что мы имеем. Меню и панель инструментов а-ля Microsoft Windows XP. Что очень приятно. Все выглядит стильно и профессионально.
Расположение кнопок и пунктов меню выбрано правильно, все легко находится и быстро запоминается.
Что очень удобно - DBPro, как и все современные языки работает не с отдельным файлом, а с проектом. Поэтому такой штукой как #include рекомендую не пользоваться, могут быть траблы. Удобнее создать проект, а потом добавлять к нему новые модули или добавлять существующие по мере надобности.
Управление проектом ведется с помощью многофункциональной проектной панели, расположенной слева.
При первом старте IDE она выключена и на ее месте красуется "DarkBasic Pro Assistant". Закрывайте его. Появится диалоговое окно, закрывайте. Все, проектная панель заняла свое место.
Под проектной панелью куча кнопок - красные, зеленые и синие. Жмем красную пимпу "Files" под панелью и панель превращается в броузер модулей проекта. Кнопкой "Browse" добавляем существующий модуль, а "Add New" добавляет новый.
Главный файл проекта имеет расширение *.dbpro. В нем хранятся имена файлов всех подключенных модулей и настройки. Файлы модулей имеют расширение *.dba, т.е. как у программ DB.
На этой же панели, в режиме "Source Files", Вы легко сможете перемещаться по модулям проекта. Достаточно два раза щелкнуть по названию требуемого модуля.
Кстати, поскольку DBPro теперь считает *.dba модулями программы, а не отдельными программами, при попытке их открытия IDE начинает вас материть почем зря, а если Вы все же откроете, предложит Вам преобразовать сие в проект.

Продолжим знакомство с проектной панелью. Нажатие по красной пимпе "Settings" переключает ее в режим "Configure EXE Settings". Здесь Вы можете настроить параметры создаваемого EXE. Если в DB мы имели всего два типа - обычный и с включенными ресурсами, то теперь этот список значительно расширился.

Перечислю этот список.

Normal EXE - создает обычный EXE.

Small EXE and PCK file - создается очень маленький EXE в который компилируются только Ваши скрипты, а все функции движка помещаются в отдельный файл-библиотеку *.pck размером 3 с лишним мегабайт. Зачем это надо? Точно не знаю, но примерно предполагаю. Допустим, у вас уже есть *.pck, тогда с сайта вы качаете только EXE и медиа файлы. Если мое предположение не верно, тогда не знаю, зачем это нужно.

Installer Type EXE - будет создан обычный EXE и упакован в инсталлятор вместе со всеми файлами проекта.

EXE with Attached Media - ну, это как в старом добром DB - создается EXE с включенными в него ресурсами игры. Между прочим, этот тип удобен только для небольших Интернет проектов. Если получившийся EXE превышает 15/20 Мб, не пользуйтесь им, если не хотите прослыть ламером и получить пинок под зад от потенциального клиента :-). Windows плохо пережевывает EXE такого размера, память засоряется и в конце концов обрушивается лавиной в виде тормозов вплоть до полного зависания компа.

Здесь же имеется рамка "Display Settings", но о ней я расскажу позже.

Переходим к зеленым кнопкам проектной панели. Тут все просто. Пимпа "Functions" отобразит список всех функций проекта. Двойным щелчком по названию функции мы легко переместимся в ее код. Пимпа "Labels" работает как и предыдущая, только отображает не функции, а метки. "Variables" - переменные.

Синие кнопки. Эти кнопки переводят проектную панель в режим управления ресурсами проекта.

Media - используйте эту пимпу для добавления ресурсов (модели, звук, текстуры) если хотите создать один EXE с включенными ресурсами.
Cursors - то же, только для курсоров.
Icons - Наконец-то!!! Теперь Вы легко сможете менять значок Вашей программы.

Ну вот, с проектной панелью разобрались, переходим к панели инструментов. Первые 11 пимп понятны и ежу, нас же интересуют последние 4 кнопки.

- создает EXE попутно проверяя синтаксис (почему попутно, читайте в следующей части).

- аналог кнопки "RUN" в DB - создает EXE и запускает (почему, узнаете в следующей части).

- Нет жукам! - новая фича - дебаггер. Полезная вещь, но в данном случае реализована не криво. Если запустим нашу программу в этом режиме, то, теоритически, в специальном окне сможем наблюдать содержимое переменных по ходу выполнения программы. На практике все сложнее.

- пошаговый режим. Вот это очень удобная вещь. Запустив программу в этом режиме, мы получаем специальную панель, с помощью которой можем менять скорость выполнения программы (бегунком снизу) или выполнять ее вручную кнопкой "Step Program". При этом, в окне под кнопками, мы видим выполняющуюся строку программы.

Тут надо сказать, что эти фичи сыроваты. Например, в VB это реализовано намного круче. Там режим "Step" и "Debug" объединены. Т.е. можно выполнять программу в режиме "Step" и при этом, если навести курсор мыши в окне редактора на имя любой переменной, появляется всплывающее окошко с содержимым переменной.

Но все равно, присутствие этих режимов даже в таком виде, значительно облегчает отладку программы. Теперь мы легко сможем узнать, при выполнении какой функции, произошел баг.

Несколько слов о редакторе. Настройки цветовой гаммы шрифта по умолчанию мне не понравились, но не беда, все легко настраивается в меню "Tools"=>"System Options". Что я и сделал, быстренько настроил редактор по типу C++/VB. Хорошо. Удобно. Ну, это было и в альтернативном редакторе DarkEDIT. А что нового. Новое есть. Очень полезная фича. Правда, к сожалению, реализована опять таки криво, да и глючно. Короче, теперь, если навести курсор мыши на какую либо функцию в Вашей программе и щелкнуть, появляется маленькое всплывающее окошко с подсказкой, какие параметры требует эта функция. Вещь конечно нужная, но: Во-первых, пока заставишь появиться эту подсказку, вспотеешь мышью елозить. Опять же фича действует только на функции языка/движка DBPro. Вот в C++ и VB это работает как для функций языка, так и для пользовательских функций и типов, а также подключаемых библиотек. Подсказка появляется сразу после набора названия функции и нажатия пробела.

Но, в общем, пользоваться можно, фича облегчит жизнь людям, страдающим склерозом :-).

Еще новинка - слева от пользовательских функций появились пимпы с минусом. Нажимаешь на пимпу - функция сворачивается и остается лишь ее название с параметрами. Это должно быть удобно для больших проектов.

И на последок об одном удобстве. В альтернативном редакторе DarkEDIT для DarkBasic все строки были пронумерованы, но из-за того, что DB не работал с проектами, а дополнительные модули подключались с помощью #include, редактор выдавал неверный номер строки, в которой происходила ошибка. В DBPro же теперь строки тоже пронумерованы, а поскольку работаем мы теперь с проектом, компилятор выдает точный номер строки, в которой произошел сбой. Более того, в некоторых обстоятельствах он переводит курсор на эту строку и выделяет ее цветом (цвет зависит от настроек, по умолчанию - красным).

Часть вторая: Компилятор

Раньше и редактор и компилятор и движок содержались в одном файле DB.EXE.
Теперь все кардинально изменилось и устроено по типу C++/VB. Это изменение принесло много удобств, но без ложки дегтя не обошлось.

Как это было в DB. DB работал по типу Microsoft QuickBasic (с которого и слизывался). Когда мы жали на кнопку "RUN" в среде DB, последний начинал выполнять программу. Когда мы жали кнопку "Make EXE", он отпочковывал свой exe-интерпретатор на диск, а затем компилировал наши скрипты в p-код и дописывал к созданному EXE.

Как это делается в VB. При вводе строк в редактор, VB "на лету" компилирует их в p-код прямо в памяти. При этом тут же происходит проверка синтаксиса. Когда мы жмем "RUN" VB моментально линкует готовый p-код и начинает выполнять - опять же в памяти. Когда мы жмем "Compile" он компилирует код в EXE файл. При этом до компиляции мы можем указать компилятору, создать машинный код или p-код. В последнем случае все происходит как в DB, а в первом как в С++.

Как это делается в C++ :-)). Когда мы жмем "RUN" - создается готовый EXE и запускается. Когда мы жмем "Compile" - создается EXE и не запускается.

Как: :-)))) :это делается в DBPro. На сей раз Ли Бамбер сделал все профессионально и как в С++ (обязательно читайте слова "профессионально" и "как в С++" раздельно).

DBPro как и С++ не имеет компилятора p-code и соответственно не может выполнить программу на лету из IDE. Тепер, хотим ли мы быстро посмотреть результат изменения одной строки или проверить синтаксис, DB всегда создает этот пресловутый EXE! Соответственно на отладку тратится больше времени т.к. полная компиляция занимает больше времени.

Более того, функцию проверки синтаксиса по этой причине вообще упразднили. Синтаксис можно проверить кнопкой "Создать EXE".

Ну вот, разобрались как IDE взаимодействует с компилятором, теперь коротко о процессе компиляции.

Если в DB все было в одном DB.EXE, то теперь все разделено на части. 3D движок хранится в нескольких DLL. Они разделены по функциям. Компилятор и линкер состоят из двух EXE.

Теперь DBPro не просто компилятор, а компилятор в машинный код. Делается все так. Ваш код компилируется в машинный код. И в дело вступает линкер. Он создает EXE и начинает линковать машинный код из DLL, а затем Ваш. Все, программа готова.

Часть третья: Движок

Если провести опрос среди программистов, кормящихся на разработке игр, какой из современных 3D движков самый мощный, большинство ответят - Quake III от ID Software.

Более того, большинство современных удачных игрушек были сработаны именно на нем - Medal of Honor: Allied Assault от EA, Start Trek Voyager: Elite Force от Raven Software и ActiVision, Star Wars Jedi Knight II: Jedi Outcast от Lucas Arts, Return to castle Wolfenstein от Gray Matter и ID Software. Это лишь малая часть списка.

ОК, к чему все это? Ведь мы собирались поговорить о Dark Basic Pro (далее DBPro) продолжении Dark Basic прославившегося "огромным" количеством fps.

А все к тому, что чудеса еще происходят. Могли бы Вы себе представить, что получите почти полноценный движок Quake III стоимостью $500.000, плюс несколько наворотов из Doom III всего за $100?

Что мы имеем. А имеем мы шустрый движок, дающий до 70/80 FPS на Celeron 566 MHz 128 Mb c TNT Pro 32Mb при разрешении 800x600 HighColor (тестирование проводилось нашей игрушкой).

DB мне нравился своей удивительной стабильностью и качественной картинкой.
В DBPro стабильность по прежнему на высоте, а вот качество картинки несколько снизилось. Нет, текстуры и полигоны рендерятся "будь здоров", но появились некоторые глюки свойственные движкам Half-Life и Quake II+. Еще бы им не появится. Как бы Ли Бамбер не уверял меня, что все написано с нуля, я ему не верю. Кто будет писать движок уровня Quake III с нуля, когда в сети исходники Халфа, Кваки и многих других современных игрушек валяются на каждом углу (точнее, сказать, узле :-).

Теперь DBPro поддерживает не только фреймовую анимацию (удобна для техники), но и скелетную. Модели со скелетной анимацией в формате Half-Life - *.mdl, Quake II - *.md2 и Quake III - *.md3 (кстати, кто не в курсе, формат не поддерживает сохранение текстур и сети в одном файле).

Имеет BSP двигатель и грузить миры в формате *.bsp. И что самое приятное - DBPro умеет грузить bsp из PAK (Халф и Квака 2) и PK3 (третья Квака) упаковок ресурсов! Так что теперь вы можете паковать свои миры в PAK'и с помощью замечательной программы "Wally", а любители поэксприментировать - могут загрузить уровень из Кваки или Халфа и поиграть на движке DBPro! Можете закатывать язык обратно :-), на практике не все так гладко как на словах. Надо работать, работать и еще раз работать, чтобы создать свой BSP уровень. Загрузка же уровней, из известных нам игр, сопряжена с рядом трудностей т.к. не "bsp единым...". Т.е. я хочу сказать, не все ресурсы уровня хранятся в самом BSP. Текстуры и модели хранятся отдельно и даже, бывает, в другом PAK-файле. В общем, после некоторой возни и экспериментов, мне удалось загрузить BSP из "Counter Strike".

Теперь мы можем создавать столько камер (не тюремных :-) сколько нужно, а также перенаправлять рендеринг с заднего буфера на свои поверхности (в DB именуемые BITMAP, что тоже верно). Таким образом, мы запросто можем реализовать много эффектов ранее не возможных. Например, теперь можно легко создать истинное зеркало по алгоритму Quake III.

DBPro имеет собственный (и очень хороший) генератор частиц. Что он нам дает? Все - дождь, снег, искры от костра, брызги, искры от металла и т.д. Круто? Да. Но это лишь часть новых наворотов Дарка.

Quake III - Doom III?

Некоторые рисковые люди позволили себе не согласится с моим утверждением :-) что DBPro это Doom III за 100 баксов.

А я и не говорю, что это Doom III. Но смело утверждаю, что это Quake III (правда, несколько "сыроватый") + несколько наворотов от Doom III и все это за 100 баксов. Doom III никто не видел. Да. Но нам показывали скрины и рассказывали о технических характеристиках движка, так что сравнивать есть с чем.

И так - эффекты Третьей Кваки доступные нам в DBPro (если видите знак '*' значит функция протестирована мной на практике и работает).

Поддержка мультитекстурирования со всеми вытекающими как то:

*Detail маппинг - Позволяет натянуть вторую текстуру. Допустим, вы накладываете на модель дерева две текстуры - фотографию коры дерева небольшого размера и маленькую черно-белую текстуру с изображением крапинок коры. Эффект потрясающий - кажется что использовались текстуры огромного размера. В Quake III этой функцией активно пользовались.
ВНИМАНИЕ - после того как Вы натяните маленькую текстуру этой функцией, необходимо применить к ней масштабирование (где-то от 20.0x20.0 при текстуре 32x32) иначе она размажется по всему объекту.

*Blend маппинг - просто смешивает две текстуры 50x50.
*Sphere и Cube маппинг - путем натягивания второй текстуры с изображением помещения на шлем охранника мы получаем эффект отражения а-ля Half-Life. Cube жрет много видео памяти.

(DB не поддерживает мультитекстурирование и многие, пытаясь добиться этого эффекта, извращались так - клонировали модель, увеличивали на 0.1, применяли к ней ghost и текстуру помещения (или природы, смотря где дело происходит), позиционировали в соответствии с первым объектом и прикрепляли. Эффект получался, но вот и без того слабенький движок:).

А теперь эффекты из Doom III доступные нам в DBPro (к сожалению, я не смог протестировать ни одну из функций по причине отсутствия GF3 и тем более 4):

Бамп маппинг - создание эффекта рельефности с помощью наложения дополнительной черно-белой текстуры. Работает аналогично Detail маппингу, но эффект круче.

Cartoon - Вы выдели компьютерные мультфильмы "Шрек" и "Корпорация монстров"? А видели ли Вы рисованный мультфильм "Тарзан"? Я вас обрадую - это тоже компьютерный мультфильм. 3D MAX'ерам давно известен такой плагин, преобразующий 3D модели в рисованные.

Радуга - этот эффект позволит создать истинную радугу или северное сияние, например.
Тень - истинные тени.
Отражение - истинное отражение среды на объекте.

А так же доступны поддержка пиксельных и вертексных шейдеров. Что это и с чем это едят? Ну, например, функции Отражение, Тень и Радуга работают на этой штуке.

Впечатляет, не правда ли? Но разработчики DBPro пошли дальше - теперь нам дали в руки мощнейший инструмент - прямой доступ к матрицам. Да нет, не тем матрицам, о которых Вы подумали, а к 3D объектам. На экране мы их видим как объекты, а в памяти они представлены как массив чисел - матрица. (Не знаю, зачем в DBSoftware решили выпендрится и ландшафты обозвали матрицами. Во всех движках они называются ландшафтами).

У самых сообразительных уже начала капать слюна, а для тех кто "в танке" намекну - Вам нравилось в "Red Faction" взрывать стены и бурить на бурильной машине пещеры?
Вот, вот:

ПРЕДУПРЕЖДЕНИЕ - В помощи, функции прямого доступа к матрицам сгруппированы в в разделе "3DMATHS", т.к. название MATRIX уже было использовано для ландшафтов. Не перепутайте.

David Good



 
SanzecDate: Воскресенье, 20.05.2007, 21:23 | Message # 2
Рядовой
Группа: Пользователи
Сообщений: 7
Статус: Offline
David Good - остой, Марк Сибли - рулит!!!!! cool

Жизнь игра - и я в нее играю.
 
Форум » Программирование » DarkBasic » Рецензия DBPro от David'а Good'a
  • Страница 1 из 1
  • 1
Поиск:
Copyright JohnK© 2024