Движок 2D-графики Asphyre Sphinx. Урок 1: возможности и установка движка.

Урок 1 На урок 2

   Для программистов игр Delphi, которых сейчас не мало, создано уже множество движков для вывода двумерной графики. Выбрать один из них очень непросто. Дело даже не в их количестве, а в том, что их названия, скудные описания ни о чём не говорят.
   А так хочется просто сесть перед монитором, выбрать  подходящий движок для создания своей игры, включить Делфи, а затем сразу начать писать игру, без предварительных многодневных обхаживаний движка со всех сторон, поиском решения простых задач, типа “как вывести картинку” на многочисленных Форумах. Но в наш век танцующих медведей, это невозможно. Программисты тотально увлечены функциональностью движков, что забывают объяснить другим программистам, как с ЭТИМ работать! Конечно, есть и среди нас, программистов игр, такие люди, которые как-то сразу осваивают чужие модули и компоненты. Сразу говорю, я не из таких, и пишу тоже я скорее для тех, кто не въезжает.
   Сложность движков, отсутствие документации к ним, вынудило меня писать игру на голом OpenGL, а это тоже не очень просто, но зато примеров и документации полно. Сейчас, когда я решил всё переписывать заново и решил отказаться от низкоуровнего программирования графики и перейти на нечто простое в освоении с большим количеством всяческих возможностей, я вновь встал перед вопросом выбора системы. На Форуме мне рекомендовали Asphyre, ибо пишут на нём сейчас многие. Но используют, при этом, не самую свежую версию –  третью. Я же решил разобраться в движке, который, по словам создателей, намного превосходит тройку – это Asphyre Sphinx. Сфинкс – это медведь, который танцует весьма неплохо, судя по примерам.  Но документации по нему совсем нет, в особенности это касается русского языка. Попробуем вместе разобраться без документации, что за зверь этот Asphyre Sphinx
   Первый урок посвятим разборке возможностей, а также установке Asphyre Sphinx в Delphi.

   Сразу же хочу предупредить программистов, использующих старые версии Delphi, что Сфинкс идёт под управлением Delphi 2006, 2007. Кроме того, заявлено, что движок поддерживается погибшей линейкой Turbo Delphi и FreePascal(его величество Лазарус). По поводу совместимости с Delphi 2009 авторами не заявлено, но, попытка моя установить движок под эту версию системы вызвал множественные несоответствия типов. Что касается ещё многочисленных пользователей Delphi 7, тот тут я вижу два варианта – использовать старый Asphyre, либо устанавливать новую Delphi. Тема перехода с одной версии продукта на другую всегда больная, и в ней больше вопросов, нежели ответов. Тем не менее, из адекватных соображений, рекомендую ставить Delphi 2007, как самый удобный вариант, где идёт Asphyre Sphinx. Да и ладно, тут дело даже не в Сфинксе, просто время уже пришло.
   Теперь подробно разберём, что же может Asphyre Sphinx! Далее перевод странички с сайта движка http://afterwarp.net/products/asphyresphinx с моими комментариями. Это единственная страница с какой-то информацией по движку!
Асфир Сфинкс – это самый новый движок для разработки 2D и 3D  игр, а также других приложений, использующих графику. Он позволяет разработчику выводить графику в режиме реального времени, работать с ресурсами(имеются ввиду, видимо, паки с текстурами), а также перехватывать клавиатуру, мышь и джойстик.
  Программы, которые используют Сфинкса, поддерживают работу  с DirectX 7, DirectX 9 и OpenGL через специальные провайдеры. В данном случае провайдеры – это драйверы, которые переводят одни и те же команды на язык разных графических систем. Т.е., если вы используете Сфинкса, то насущный вопрос о том, что выбрать – DirectX или OpenGL – отпадает сам собой. Ваша программа будет работать в любом случае. Разработчики уверяют, что для разработки простых игр такая система провайдеров очень удобна, поскольку игра будет запускаться на любой системе. В голове возникает при этом вопрос – а как же сложная игра? Или на Сфинксе её не написать? Оставим такие рассуждения до тех пор, пока не окунёмся в изучение полностью. 
   В отличии от старых версий Asphyre, Sphinx не требует установки никаких дополнительных библиотек DLL, подчёркивают на сайте. Хорошо это или плохо на самом деле, пока не ясно.
Возможности использования 2D-графики
— Картинку можно всячески преобразовывать – крутить, вертеть, отражать и т.п.
Alpha-Blending (альфа-смешение) с множеством возможностей – сложение, вычитание, умножение и тени. Кто не знает, альфа-блендинг – это создание полупрозрачных объектов. С помощью альфа-смешивания можно сделать всё изображение полупрозрачным, установить прозрачность на каких-то отдельных участках изображения. Напимер, сделать видимым в игре только спрайт-объект, а фон спрайта при этом будет прозрачным – это делается в большинстве 2d-игр. Подробнее в следующих уроках.
— Высокая производительность рендеринга(сглаживания) текстур. Без этого сейчас никуда, даже в новых 2d-играх
— Множество различных примитивов — прямоугольники, эллипсы, дуги, ленты и т.п.
— Поддержка различных форматов пикселей изображения — для увеличения качества изображения и для оптимального использования памяти видео карты. Об этом будем обязательно говорить в будущем, сейчас могу сказать, что речь идёт о размере изображения. Допустим, если мы грузим большую текстуру 512×512,а используем её масштабируемую, как 64×64, то нам незачем хранить всю текстуру, достаточно её форматировать в памяти. Если не так, исправьте меня.
— Изображения можно загружать из сжатых ASDb файлов, внешних файлов и из потоков. ASDb, кстати, очень удобный формат – в одном таком файле можно хранить множество изображений(звуков и других файлов). Используется старый алгоритм сжатия LZ77. В общем, этому формату стоит посвятить целую статью.
-Динамические текстуры. Это значит что обращение к пикселям быстрое, что позволяет создавать динамические эффекты, типо плазмы(Плазма есть в  примерах к движку).
-Процесс рендеринга предполагает наличие других внушающих визуальных эффектов, как размытие в движение, свечение и так далее. Для создания красивой 2d-игры это не будет лишним.
— Полноценный вывод текста, включая символы Юникода. Доступен градиент, а также функции форматирования текста
— Можно подключать библиотеку Vampyre Imaging Library для загрузких изображений различных форматов. Вещь незаменима, так как с помощью неё можно загрузить PNG и TIFF, где уже есть поддержка альфа каналов.
-С четвёртой версии, Asphyre – это не набор VCL компонентов, а просто подключаемые модули. Вероятно, это сделано для тех, кто работает без VCL(без форм, без стандартных и подключаемых компонентов Delphi), создаёт свои окна при помощи Win API(функции ядра Windows). Для пользователей VCL это должно усложнить разработку, но, я не думаю что это критично. Скорее наоборот – разработка приложения будет гибче.
   Это не полный список особенностей движка Asphyre Sphinx! Можно было бы перечислить их все, но простое перечисление ингредиентов блюда не подскажет вам его конечный вкус(Кстати, тем кому особенно интересно, их перечисление на русском я нашёл здесь:  http://www.nhell.ru/?p=51). Итак описал их слишком много, так много,  что может даже запутать. Поэтому я резюмирую так – Сфинкс предназначен для работы с 2D-графикой, и делает это замечательно. Как бонус в движке есть возможность вывода 3D-графики, собственный формат хранения данных, возможности работы со звуком, перехват устройств ввода и ещё множество полезных и не очень функции.
Установка движка в Delphi
   Чем порадовал меня Asphyre Sphynx, так это достаточно несложной установкой.
    Для начала вам нужно скачать архив с сайта движка. Полный пакет движка, вместе с примерами, весит от 7 до 9 Мб(в зависимости от того, чем заархивирован – 7z или RAR), отдельно движок весит всего 1 Мб. Рекомендую качать, конечно же, со всеми примерами.
Страница с закачками Asphyre Sphinx на сайте разработчика: http://afterwarp.net/products/asphyresphinx
На нашем сервере на всякий случай лежит Asphyre Sphinx v1.0.0 — Complete Package (11-Feb-2009) в архиве RAR, весом 9.03 Мб: http://2dgames.pp.ru/soft/AsphyreSphinx100.rar
   Скачали архив? Теперь распакуйте, туда, где планируете хранить библиотеки. Именно в этот каталог(папку) будет ссылаться Delphi и ваши проекты. У меня эта папка называется

 c:CODINGКомпонентыAsphyreSphinx100.

Хочу напомнить, что очень важно держать в порядке ваши подключаемые библиотеки Delphi! Пожалуйста, не пихайте их в Мои Документы, или просто куда-нибудь. Не повторяйте моих ошибок, пусть ваша структура диска будет прозрачной для вас и для компилятора. 
   Итак, в распакованной папке 4 каталога и больше 350 файлов.
Папка Examples – содержит несколько примеров для работы с Сфинксом
Папка Lincenses – содержит  файл с текстом Лицензии Мозилла(MOZILLA PUBLIC LICENSE), которая знакомит вас с условиями использования  движка
Папка Source – самая важная папка, содержит библиотеки движка.
Папка Tools – содержит полезные инструменты, которые могут понадобиться в работе с движком
Для установки в Delphi, для начала запустите Delphi.
Далее жмём в главном меню Tools – Options.В открывшемся окне с настройками(Delphi options)  выбираем подпункт Environment Options – Delphi Options – Library 32. Добавьте в Library Path папку с Asphyre. У меня строка выглядит так

$(BDS)lib;$(BDS)Imports;$(BDS)LibIndy10;$(BDSCOMMONDIR);C:CODINGКомпонентыAsphyreSphinx100Source

Протестируем движок
   Чтобы убедиться в том, что движок корректно установлен, нужно откомпилировать любой пример, поставляемый с ним. Откройте пример Basic, самый простой пример(“вращающаяся Лена”), и попробуйте запустить. Если программу запустить не удается из-за того, что Delphi по необъяснимой причине не может найти файлы библиотек сфинкса, то пропищите путь ещё в свойствах проекта.  В главном меню Project – Options – Directories/Conditionals и в графе Search Path прописываем путь к движку.
Теперь не скомпилироватьсяч пример basic(Пусть далее, в последующих главах, пример называется “Вращающаяся Лена”) может только по каким-то из ряда вон вышедшим причинам.
Если проект заработал, и Лена вращается на фоне стены, а из угла в угол летает сфера, напоминающее солнечное затмение, то поздравляю! Мы сделали один шаг вперёд, и теперь Asphyre Sphinx успешно установлен и готов к использованию!
   В уроке #2 мы вместе будем разбираться, как выводить на простую форму простую картинку из файла BMP! Потихоньку, постепенно, мы победим гигантского сфинкса

   Ваши комментарии на Форуме будут прекрасной мотивацией автору, для ускорения работы над уроками по Asphyre Sphinx!
Материал подготовлен специально для проекта 2DGames.ru.    Перепечатка приветствуется, но только с указанием ссылки на оригинал, то есть на эту страницу.

   Автор: Илья aka RedMask

Урок 1 На урок 2

Leave a Reply

Comment moderation is enabled. Your comment may take some time to appear.