netlib.narod.ru
< Назад |
Оглавление
| Далее >
Оглавление
Благодарности
Об авторе
Введение
О чем эта книга
Для кого предназначена книга
Организация книги
Содержимое CD-ROM
Типографские соглашения
Что нужно для начала
Часть I. Работа с книгой
Глава 1. Готовимся к работе с книгой
DirectX
Подготовка DirectX
Отладочные и дистрибутивные версии
Установка DirectX 9
Установка DirectMusic Producer
Включаемые файлы и библиотеки
Подготовка компилятора
Указание каталогов для DirectX
Связывание с библиотеками
Установка поведения по умолчанию для char
Окончательные и отладочные версии
Многопоточные библиотеки
Программирование для Windows
Потоки и многопоточность
Критические секции
Использование COM
Инициализация COM
IUnknown
Инициализация и освобождение объектов
Запрос интерфейсов
Поток выполнения программы
Модульное программирование
Состояния и процессы
Состояния приложения
Процессы
Обработка данных приложения
Использование упаковки данных
Тестирование системы упаковки данных
Построение каркаса приложения
Структурирование проекта
Завершаем подготовку
Часть II. Основы DirectX
Глава 2. Рисование с DirectX Graphics
Сердце трехмерной графики
Системы координат
Конструирование объектов
Списки, полосы и веера
Порядок вершин
Окрашивание полигонов
Преобразования
Начинаем работать с DirectX Graphics
Компоненты Direct3D
Инициализация системы
Получение интерфейса Direct3D
Выбор видеорежима
Установка метода показа
Создание интерфейса устройства и инициализация дисплея
Потеря устройства
Знакомство с D3DX
Трехмерная математика
Матричная алгебра
Конструирование матриц
Комбинирование матриц
Переход от локальных координат к координатам вида
Переходим к рисованию
Использование вершин
Настраиваемый формат вершин
Использование буфера вершин
Создание буфера вершин
Блокировка буфера вершин
Заполнение данных вершин
Поток вершин
Вершинные шейдеры
Преобразования
Мировое преобразование
Преобразование вида
Преобразование проекции
Материалы и цвета
Очистка порта просмотра
Начало и завершение сцены
Визуализация полигонов
Показ сцены
Использование наложения текстур
Использование наложения текстур в Direct3D
Загрузка текстуры
Установка текстуры
Использование выборок
Визуализация текстурированных объектов
Альфа-смешивание
Включение альфа-смешивания
Рисование с альфа-смешиванием
Копирование с учетом прозрачности и альфа-проверка
Загрузка текстур с цветовым ключом
Включение альфа-проверки
Пример копирования с учетом прозрачности
Освещение
Использование точечного света
Использование зонального света
Использование направленного света
Фоновый свет
Установка света
Использование нормалей
Да будет свет!
Использование шрифтов
Создание шрифта
Рисование текста
Щиты
Частицы
Сортировка по глубине и Z-буферизация
Работа с портом просмотра
Работа с сетками
X-файлы
Формат X-файлов
Использование иерархии фреймов
Создание X-файлов с сетками
Разбор X-файлов
Сетки в библиотеке D3DX
Объект ID3DXBuffer
Стандартные сетки
Визуализация сетки
Скелетные сетки
Загрузка скелетных сеток
Обновление и визуализация скелетной сетки
X-стиль трехмерной анимации
Техника ключевых кадров
Анимация в X-файлах
Завершаем c графикой
Глава 3. Взаимодействие с пользователем с DirectInput
Знакомство с устройствами ввода
Взаимодействие через клавиатуру
Работа с клавиатурой в Windows
Играем с мышью
Удовольствие с джойстиком
Использование DirectInput
Представляем основы DirectInput
Инициализация DirectInput
Использование устройств DirectInput
Получение GUID устройства
Создание COM-объекта устройства
Установка формата данных
Установка уровня кооперации
Установка специальных свойств
Захват устройства
Опрос устройства
Чтение данных
DirectInput и клавиатура
DirectInput и мышь
DirectInput и джойстик
Заканчиваем с вводом
Глава 4. Воспроизведение звуков и музыки с DirectX Audio и DirectShow
Основы звука
Цифровая звукозапись
Музыкальное безумие
MIDI
DirectMusic
MP3
Знакомство с DirectX Audio
Использование DirectSound
Инициализация DirectSound
Установка уровня кооперации
Установка формата воспроизведения
Создание объекта первичного звукового буфера
Установка формата
Запуск первичного звукового буфера
Использование вторичных звуковых буферов
Блокируй и загружай — загрузка звуковых данных в буфер
Воспроизведение звукового буфера
Изменение громкости, позиционирования и частоты
Регулировка громкости
Позиционирование
Изменение частоты
Потеря фокуса
Использование уведомлений
Использование потоков для сканирования событий
Загрузка звука в буфер
Потоковое воспроизведение звука
Работа с DirectMusic
Начинаем работу с DirectMusic
Создание объекта исполнителя
Создание объекта загрузчика
Работа с музыкальными сегментами
Загрузка музыкальных сегментов
Загрузка инструментов
Настройки для MIDI
Установка инструментов
Использование циклов и повторов
Воспроизведение и остановка сегмента
Выгрузка данных сегмента
Изменение музыки
Установка громкости
Смена темпа
Захват аудио-канала
Присоединяемся к MP3-революции
Использование DirectShow
Загрузка медиа-файла
Управление воспроизведением вашей музыки и звуков
Воспроизведение звука
Приостановка воспроизведения
Завершение воспроизведения
Обнаружение событий
Освобождение ресурсов DirectShow
Заканчиваем с музыкой
Глава 5. Работа с сетью с DirectPlay
Знакомство с сетями
Сетевые модели
Лобби
Задержка и запаздывание
Коммуникационные протоколы
Адресация
Введение в DirectPlay
Сетевые объекты
Работа с игроками
Сетевые сообщения
Асинхронная и синхронная работа
Безопасность
Гарантированная доставка
Регулировка потока
От маленьких байтов к большим словам
Идентификация приложений по GUID
Инициализация сетевого объекта
Использование адресов
Инициализация объекта адреса
Добавление компонентов
Установка поставщика услуг
Выбор порта
Назначение устройства
Использование обработчиков сообщений
Конфигурирование данных сессии
Данные сессии сервера
Данные сессии клиента
Работа с сервером
Поддержка игроков
Работа с сообщениями о создании игрока
Получение имени игрока
Уничтожение игроков
Получение данных
Отправка сообщений сервера
Завершение сессии на главном узле
Работа с клиентом
Получение и отправка сообщений
Получение идентификатора игрока
Завершение сессии клиента
Заканчиваем с сетями
Глава 6. Создаем ядро игры
Знакомство с концепцией ядра
Системное ядро
Использование объекта ядра cApplication
Обработка состояний с cStateManager
Процессы и cProcessManager
Управление данными с cDataPackage
Графическое ядро
Графическая система и cGraphics
Изображения и cTexture
Цвета и cMaterial
Освещение с cLight
Текст и шрифты с использованием cFont
Вершины и cVertexBuffer
Мировое преобразование с cWorldPosition
Преобразование вида и cCamera
Загружаемые сетки и использование cMesh
Рисуем объекты, используя cObject
Делаем сетки двигающимися с cAnimation
Ядро ввода
Использование DirectInput с cInput
Устройства ввода и cInputDevice
Использование ядра ввода
Звуковое ядро
Управление DirectX Audio с cSound
Использование волновых данных и cSoundData
Воспроизведение звука с cSoundChannel
Слушаем музыку с cMusicChannel
Смешивание инструментов с cDLS
Воспроизведение MP3 с cMP3
Сетевое ядро
Запрос адаптера с cNetworkAdapter
Серверы и cNetworkServer
Работа клиента и cNetworkClient
Заканчиваем изучать ядро игры
Часть III. Программирование ролевой игры
Глава 7. Использование двухмерной графики
Знакомство с блоками и картами
Использование блоков с DirectX
Построение класса для работы с блоками
cTiles::Create
cTiles::Free
cTiles::Load
cTiles::Free
cTiles::GetWidth, cTiles::GetHeight и cTiles::GetNum
cTiles::SetTransparent
cTiles::Draw
Использование класса работы с блоками
Основы работы с блочной графикой
Рисование основной карты
Использование нескольких слоев
Добавление объектов
Плавная прокрутка
Карта и мышь
Создание класса карты
Псевдотрехмерные блоки
Работа с большими растрами
Создание больших блоков
Большой пример
Заканчиваем с двухмерной графикой
Глава 8. Создание трехмерного графического движка
Сетки в качестве уровней
Загрузка уровней
Рисование комнат
Усовершенствование базовой техники
Знакомство с пирамидой видимого пространства
Плоскости и отсечение
Проверка видимости с плоскостями
Проверка всей пирамиды
Класс cFrustum
cFrustum::Construct
cFrustum::CheckPoint, CheckCube, CheckRectangle и CheckSphere
Разработка профессионального трехмерного движка
Знакомство с движком NodeTree
Создание узлов и деревьев
Сканирование и рисование дерева
Работа с группами материалов
Создание класса cNodeTreeMesh
cNodeTreeMesh::Create и cNodeTreeMesh::Free
cNodeTreeMesh::SortNode
cNodeTreeMesh::IsPolygonContained и cNodeTreeMesh::CountPolygons
cNodeTreeMesh::AddNode
cNodeTreeMesh::Render
Использование cNodeTreeMesh
Добавление к миру трехмерных объектов
Вычисление ограничивающей сферы
Ограничивающие сферы и пирамида видимого пространства
Обнаружение столкновений сеток
Столкновение с миром
Испускание лучей
Блокировка пути
Перемещение вверх и вниз
Быстрая проверка пересечения
Обнаружение столкновений в классе cNodeTreeMesh
Когда сталкиваются сетки
Щелчки мыши и сетки
Использование небесного куба
Создание класса небесного куба
cSkyBox::Create и cSkyBox::Free
cSkyBox::LoadTexture
cSkyBox::Rotate и cSkyBox::RotateRel
cSkyBox::Render
Использование класса небесного куба
Заканчиваем с трехмерной графикой
Глава 9. Объединение двухмерной и трехмерной графики
Смешивание двух измерений
Использование двухмерных объектов в трехмерном мире
Рисование блоков в трехмерном мире
Загрузка сетки уровня
Загрузка блоков
Подготовка к рисованию
Рисование сетки уровня
Рисование двухмерных объектов
Перемещение в трехмерном мире
Добавление трехмерных объектов к двухмерному миру
Работа с двухмерным фоном
Работа с сеткой сцены
Визуализация сцены
Добавление трехмерных объектов
Столкновения и пересечения
Заканчиваем смешивание
Глава 10. Реализация скриптов
Что такое скрипты
Создание системы Mad Lib Script
Проектирование системы Mad Lib Script
Программирование системы Mad Lib Script
Работа с шаблонами действий
Создание элементов скрипта
Объединяем все в классе cActionTemplate
Работа с редактором MLS Editor
Выполнение скриптов Mad Lib
Применение скриптов в играх
Заканчиваем со скриптами
Глава 11. Определение и использование объектов
Определение объектов для вашей игры
Форма объекта
Определение функции объекта
Оружие
Броня
Аксессуары
Еда
Коллекции
Транспорт
Прочее
Добавление функций к объекту
Категории предметов и значения
Задание цены предметов
Флаги предмета
Ограничения использования
Присоединение скриптов к предметам
Сетки и изображения
Итоговая структура данных предмета
Главный список предметов
Конструирование MIL
Использование редактора MIL
Доступ к предметам из MIL
Управление предметами с помощью системы контроля имущества
Разработка ICS карты
cMapICS::Load, cMapICS::Save и cMapICS::Free
cMapICS::Add и cMapICS::Remove
cMapICS::GetNumItems, cMapICS::GetParentItem и cMapICS::GetItem
Использование класса cMapICS
Разработка ICS персонажа
Определение класса cCharICS
Использование класса cCharICS
Заканчиваем с объектами и имуществом
Глава 12. Управление игроками и персонажами
Игроки, персонажи, враги — о боже!
Определение персонажей в вашей игре
Способности персонажа
Атрибуты персонажа
Дополнительные статусы персонажа
Классы персонажей
Действия персонажей
Персонажи игроков
Передвижение игрока
Управление ресурсами
Увеличение опыта и силы
Независимые персонажи
Персонажи врагов
Графика персонажей
Перемещение персонажей
Управление персонажем игрока
Управление направлением
Управление поворотом
Управление от первого лица
Управление независимыми персонажами
Ожидание
Блуждание по области
Ходьба по маршруту
Следование за другим персонажем
Избегание персонажа
Автоматическое управление персонажами
Общение между персонажами
Говорящие куклы
Управляемые скриптами говорящие куклы
Показ диалогов и другого текста
Класс cWindow
Использование cWindow
Скрипты и персонажи
Класс скрипта
Создание наследуемого класса скрипта
Наследуемый класс
Использование класса-наследника
Управление ресурсами
Использование предметов
Использование магии
Торговля и обмен
Работа с магией и заклинаниями
Графика заклинания
Функция заклинания
Изменение здоровья и маны
Установка и снятие статусов
Воскрешение и мгновенная смерть
Расколдовывание
Телепортация
Нацеливание заклинаний, стоимость и шансы
Главный список заклинаний
Список заклинаний
Определение заклинаний с MSL Editor
Создание контроллера заклинаний
Сетки и sSpellMeshList
Отслеживание заклинаний с использованием sSpellTracker
Класс cSpellController
Определение жертвы и обработка эффекта заклинания
Использование контроллера заклинаний
Сражения и персонажи
Использование правил сражения для атаки
Нанесение удара
Отклонение атаки
Обработка ущерба
Заклинания в битве
Интеллект в битвах
Построение главного списка персонажей
MCL Editor
Использование определений персонажей
Создание класса контроллера персонажей
Сетки и sCharacterMeshList
Использование определений персонажей
Перемещение и sRoutePoint
Отслеживание персонажей с sCharacter
Класс sCharacterController
Использование sCharacterController
Демонстрация персонажей в программе Chars
Заканчиваем с персонажами
Глава 13. Работа с картами и уровнями
Размещение персонажей на карте
Список персонажей карты
Загрузка списка персонажей карты
Использование списка персонажей карты в вашей игре
Скриптовое размещение
Использование триггеров карты
Сферические триггеры
Кубический триггер
Цилиндрический триггер
Треугольный триггер
Срабатывание триггеров
Создание класса триггера
cTrigger::cTrigger и cTrigger::~cTrigger
cTrigger::Load и cTrigger::Save
cTrigger::AddTrigger
cTrigger::AddSphere, cTrigger::AddBox, cTrigger::AddCylinder и cTrigger::AddTriangle
cTrigger::Remove и cTrigger::Free
cTrigger::GetTrigger
cTrigger::GetEnableState и cTrigger::Enable
cTrigger::GetNumTriggers и cTrigger::GetParentTrigger
Использование триггеров
Определение файла триггеров
Загрузка файла триггеров
Касание триггера
Блокирование пути барьерами
cBarrier::SetMesh и cBarrier::SetAnim
cBarrier::Render
Добавление барьеров с cBarrier
Использование класса барьера
Создание файла данных барьеров
Загрузка данных барьеров
Проверка столкновений с барьерами
Визуализация барьеров
Использование автоматических карт
Автоматические карты в действии
Большие карты, малые карты
Загрузка и отображение автоматической карты
Создание класса автоматической карты
cAutomap::cAutomap и cAutomap::~cAutomap
cAutomap::Create и cAutoMap::Free
cAutomap::Load и cAutomap::Save
cAutomap::GetNumSections и cAutomap::EnableSection
cAutomap::SetWindow и cAutomap::Render
Использование cAutomap
Заканчиваем с картами и уровнями
Глава 14. Создание боевых последовательностей
Проектирование внешних боевых последовательностей
Техническая сторона
Разработка боевых последовательностей
Глобальные данные
cApp::cApp
cApp::Init
cApp::Shutdown
cApp::Frame
cApp::GetCharacterAt
Использование боевых аранжировок
Заканчиваем с боевыми последовательностями
Глава 15. Сетевой режим для многопользовательской игры
Безумная многопользовательская сеча
Проектирование многопользовательской игры
Демонстрационная программа Network Game
Создание архитектуры многопользовательской игры
Работаем вместе: клиент и сервер
Взгляд на сервер
Взгляд на клиента
Работа над игровым сервером
Хранение информации игрока
Обработка сообщений
От сообщений DirectPlay к игровым сообщениям
Очередь сообщений
Обработка игровых сообщений
Обновление игроков
Обновление сетевых клиентов
Вычисление запаздывания
Самое трудное позади!
Работа над игровым клиентом
Обработка данных игрока
Сетевой компонент
Обработка сообщений
cApp::CreatePlayer
cApp::DestroyPlayer
cApp::ChangeState
Обновление локального игрока
Обновление всех игроков
Клиент во всем блеске
Заканчиваем с многопользовательскими играми
Часть IV. Завершающие штрихи
Глава 16. Объединяем все вместе в законченную игру
Проектирование простой игры
Написание сценария игры
Цель игры The Tower
Разработка уровней
Определение персонажей
Распределение персонажей
Создание предметов и заклинаний
Разработка скриптов
Определение управления
Планирование хода игры
Программирование примера игры
Структурирование приложения
Конструктор cApp
Функция приложения Init
Функция Shutdown
Обработка кадров в функции Frame
Использование обработки на основе состояний
Работа с картами
Использование барьеров и триггеров
Управление персонажами
Поддержка торговли
Воспроизведение звуков и музыки
Визуализация сцены
Обработка скриптов
Собираем части
Завершаем создание игры
Часть V. Приложения
Приложение A. Список литературы
Рекомендованное чтение
Получение помощи в Web
Приложение B. Содержимое CD-ROM
DirectX 9.0 SDK
Пробная версия GoldWave 5
Пробная версия Paint Shop Pro 8
gameSpace Light
Приложение C. Словарь терминов
Алфавитный указатель
netlib.narod.ru
< Назад |
Оглавление
| Далее >
Сайт управляется системой
uCoz