Ни один из жанров игр не способствует погружению игрока в свой мир так, как это делают ролевые игры. В них игрок прорывается сквозь барьер существующий между его действиями и фантастическим миром и становится жителем того мира. Приготовьтесь воплотить свои идеи в жизнь и создать собственную ролевую игру! Книга «Программирование ролевых игр с DirectX» покажет вам как создать графическую библиотеку и механизм сражений, как управлять игроками, использовать скрипты и предметы, и как сделать вашу игру многопользовательской. Книга разделяет ролевую игру на базовые составляющие, подробно исследует их и показывает, как вы можете применять их в своем игровом проекте. Вы научитесь рисовать с DirectX Graphics, воспроизводить звуки и музыку с DirectX Audio, работать с сетью с DirectPlay и взаимодействовать с игроком с DirectInput. Когда вы закончите чтение книги, у вас будет достаточно знаний, чтобы создать собственную законченную ролевую игру.Выполненный мной полный перевод на русский язык.
Author(s): Джим Адамс
Publisher: Premier Press
Year: 2004
Language: Russian
Commentary: 1146129595-Отл
Pages: 812
RPG_cover.pdf......Page 1
2-е издание......Page 2
Оглавление......Page 4
Благодарности......Page 20
Об авторе......Page 22
О чем эта книга......Page 24
Организация книги......Page 25
Типографские соглашения......Page 26
Что нужно для начала......Page 27
Глава 1 Подготовка к работе с книгой......Page 28
DirectX......Page 30
Установка DirectX 9......Page 32
Подготовка компилятора......Page 34
Указание каталогов для DirectX......Page 35
Связывание с библиотеками......Page 37
Установка поведения по умолчанию для char......Page 40
Многопоточные библиотеки......Page 41
Потоки и многопоточность......Page 42
Критические секции......Page 44
Использование COM......Page 45
IUnknown......Page 46
Инициализация и освобождение объектов......Page 47
Запрос интерфейсов......Page 48
Поток выполнения программы......Page 49
Модульное программирование......Page 50
Состояния приложения......Page 52
Процессы......Page 56
Использование упаковки данных......Page 58
Тестирование системы упаковки данных......Page 59
Построение каркаса приложения......Page 61
Завершаем подготовку......Page 66
Глава 6 Создаем ядро игры......Page 68
Глава 2 Рисование с DirectX Graphics......Page 70
Сердце трехмерной графики......Page 71
Системы координат......Page 72
Конструирование объектов......Page 74
Списки, полосы и веера......Page 75
Порядок вершин......Page 76
Преобразования......Page 77
Начинаем работать с DirectX Graphics......Page 78
Компоненты Direct3D......Page 79
Выбор видеорежима......Page 80
Установка метода показа......Page 83
Создание интерфейса устройства и инициализация дисплея......Page 85
Знакомство с D3DX......Page 86
Матричная алгебра......Page 87
Конструирование матриц......Page 88
Комбинирование матриц......Page 90
Переход от локальных координат к координатам вида......Page 91
Настраиваемый формат вершин......Page 93
Использование буфера вершин......Page 95
Создание буфера вершин......Page 96
Блокировка буфера вершин......Page 97
Заполнение данных вершин......Page 98
Поток вершин......Page 99
Преобразования......Page 100
Мировое преобразование......Page 101
Преобразование вида......Page 102
Преобразование проекции......Page 104
Материалы и цвета......Page 106
Очистка порта просмотра......Page 107
Визуализация полигонов......Page 108
Использование наложения текстур......Page 110
Использование наложения текстур в Direct3D......Page 112
Загрузка текстуры......Page 113
Установка текстуры......Page 114
Использование выборок......Page 116
Визуализация текстурированных объектов......Page 117
Альфа-смешивание......Page 118
Включение альфа-смешивания......Page 119
Копирование с учетом прозрачности и альфа-проверка......Page 120
Загрузка текстур с цветовым ключом......Page 121
Включение альфа-проверки......Page 122
Пример копирования с учетом прозрачности......Page 123
Освещение......Page 124
Использование зонального света......Page 127
Использование направленного света......Page 129
Использование нормалей......Page 130
Использование шрифтов......Page 133
Создание шрифта......Page 134
Рисование текста......Page 136
Щиты......Page 137
Частицы......Page 139
Сортировка по глубине и Z-буферизация......Page 142
Работа с портом просмотра......Page 144
Работа с сетками......Page 145
Формат X-файлов......Page 146
Использование иерархии фреймов......Page 147
Разбор X-файлов......Page 149
Объект ID3DXBuffer......Page 152
Стандартные сетки......Page 153
Визуализация сетки......Page 155
Скелетные сетки......Page 156
Загрузка скелетных сеток......Page 157
Обновление и визуализация скелетной сетки......Page 158
X-стиль трехмерной анимации......Page 159
Техника ключевых кадров......Page 160
Анимация в X-файлах......Page 161
Заканчиваем с графикой......Page 162
Знакомство с устройствами ввода......Page 164
Взаимодействие через клавиатуру......Page 165
Работа с клавиатурой в Windows......Page 166
Играем с мышью......Page 167
Удовольствие с джойстиком......Page 169
Представляем основы DirectInput......Page 170
Инициализация DirectInput......Page 172
Использование устройств DirectInput......Page 173
Получение GUID устройства......Page 174
Установка формата данных......Page 178
Установка уровня кооперации......Page 179
Установка специальных свойств......Page 180
Захват устройства......Page 182
Чтение данных......Page 183
DirectInput и клавиатура......Page 184
DirectInput и мышь......Page 186
DirectInput и джойстик......Page 187
Заканчиваем с вводом......Page 192
Основы звука......Page 194
Цифровая звукозапись......Page 195
DirectMusic......Page 197
Знакомство с DirectX Audio......Page 198
Использование DirectSound......Page 199
Инициализация DirectSound......Page 201
Установка уровня кооперации......Page 202
Создание объекта первичного звукового буфера......Page 203
Установка формата......Page 206
Запуск первичного звукового буфера......Page 207
Использование вторичных звуковых буферов......Page 209
Блокируй и загружай — загрузка звуковых данных в буфер......Page 210
Изменение громкости, позиционирования и частоты......Page 213
Позиционирование......Page 214
Изменение частоты......Page 215
Использование уведомлений......Page 216
Использование потоков для сканирования событий......Page 220
Загрузка звука в буфер......Page 222
Потоковое воспроизведение звука......Page 225
Работа с DirectMusic......Page 227
Начинаем работу с DirectMusic......Page 228
Создание объекта исполнителя......Page 229
Создание объекта загрузчика......Page 230
Загрузка музыкальных сегментов......Page 232
Загрузка инструментов......Page 234
Установка инструментов......Page 237
Использование циклов и повторов......Page 238
Воспроизведение и остановка сегмента......Page 239
Выгрузка данных сегмента......Page 240
Установка громкости......Page 241
Смена темпа......Page 243
Захват аудио-канала......Page 244
Использование DirectShow......Page 246
Загрузка медиа-файла......Page 248
Завершение воспроизведения......Page 249
Обнаружение событий......Page 250
Освобождение ресурсов DirectShow......Page 251
Заканчиваем с музыкой......Page 252
Знакомство с сетями......Page 254
Сетевые модели......Page 255
Лобби......Page 256
Коммуникационные протоколы......Page 257
Адресация......Page 258
Введение в DirectPlay......Page 259
Сетевые объекты......Page 260
Работа с игроками......Page 261
Сетевые сообщения......Page 262
Асинхронная и синхронная работа......Page 263
Регулировка потока......Page 264
Идентификация приложений по GUID......Page 265
Инициализация сетевого объекта......Page 266
Использование адресов......Page 267
Добавление компонентов......Page 268
Выбор порта......Page 270
Назначение устройства......Page 271
Использование обработчиков сообщений......Page 273
Данные сессии сервера......Page 275
Работа с сервером......Page 277
Работа с сообщениями о создании игрока......Page 280
Получение имени игрока......Page 281
Уничтожение игроков......Page 282
Получение данных......Page 283
Отправка сообщений сервера......Page 285
Завершение сессии на главном узле......Page 287
Работа с клиентом......Page 288
Получение идентификатора игрока......Page 292
Заканчиваем с сетями......Page 293
Знакомство с концепцией ядра......Page 296
Использование объекта ядра cApplication......Page 298
Обработка состояний с cStateManager......Page 301
Процессы и cProcessManager......Page 303
Управление данными с cDataPackage......Page 304
Графическое ядро......Page 305
Графическая система и cGraphics......Page 306
Изображения и cTexture......Page 309
Цвета и cMaterial......Page 310
Освещение с cLight......Page 312
Текст и шрифты с использованием cFont......Page 313
Вершины и cVertexBuffer......Page 315
Мировое преобразование с cWorldPosition......Page 317
Преобразование вида и cCamera......Page 319
Загружаемые сетки и использование cMesh......Page 321
Рисуем объекты, используя cObject......Page 322
Делаем сетки двигающимися с cAnimation......Page 325
Ядро ввода......Page 326
Устройства ввода и cInputDevice......Page 327
Звуковое ядро......Page 330
Управление DirectX Audio с cSound......Page 331
Использование волновых данных и cSoundData......Page 333
Воспроизведение звука с cSoundChannel......Page 335
Слушаем музыку с cMusicChannel......Page 338
Смешивание инструментов с cDLS......Page 339
Воспроизведение MP3 с cMP3......Page 341
Запрос адаптера с cNetworkAdapter......Page 342
Серверы и cNetworkServer......Page 343
Работа клиента и cNetworkClient......Page 346
Заканчиваем изучать ядро игры......Page 348
Глава 11 Определение и использование объектов......Page 350
Глава 15 Сетевой режим для многопользовательской игры......Page 351
Знакомство с блоками и картами......Page 352
Использование блоков с DirectX......Page 353
Построение класса для работы с блоками......Page 357
cTiles::Create......Page 358
cTiles::Load......Page 359
cTiles::GetWidth, cTiles::GetHeight и cTiles::GetNum......Page 361
cTiles::Draw......Page 362
Использование класса работы с блоками......Page 363
Рисование основной карты......Page 364
Использование нескольких слоев......Page 365
Добавление объектов......Page 366
Плавная прокрутка......Page 367
Карта и мышь......Page 369
Создание класса карты......Page 371
Псевдотрехмерные блоки......Page 376
Работа с большими растрами......Page 377
Большой пример......Page 378
Заканчиваем с двухмерной графикой......Page 379
Сетки в качестве уровней......Page 380
Загрузка уровней......Page 381
Рисование комнат......Page 382
Усовершенствование базовой техники......Page 384
Знакомство с пирамидой видимого пространства......Page 385
Плоскости и отсечение......Page 386
Проверка всей пирамиды......Page 388
Класс cFrustum......Page 389
cFrustum::Construct......Page 390
cFrustum::CheckPoint, CheckCube, CheckRectangle и CheckSphere......Page 391
Разработка профессионального трехмерного движка......Page 394
Знакомство с движком NodeTree......Page 395
Создание узлов и деревьев......Page 396
Работа с группами материалов......Page 398
Создание класса cNodeTreeMesh......Page 399
cNodeTreeMesh::Create и cNodeTreeMesh::Free......Page 404
cNodeTreeMesh::SortNode......Page 407
cNodeTreeMesh::IsPolygonContained и cNodeTreeMesh::CountPolygons......Page 409
cNodeTreeMesh::AddNode......Page 410
cNodeTreeMesh::Render......Page 413
Использование cNodeTreeMesh......Page 415
Добавление к миру трехмерных объектов......Page 416
Вычисление ограничивающей сферы......Page 417
Ограничивающие сферы и пирамида видимого пространства......Page 418
Испускание лучей......Page 419
Блокировка пути......Page 420
Перемещение вверх и вниз......Page 421
Когда сталкиваются сетки......Page 423
Щелчки мыши и сетки......Page 425
Использование небесного куба......Page 427
Создание класса небесного куба......Page 428
cSkyBox::Create и cSkyBox::Free......Page 429
cSkyBox::LoadTexture......Page 430
cSkyBox::Render......Page 431
Заканчиваем с трехмерной графикой......Page 432
Смешивание двух измерений......Page 434
Рисование блоков в трехмерном мире......Page 435
Подготовка к рисованию......Page 437
Рисование двухмерных объектов......Page 438
Добавление трехмерных объектов к двухмерному миру......Page 439
Работа с двухмерным фоном......Page 442
Работа с сеткой сцены......Page 444
Визуализация сцены......Page 446
Заканчиваем смешивание графики......Page 448
Что такое скрипты......Page 450
Проектирование системы Mad Lib Script......Page 452
Программирование системы Mad Lib Script......Page 453
Работа с шаблонами действий......Page 454
Создание элементов скрипта......Page 458
Объединяем все в классе cActionTemplate......Page 463
Работа с редактором MLS Editor......Page 470
Выполнение скриптов Mad Lib......Page 473
Заканчиваем со скриптами......Page 477
Определение объектов для вашей игры......Page 478
Форма объекта......Page 479
Определение функции объекта......Page 480
Оружие......Page 482
Транспорт......Page 483
Категории предметов и значения......Page 484
Флаги предмета......Page 485
Ограничения использования......Page 486
Присоединение скриптов к предметам......Page 487
Итоговая структура данных предмета......Page 488
Главный список предметов......Page 489
Конструирование MIL......Page 490
Использование редактора MIL......Page 491
Управление предметами с помощью системы контроля имущества......Page 494
Разработка ICS карты......Page 496
cMapICS::Load, cMapICS::Save и cMapICS::Free......Page 499
cMapICS::Add и cMapICS::Remove......Page 502
Использование класса cMapICS......Page 504
Разработка ICS персонажа......Page 506
Определение класса cCharICS......Page 507
Использование класса cCharICS......Page 510
Заканчиваем с объектами и имуществом......Page 511
Игроки, персонажи, монстры — о боже!......Page 512
Способности персонажа......Page 514
Атрибуты персонажа......Page 516
Дополнительные статусы персонажа......Page 517
Действия персонажей......Page 519
Управление ресурсами......Page 521
Увеличение опыта и силы......Page 522
Независимые персонажи......Page 523
Персонажи монстров......Page 524
Перемещение персонажей......Page 525
Управление персонажем игрока......Page 526
Управление направлением......Page 527
Управление поворотом......Page 529
Управление от первого лица......Page 530
Блуждание по области......Page 531
Использование маршрутных точек......Page 533
Быстрее Пифагора......Page 534
Прохождение маршрута......Page 536
Следование за другим персонажем......Page 537
Избегание персонажа......Page 538
Общение между персонажами......Page 539
Управляемые скриптами говорящие куклы......Page 540
Показ диалогов и другого текста......Page 541
Класс cWindow......Page 542
cWindow::cWindow и cWindow::~cWindow......Page 543
cWindow::SetText......Page 544
cWindow::Move......Page 545
cWindow::Render......Page 547
Использование cWindow......Page 548
Класс скрипта......Page 549
Создание производного класса скрипта......Page 550
Производный класс......Page 551
Использование предметов......Page 554
Использование магии......Page 555
Торговля и обмен......Page 556
Графика заклинания......Page 557
Функция заклинания......Page 559
Изменение здоровья и маны......Page 560
Расколдовывание......Page 561
Главный список заклинаний......Page 562
Определение заклинаний с MSL Editor......Page 565
Создание контроллера заклинаний......Page 567
Отслеживание заклинаний с использованием sSpellTracker......Page 568
Класс cSpellController......Page 570
cSpellController::GetSpell......Page 572
Использование контроллера заклинаний......Page 573
Сражения и персонажи......Page 574
Нанесение удара......Page 575
Обработка ущерба......Page 576
Заклинания в битве......Page 578
Построение главного списка персонажей......Page 580
MCL Editor......Page 584
Зацикливание анимации и sCharAnimationInfo......Page 586
Отслеживание персонажей с sCharacter......Page 587
Класс sCharacterController......Page 592
Использование sCharacterController......Page 604
Демонстрация персонажей в программе Chars......Page 606
Заканчиваем с персонажами......Page 607
Список персонажей карты......Page 610
Загрузка списка персонажей карты......Page 611
Использование списка персонажей карты в вашей игре......Page 612
Использование триггеров карты......Page 613
Кубический триггер......Page 614
Треугольный триггер......Page 615
Создание класса триггера......Page 616
cTrigger::cTrigger и cTrigger::~cTrigger......Page 619
cTrigger::Load и cTrigger::Save......Page 620
cTrigger::AddTrigger......Page 622
cTrigger::AddSphere, cTrigger::AddBox, cTrigger::AddCylinder и cTrigger::AddTriangle......Page 623
cTrigger::Remove и cTrigger::Free......Page 625
cTrigger::GetTrigger......Page 626
cTrigger::GetEnableState и cTrigger::Enable......Page 629
cTrigger::GetNumTriggers и cTrigger::GetParentTrigger......Page 630
Касание триггера......Page 631
Блокирование пути барьерами......Page 632
cBarrier::SetMesh и cBarrier::SetAnim......Page 635
cBarrier::Render......Page 636
Добавление барьеров с cBarrier......Page 637
Загрузка данных барьеров......Page 638
Использование автоматических карт......Page 639
Большие карты, малые карты......Page 640
Создание класса автоматической карты......Page 645
cAutomap::Create и cAutoMap::Free......Page 647
cAutomap::Load и cAutomap::Save......Page 651
cAutomap::GetNumSections и cAutomap::EnableSection......Page 652
cAutomap::SetWindow и cAutomap::Render......Page 653
Использование cAutomap......Page 655
Заканчиваем с картами и уровнями......Page 656
Проектирование внешних боевых последовательностей......Page 658
Техническая сторона......Page 660
Разработка боевых последовательностей......Page 662
Глобальные данные......Page 664
cApp::Init......Page 665
cApp::Frame......Page 669
cApp::GetCharacterAt......Page 674
Использование боевых аранжировок......Page 676
Заканчиваем с боевыми последовательностями......Page 677
Безумная многопользовательская сеча......Page 680
Проектирование многопользовательской игры......Page 681
Демонстрационная программа Network Game......Page 683
Создание архитектуры многопользовательской игры......Page 685
Работаем вместе: клиент и сервер......Page 686
Взгляд на сервер......Page 689
Взгляд на клиента......Page 691
Работа над игровым сервером......Page 692
Хранение информации игрока......Page 694
Обработка сообщений......Page 695
От сообщений DirectPlay к игровым сообщениям......Page 697
Очередь сообщений......Page 701
Обработка игровых сообщений......Page 703
cApp::AddPlayer......Page 704
cApp::RemovePlayer......Page 706
cApp::PlayerStateChange......Page 707
Обновление игроков......Page 711
Вычисление запаздывания......Page 713
Работа над игровым клиентом......Page 714
Обработка данных игрока......Page 715
Сетевой компонент......Page 717
cApp::CreatePlayer......Page 720
cApp::DestroyPlayer......Page 721
cApp::ChangeState......Page 722
Обновление локального игрока......Page 723
Обновление всех игроков......Page 728
Клиент во всем блеске......Page 729
Заканчиваем с многопользовательскими играми......Page 730
Глава 16 Объединяем все вместе в законченную игру......Page 732
Написание сценария игры......Page 734
Разработка уровней......Page 736
Определение персонажей......Page 740
Создание предметов и заклинаний......Page 743
Разработка скриптов......Page 746
Определение управления......Page 749
Планирование хода игры......Page 750
Программирование примера игры......Page 752
Структурирование приложения......Page 754
Функция приложения Init......Page 756
Обработка кадров в функции Frame......Page 759
Использование обработки на основе состояний......Page 760
Работа с картами......Page 766
Управление персонажами......Page 769
Поддержка торговли......Page 775
Воспроизведение звуков и музыки......Page 776
Визуализация сцены......Page 778
Обработка скриптов......Page 779
Завершаем создание игры......Page 782
Приложение C Словарь терминов......Page 784
Рекомендованное чтение......Page 786
Получение помощи в Web......Page 789
Приложение B Содержимое CD-ROM......Page 792
Пробная версия GoldWave 5......Page 793
gameSpace Light......Page 794
Приложение C Словарь терминов......Page 796
Алфавитный указатель......Page 812