Движок 2D-графики Asphyre Sphinx. Урок 2: выводим картинку на форму, создаём контейнер ASDb

Вторник, Июль 7th, 2009

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

   Из трудовых будней начинающего программиста графики.
   Представьте себе, что мы начинаем писать игру, используя новую технологию вывода графики. Пусть это будет что угодно… к примеру OpenGL или DirectX или, в конце концов, движки типа GLScene и Asphyre Sphinx. Сначала нас вдохновляет описание работы с технологией – судя по этому документу, работа с графикой станет нереально простой и гибкой, можно будет делать различные навороты. Эти феерические утверждение подкреплены примерами, в которых есть и свет, и какие-то трёхмерные фигуры метко взаимодействующих с друг другом и средой, обязательно вода. Обязательно что-то крутится и вертится и всё это впечатляет.
   Такое положение вдохновляет на скорейшее начало работы над игрушкой, и, мы, напрочь забыв про проектирование, берёмся за дело. С чего мы начинаем писать игру? Обычно с файловой системы, я полагаю. Дело доходит до графики, в среднем не раньше чем через неделю, и тут то вопрос встаёт ребром. Нужно разобраться с разрешением экрана, с тем, как инициализировать графику, задать формат пикселя, нужно загрузить все текстуры, нужно написать процедуру вывода всей графики и т.п. Итого в сумме десяток вопросов(вопросы верхнего уровня), с которыми нужно разобраться. Каждый этот вопрос состоит из других 10 вопросов(вопросы второго уровня). Каждый этот вопрос в свою очередь также содержит 10 более простых базовых  практических вопросов(вопросы нижнего уровня). В итоге мы получаем проблемы, которая требует найти ответ на 1000 вопросов. Кто с таким не сталкивался?
   Мы разбираемся с графикой, начинаем решать вопрос за вопросом, в надежде на некий прорыв, который произойдёт вот-вот. Очень хочется писать игру дальше. И вот случается неприятность — неожиданно тормозим на одном из вопросов, ничего не получается и не работает. Начинаем копать примеры, и это также не приводит к успеху и уже раздражает. Примеры кажутся совершенной возмутительной бессмыслицей. Потом мы пишем знакомому, который разбирается в этом движке(у всех всегда есть такой знакомый). Он помогает нам один-два раза, а на третий раз отправляет к своим программам, которые также кажутся бессмысленными, ещё хуже, чем примеры. И вот тут пойди-разберись, как оно работает? Ну не понятно и всё…
   Эта ситуация встречается очень часто по двум причинам – отсутствие “человеческой” документации (действует миф о том, что программистам не нужна вменяемая документация, программисты любят сложности) и игнорирования нами этапа проектирования. Всё будет гораздо легче, если мы ещё при проектировании очертим тот круг возможностей, которые нам нужны для игры и начнём разбираться по ранее продуманному плану. Если даже документацию нельзя найти, то смерти проекта можно избежать, составив план изучения графики.

   Прошу простить за столь большое вступление и за слишком подробное изучение вопросов, но, на мой взгляд, это просто необходимо, чтобы вникнуть в Asphyre Sphinx при первом же столкновении с реальной задачей.
   Мы будем изучать вместе движок Asphyre Sphinx очень постепенно и очень подробно, чтобы избежать недосказанностей, которыми пестрят различные мануалы.
   Итак, сегодня нам нужно вывести картинку на экран средствами Asphyre Sphinx. Для этого нужно будет разобраться в формате ASDb, точнее только начать разбираться. Подробнее про ASDb будет в последующих уроках.

(далее…)

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

Вторник, Май 26th, 2009

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

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

(далее…)

Правила наименования игр

Вторник, Сентябрь 30th, 2008

Мой достаточно фривольный перевод прекрасной статьи Скотта Миллера и Джорджа Бруссарда (Оба — сотрудники 3D Realms) о правилах наименования игр. Оригинал находится здесь.

Название товара – один из самих важных аспектов успешной торговой марки. Название можно и нужно эффективно использовать как эдакую мини-рекламу, сообщающую потребителям всё о сути продукта. Die Hard Battery (Живучая батарейка) – вот прекрасный пример подобного подхода. Зная огромное значение названий товаров, удивляет то, как часто они бывают крайне нелепыми и ошибочными. Особенно в игровой индустрии.
Плохое название может потянуть вашу игру ко дну, словно двухтонный якорь, хорошее же — подействовать как ракета, возносящая бренд к звёздам. Название – именно то, с чем потенциальный покупатель сталкивается впервые при контакте с вашей игрой, и именно название всегда формирует первое впечатление о ней.

Популярная во всём мире игра покер на деньги так известна не благодаря своему названию, а благодаря, в первую очередь, азарту.

С начала 90х я и мой партнёр Джордж Бруссард исследовали критерии, которые помогли бы сделать игровое название успешным. Некоторое время спустя мы составили список ключевых правил:

(далее…)