Главная страница

Искусство_программирования_игр_на. Михаил Фленов Санкт-Петербург бхв-петербург 2006 удк 681 06 ббк 32. 973. 26-018. 1 Ф69


Скачать 0,84 Mb.
НазваниеМихаил Фленов Санкт-Петербург бхв-петербург 2006 удк 681 06 ббк 32. 973. 26-018. 1 Ф69
АнкорИскусство_программирования_игр_на.pdf
Дата08.05.2018
Размер0,84 Mb.
Формат файлаpdf
Имя файлаIskusstvo_programmirovania_igr_na.pdf
оригинальный pdf просмотр
ТипДокументы
#45003
страница1 из 3
Каталогrgavii

С этим файлом связано 20 файл(ов). Среди них: Osnovy_veb_khakinga_Kak_zarabatyvat.pdf, Iskusstvo_programmirovania_igr_na.pdf, Lavretskiy_I__ZhZL_Che_Gevara.pdf, Psikhotropnye_sredstva.doc, 88_Saxy_vikingi_normanny.pdf, 8_tipichnykh_oshibok_trenirovki_tritsepsov.pdf, Kholinergicheskie_sredstva.doc, Axenov_S_V_Novoseltsev_V_B_Organizatsia_i_ispolzovanie_neyronnyk, Tritseps_-_tri_skhemy_treninga.pdf и ещё 10 файл(а).
Показать все связанные файлы
  1   2   3

Михаил Фленов
Санкт-Петербург
«БХВ-Петербург»
2006

УДК 681.3.06
ББК 32.973.26-018.1
Ф69
Фленов М. Е.
Ф69
Искусство программирования игр на С++. — СПб.: БХВ-Петербург,
2006. — 256 с.: ил.
ISBN 5-94157-832-6
Описаны современные технологии программирования 3D-игр, а также некоторые решения типичных проблем, с которыми может столкнуться программист при их разработке. В качестве практических примеров на про- тяжении всей книги рассматривается процесс создания простого движка иг- ры, который использует все описываемые технологии: вершинные и пик- сельные шейдеры, скелетную и вершинную анимацию, а также компоненты
DirectMusic, DirectSound и DirectInput, входящие в библиотеку DirectX.
Программный код, приведенный в книге, легко адаптировать и превратить в полноценную игру. Описываемый движок очень прост, но универсален и позволяет создавать игры любого жанра. На компакт-диске к книге содер- жатся листинги примеров и дополнительная информация по DirectX.
Для программистов
УДК 681.3.06
ББК 32.973.26-018.1
Группа подготовки издания:
Главный редактор
Екатерина Кондукова
Зам. главного редактора
Игорь Шишигин
Зав. редакцией
Григорий Добин
Редактор
Юрий Рожко
Компьютерная верстка
Ольги Сергиенко
Корректор
Зинаида Дмитриева
Дизайн обложки
Инны Тачиной
Зав. производством
Николай Тверских
Лицензия ИД № 02429 от 24.07.00. Подписано в печать 28.07.06.
Формат 70 100 1
/
16
Печать офсетная. Усл. печ. л. 20,64.
Тираж 3000 экз. Заказ №
"ÁÕÂ-Петербург", 194354, Санкт-Петербург, ул. Есенина, 5Б.
Санитарно-эпидемиологическое заключение на продукцию
№ 77.99.02.953.Д.006421.11.04 от 11.11.2004 г. выдано Федеральной службой по надзору в сфере защиты прав потребителей и благополучия человека.
Отпечатано с готовых диапозитивов в ГУП "Типография "Наука"
199034, Санкт-Петербург, 9 линия, 12
ISBN 5-94157-832-6
© Фленов М. Е., 2006
© Оформление, издательство "БХВ-Петербург", 2006

Îãëàâëåíèå
Предисловие ........................................................................................................... 6
О чем эта книга .................................................................................................................... 7
Что нужно знать ................................................................................................................... 9
Что не вошло в книгу ........................................................................................................... 9
Благодарности ...................................................................................................................... 9
Структура книги ................................................................................................................. 10
Глава 1. Введение в программирование игр ................................................. 12 1.1. Подготовка к созданию приложения ......................................................................... 12 1.2. Скелет приложения ..................................................................................................... 15 1.3. Инициализация Direct3D ............................................................................................ 20 1.4. Функция формирования сцены .................................................................................. 23 1.5. Функция загрузки сетки .............................................................................................. 24 1.6. Пример загрузки сетки ............................................................................................... 26 1.7. Моделирование ........................................................................................................... 29 1.8. Шейдеры ...................................................................................................................... 32 1.8.1. Простейший пример шейдеров ............................................................................. 36 1.8.2. Использование вершинного шейдера................................................................... 41 1.8.3. Пиксельный шейдер ............................................................................................... 46
Глава 2. Разработка движка .............................................................................. 52 2.1. Структура движка ....................................................................................................... 53 2.2. Двигатель объекта ....................................................................................................... 54 2.3. Двигатель игры ............................................................................................................ 62 2.4. Запуск движка.............................................................................................................. 68 2.5. Тени .............................................................................................................................. 72 2.6. Множество источников освещения ........................................................................... 83
Глава 3. Скелетная анимация .......................................................................... 86 3.1. Что такое скелет .......................................................................................................... 87 3.2. Формат хранения сетки .............................................................................................. 89 3.3. Основы программирования скелетов ........................................................................ 95 3.4. Загрузка сетки и скелета из X-файла ......................................................................... 98 3.5. Разбор объектов ........................................................................................................ 103 3.6. Загрузка сетки............................................................................................................ 106 3.7. Загрузка дочерних элементов .................................................................................. 109

Îãëàâëåíèå
4 3.8. Поиск фрейма ............................................................................................................ 110 3.9. Обновление сетки ...................................................................................................... 112 3.10. Обновление сетки .................................................................................................... 113 3.11. Анимация скелета ................................................................................................... 116 3.12. Анимация из X-файла ............................................................................................. 121 3.13. Загрузка анимации из X-файла .............................................................................. 123 3.13.1. Необходимые классы ......................................................................................... 124 3.13.2. Анализ файла ....................................................................................................... 125 3.13.3. Анализ блока анимации ..................................................................................... 126 3.13.4. Анализ ключа ...................................................................................................... 127 3.14. Использование анимации ....................................................................................... 129
Глава 4. Войдите ................................................................................................ 132 4.1. Введение в DirectInput .............................................................................................. 132 4.2. Класс для входа ......................................................................................................... 134 4.3. Реализация класса ввода ........................................................................................... 137 4.4. Перечисление устройств ........................................................................................... 141 4.5. Опрос состояния действий ....................................................................................... 145 4.6. Использование класса клавиатуры .......................................................................... 149
Глава 5. "Фейсом об тейбл" ............................................................................ 154 5.1. Алгоритмы обнаружения .......................................................................................... 154 5.1.1. Точка против плоскости....................................................................................... 155 5.1.2. Точка против куба ................................................................................................ 155 5.1.3. Точка против сферы ............................................................................................. 156 5.1.4. Сфера против сферы ............................................................................................. 157 5.2. Столкновения в играх ............................................................................................... 157 5.3. Пример реализации коллизий .................................................................................. 160 5.4. Ниже плинтуса .......................................................................................................... 165 5.5. Напутствие ................................................................................................................. 169
Глава 6. Вершинная анимация....................................................................... 170 6.1. Теория ........................................................................................................................ 170 6.2. Загрузка ключа .......................................................................................................... 175 6.3. Отображение сетки ................................................................................................... 176 6.4. Использование шейдера ........................................................................................... 178 6.5. Множественность кадров ......................................................................................... 182 6.6. Практика использования .......................................................................................... 187
Глава 7. Программирование звука ................................................................ 189 7.1. Введение в звук ......................................................................................................... 189 7.1.1. IDirectMusicLoader ............................................................................................... 191 7.1.2. IDirectMusicPerformance ...................................................................................... 193 7.1.3. IDirectMusicSegment8 ........................................................................................... 194

Îãëàâëåíèå
5 7.2. Воспроизведение ....................................................................................................... 194 7.3. Завершение воспроизведения .................................................................................. 199 7.4. Погружение в 3D ....................................................................................................... 199 7.5. Контроль над 3D ....................................................................................................... 206 7.6. Мультизвук ................................................................................................................ 207 7.7. Управление параметрами ......................................................................................... 208 7.8. Резюме ....................................................................................................................... 209
Глава 8. Игровые эффекты ............................................................................. 210 8.1. Обман зрения ............................................................................................................. 210 8.2. Видео .......................................................................................................................... 213 8.2.1. База для разработки фильтра ............................................................................... 214 8.2.2. Разработка фильтра .............................................................................................. 216 8.2.3. Подтверждение типов медиаданных .................................................................. 219 8.2.4. Получение кадра ................................................................................................... 221 8.2.5. Загрузка видео и использование фильтра .......................................................... 223 8.2.6. Компиляция ........................................................................................................... 227 8.3. Мелочи жизни ........................................................................................................... 228 8.4. Не все золото, что блестит ....................................................................................... 230 8.5. Искусственный интеллект ........................................................................................ 235 8.6. Оптимизация графики............................................................................................... 238
Заключение ......................................................................................................... 251
Приложение. Описание компакт-диска ........................................................ 253
Список литературы .......................................................................................... 254
Предметный указатель .................................................................................... 255

Ïðåäèñëîâèå
С самого начала необходимо определиться, что именно будет рассматривать- ся в данной книге. Несмотря на то, что в названии присутствует слово "игра", полноценную игру мы писать не будем, потому что для этого понадобится достаточно большая книга или даже несколько книг объемом примерно в
1000 страниц. В книге на 300—400 страницах можно описать только самую простейшую игру определенного жанра и с простейшими графическими воз- можностями. Но не это наша цель. Наша цель рассмотреть используемые технологии, понять проблемы, с которыми может столкнуться разработчик движка игры
1
и заложить багаж знаний, который пригодится вам в будущем.
Я мог бы написать простую игру и рассказать в книге, как это было сделано, но от нее толку будет мало. Намного интереснее, если вы сами создадите что- то самостоятельно, а данная книга поможет вам сделать это. Мы рассмотрим основные проблемы, с которыми вы можете столкнуться, а превращение кода в полноценную игру будет делом техники, знаний и умений.
Если честно, то популярность игры зависит от графических возможностей не более чем на 30%. Можно привести массу примеров, когда игра становилась популярной, а использовала старинные графические движки и текстуры пло- хого качества. Недаром даже в те времена, когда на PC уже начал властвовать
Wolfstain 3D, мы продолжали на работе раскладывать примитивный тет- рис. Проходят годы и появляются более красивые игры, но даже во времена
Half-Life мы с удовольствием раскладываем линии (Lines). Самое главное в игре — это сюжет и геймплей (Геймплей — это сущность игры — динамика,
1
Движок игры — набор функций или классов, которые предоставляют разработчику возмож- ность создавать игровой мир. Чаще всего в движке реализована возможность загрузки, хране- ния и отображения объектов игрового мира, искусственный интеллект, возможности сетевого обмена данными, поддержка музыки и звуковых эффектов и т. д.

Ïðåäèñëîâèå
7 управление, развитие, от которых зависит интерес к самой игре). Если в игру интересно играть, то она будет популярной и чаще всего это не зависит от графики, и этому есть множество подтверждений.
Сложность графики — это всего лишь вспомогательная составляющая, но зато какая приятная для игрока и интересная для программиста. Создавать красивую графику интересно, и смотреть на нее приятно.
Слишком сложная графика может наоборот отрицательно повлиять на попу- лярность игры. Если для формирования сцены необходимо слишком много процессорных ресурсов и для ее запуска требуется компьютер, стоимостью в
$3000, то игра никогда не станет популярной, потому что такими компьюте- рами обладают единицы и не факт, что все они заплатят за ваш труд. А если сделать игру слишком простой, чтобы она запускалась даже на Pentium с час- тотой 100 МГц, то на такую графику невозможно будет смотреть и с вероят- ностью в 99% такую игру ждет полный провал, если нет суперуникального и супервеликолепного геймплея.
Великое искусство — найти идеальное сочетание производительности и ка- чества изображения. Тут приходится применять все возможные алгоритмы оптимизации и нередко нужно обращаться к искусству хакеров. Нет, я не призываю вас писать игру на языке ассемблера или даже в машинных кодах, чтобы она была идеально быстрой, но над оптимизацией придется хороше- нечко подумать.
На протяжении всей книги мы будем писать простой движок 3D-игры, а так- же учиться создавать различные эффекты, которые в сочетании с хорошим геймплеем могут сделать вашу игру шедевром. Да, наработки, которые мы напишем, могут пригодиться вам в будущих проектах, и все же, их нельзя назвать идеальными.
В программировании нет предела совершенству, но к нему необходимо стремиться. Если такие слова еще никто не говорил, то запишите их на мой счет ☺, потому что это реальность программиста.
Î ÷åì ýòà êíèãà
Итак, данная книга посвящена созданию графической части игр, а точнее, оптимизации, графическим эффектам и алгоритмам реализации классических задач, которые встречаются в играх. Для иллюстрации примеров мы будем использовать язык программирования С++ и графический пакет DirectX.
  1   2   3

перейти в каталог файлов
связь с админом