netlib.narod.ru
< Назад |
Оглавление
| Далее >
Оглавление
Благодарности
Введение
Для кого предназначена эта книга
Что ожидать от книги
Сопроводительные файлы и поддержка
Часть I. Основы
Глава 1. Экскурс в прошлое
Краткий обзор
Первые стратегии реального времени
Utopia от Intellivision
Игровое поле
Земля
Здания
Океан
Корабли
Рыба, погода и пираты
Резюме
Populous от Bullfrog
Приманка
Строительство ландшафта
Первые популярные стратегии реального времени
Command & Conquer от Westwood
История
Интерфейс
Экран радара
Индикаторы ресурсов
Объекты для постройки
Уровень энергии
Игровое поле
Технология
Баланс игры
Warcraft: Orcs & Humans
StarCraft от Blizzard
Будущее стратегий реального времени
Широкомасштабные многопользовательские игры
Умные компьютеры
Первые стратегические игры
Warlords
Empire
Command H.Q.
The Seven Cities of Gold
X-COM: UFO Defense
Итоги
Глава 2. Основы программирования в Windows
Краткий обзор
Архитектура программ для Windows
Работа, управляемая событиями
События
Структура программы
Очередь событий
Функция WinMain()
Обработчик сообщений
Пишем первую программу для Windows
Начало работы с Visual C++ 6.0
Как создать проект
Рабочее пространство
Файлы ресурсов
Добавление исходных файлов в проект
Погружаемся и сталкиваемся с кодом
Включение файлов и прототипы функций
Внутреннее устройство функции WinMain()
Структура данных WNDCLASSEX
Функция RegisterClassEx()
Функция CreateWindowEx()
Функция ShowWindow()
Получение сообщений функцией GetMessage()
Трансляция сообщений функцией TranslateMessage()
Помещение сообщений в очередь функцией DispatchMessage()
Функция обработки сообщений
Компиляция и выполнение кода
Итоги
Глава 3. Механика игры
Краткий обзор
Сюжет
Тема сюжета
Элементы сюжета
Сюжетная основа
Конечная цель сюжета
Расстановка целей
Пример для изучения — Empire Earth
Описание событий
Начальные цели
Главные вехи
Заключительная цель
Боевые единицы
Стоимость боевых единиц
Скорость боевых единиц
Вычисление скорости боевых единиц
Броня боевых единиц
Вычисление обороноспособности
Очки повреждений
Огневая мощь боевых единиц
Скорострельность
Вычисление скорострельности
Тип повреждений
Специальные повреждения
Скорость оружия
Вычисление скорости снаряда
Управление ресурсами
Выберите, что вы будете пить
Определение ресурсов
Добыча ресурсов
Баланс ресурсов
Пример несбалансированности
Пример сбалансированности
Скорость добычи
Дерево технологий
Различные типы технологий
Технологии для инфраструктуры
Технологии для вооружений
Технологии для модернизации
Стоимость технологий
Игровая кампания
Редактор миссий
Цели миссии
Многопользовательская игра
Итоги
Глава 4. Планирование игрового проекта
Краткий обзор
Фаза идей
Создание наброска
Фаза определения требований
Фаза технической документации
Фаза разработки
Контроль исходного кода
Управление метками
Отслеживание ошибок
Отслеживание
Привязка к исходному коду
Метрики качества
Тестирование отдельных частей
Фаза тестирования
Фаза производства
Распространение
Условно-бесплатные программы
Сайты аукционов
Издатели
Итоги
Часть II. Строительные блоки
Глава 5. Блочная графика
Краткий обзор
Основы блочной графики
Что такое блок?
Зачем использовать блоки?
Использование блоков для экономии памяти
Применение блоков для повторного использования графики
Использование блоков для динамического содержимого
Как создавать блоки?
Выбор размера блоков
Определение необходимых блоков
Как отображать блоки?
Отображение двухмерной сетки
Как вычислить местоположение в массиве
Как вычислить видимую позицию
Отображение изометрических блоков
Отображение трехмерных блоков
Многослойные блоки
Добавление деталей к блокам
Переходные блоки
Блоки с изображениями дорог
Как добавить трехмерные деревья
Анимированные блоки
Редактирование и хранение блоков
Хранение блоков в двухмерном массиве
Хранение многослойных блоков
Создание класса для хранения блоков
Заголовок класса
Реализация класса
Пример использования класса
Свойства блоков
Проходимость
Возвышенность
Яркость
Смещение
Отображение блоков
Отображение двухмерных блоков
Архитектура проекта D3DFrame_2DTiles
Заголовочный файл Main.h
Файл программы Main.cpp
Отображение двухмерных изометрических блоков
Архитектура проекта D3DFrame_Isometric2DTiles
Заголовочный файл Main.h
Файл программы Main.cpp
Отображение двухмерных изометрических блоков со спрайтами
Архитектура проекта D3DFrame_Isometric2DSpriteTiles
Заголовочный файл Main.h
Файл программы Main.cpp
Зачем использовать спрайты?
Отображение трехмерных блоков
Архитектура проекта D3DFrame_3DTiles
Заголовочный файл Main.h
Файл программы Main.cpp
Загрузка трехмерных моделей
Точечный источник света
Визуализация трехмерных моделей
Итоги
Глава 6. Проектирование и разработка интерфейса
Краткий обзор
Определение требований к интерфейсу
Активные зоны и графика
Детализация схемы интерфейса
Взаимосвязь шаблонов интерфейса
Звуковое оформление интерфейса
Состояния интерфейса
Раскадровка интерфейса
Удобство и простота интерфейса
Щелчки мышью и взаимодействие с интерфейсом
Сложность навигации по меню
Согласованность интерфейса
Двухмерная графика в Direct3D
Архитектура проекта D3D_TitleScreen
Заголовочный файл Main.h
Ключевые типы данных Direct3D
Структура данных настраиваемого формата вершин (FVF)
Данные местоположения
Данные нормали
Данные текстуры
Определение формата вершины
Прототипы функций
Файл программы Main.cpp
Функция WinMain()
Вычисление смещения клиентской области
Функция InitD3D()
Создание объекта Direct3D
Настройка параметров отображения
Создание устройства трехмерной визуализации
Настройка среды визуализации
Функция vInitInterfaceObjects()
Создание буфера вершин
Блокировка буфера вершин
Заполнение буфера вершин данными
Загрузка текстур
Функция vRender()
Функция vDrawInterfaceObject()
Горячие точки, или как я научился любить щелчки мыши
Обнаружение активных зон
Архитектура проекта D3D_MouseZones
Заголовочный файл Main.h
Глобальные данные активных зон
Файл программы Main.cpp
Функция WinMain()
Функция vSetupMouseZones()
Функция MouseZoneClass::vFreeZones()
Функция MouseZoneClass::vInitialize()
Функция MouseZoneClass::iAddZone()
Функция vCheckInput()
Управление щелчками мыши
Вычисление смещения клиентской области окна на рабочем столе
Вычисление местоположения указателя мыши
Функция MouseZoneClass::bCheckZones()
Обнаружение сообщений кнопок мыши
Выход из программы
Динамическое отображение меню
Заголовочный файл MouseZoneClass.h
Структура данных stHotSpot
Закрытые члены данных класса MouseZoneClass
Функции класса MouseZoneClass
Файл MouseZoneClass.cpp
Функция MouseZoneClass::MouseZoneClass()
Функция MouseZoneClass::~MouseZoneClass()
Функция MouseZoneClass::vInitialize() Function
Функция MouseZoneClass::vFreeZones() Function
Функция MouseZoneClass::iAddZone() Function
Функция MouseZoneClass::iRemoveZone() Function
Функция MouseZoneClass::bCheckZones() Function
Подсветка пунктов меню
Архитектура проекта D3D_MouseZoneHighlights
Заголовочный файл Main.h
Файл программы Main.cpp
Как определить подсвечиваемую активную зону
Как создать подсвечиваемую активную зону
Как отобразить подсветку активной зоны
Итоги
Глава 7. Добавляем к игре звук
Краткий обзор
Звуковые API
Архитектура DirectMusic
Загрузчик DirectMusic
Исполнитель DirectMusic
Сегменты DirectMusic
Как воспроизвести файл WAV
Проект DMusic_PlaySound
Заголовочный файл Main.h
Файл программы Main.cpp
Функция bInitializeSoundSystem()
Как инициализировать COM
Создание интерфейса загрузчика
Создание интерфейса исполнителя
Инициализация аудиосистемы
Как регулировать громкость
Загрузка звукового файла
Как загрузить сегмент
Функция vPlaySound()
Воспроизведение звука
Как воспроизвести файл MIDI
Как воспроизвести файл MP3
DirectShow
Проект DShow_PlayMP3
Заголовочный файл Main.h
Граф фильтров
Управление аудиовизуальным потоком
События аудиовизуального потока
Позиционирование аудиовизуального потока
Файл программы Main.cpp
Функция bPlayTitleMusic()
Инициализация DirectShow
Загрузка музыкального файла
Установка темпа воспроизведения
Воспроизведение музыки
Перехват фоновых событий
Функция vCheckMusicStatus()
Проверка кода события
Остановка музыки
Перемотка музыки
Запуск музыки
Реализация классов звуковой системы
Класс звуковой системы
Определение класса звуковой системы
Определение класса звукового фрагмента
Реализация класса звуковой системы
Деструктор SoundSystem::~SoundSystem()
Функция SoundSystem::hrInitSoundSystem()
Функция SoundSystem::hrLoadSound()
Функция SoundSystem::hrPlaySound()
Реализация класса звукового фрагмента
Пример использования класса звуковой системы
Инициализация класса звуковой системы
Воспроизведение звуковых фрагментов
Использование класса звуковой системы в меню
Итоги
Глава 8. Да будут войска!
Краткий обзор
Проектирование подразделений
Название подразделения
Способ передвижения
Передвижение по земле
Передвижение по воздуху
Передвижение по воде
Полеты в космосе
Скорость передвижения
Тип атаки
Тип защиты
Программирование шаблона
Класс CUnitDefense
Члены данных класса CUnitDefense
Коэффициенты защиты
Очки повреждений
Скорость восстановления
Тип защиты
Название защиты
Методы класса CUnitDefense
Класс CUnitOffense
Члены данных класса CUnitOffense
Коэффициенты поражения
Радиус взрыва
Скорострельность
Скорость снаряда
Дальнобойность
Тип атаки
Название типа атаки
Методы класса CUnitOffense
Класс CUnitMovement
Члены данных класса CUnitMovement
Скорость передвижения
Способ передвижения
Ускорение и торможение
Скорость поворота
Методы класса CUnitMovement
Класс CUnitAnimation
Члены данных класса CUnitAnimation
Анимация ожидания
Анимация передвижения
Анимация атаки
Анимация гибели
Начальный кадр анимации
Данные текстуры
Методы класса CUnitAnimation
Функция CUnitAnimation::vSetRenderDevice()
Функция CUnitAnimation::vLoadTextures()
Цвета владельца
Функция CUnitAnimation::vReset()
Класс CTexture
Члены данных класса CTexture
Методы класса CTexture
Функция CTexture::vLoad()
Функция CTexture::vRelease()
Функция CTexture::vSetRenderDevice()
Класс CUnit
Члены данных класса CUnit
Методы класса CUnit
Функция CUnit::vReset()
Функция CUnit::vSetBaseValues()
Функция CUnit::vSetPosition()
Класс CUnitManager
Загрузка базовых типов
Функция CUnitManager::iLoadBaseTypes()
Функция CUnitManager::ptrGetDefenseType()
Создание подразделений
Функция CUnitManager::iAddUnit()
Управление текстурами
Рисование подразделений
Функция vDrawUnit()
Функция vRender()
Использование альфа-канала
Отображение активных подразделений
Обновление кадра анимации
Обработка ожидающих подразделений
Обработка поворачивающих подразделений
Обработка атакующих подразделений
Обработка гибнущих подразделений
Обработка перемещающихся подразделений
Загрузка и создание подразделений
Итоги
Глава 9. За кулисами клавиатуры
Краткий обзор
Обзор DirectInput
Интерфейс IDirectInput8
Интерфейс IDirectInputDevice8
Ввод с клавиатуры
Проект DInput_Simple
Инициализация DirectInput
Функция iInitDirectInput()
Функция iInitKeyboard()
Буферизованный ввод с клавиатуры
Функция IDirectInputDevice8::SetProperty()
Установка формата данных клавиатуры
Установка уровня кооперации
Захват клавиатуры
Раскладка клавиатуры
Чтение данных клавиатуры
Функция iReadKeyboard()
Определение состояния DIK
Преобразование кода DIK в код ASCII
Ввод текста в игре
Навигация по меню
Активация ввода текста
Обработка текстового ввода
Отображение введенного текста
Интерфейс шрифта
Функция ID3DXFont::DrawText()
Итоги
Часть III. Инструменты разработчика
Глава 10. Редактируем карту мира
Краткий обзор
Основы редактирования карт
Компоненты редактора карт
Область редактирования
Область выбора блоков
Мини-карта
Область вывода информации
Просмотр карты
Глобальные переменные карты
Ход выполнения программы
Генерация случайной карты
Навигация по карте
Загрузка изображений блоков
Визуализация блоков
Редактирование карты
Глобальные переменные карты
Ход выполнения программы
Программирование панели инструментов
Отображение блоков на панели инструментов
Редактирование карты
Сохранение и загрузка карты
Функция SaveMap()
Функция LoadMap()
Отображение мини-карты
Функция vCreateMinimap()
Функция vRenderMinimap()
Алгоритмы генерации карт
Функция vGenerateMap()
Методы генерации карт
Многослойные карты
Изменения в заголовочном файле
Многомерный массив
Функция смены слоя
Переменные для новых кнопок
Изменения в функции vCreateToolbar()
Функция vChangeLayer()
Изменение процедур сохранения и загрузки
Изменения в функции vRender()
Изменения в функции vCheckMouse()
Итоги
Глава 11. Трехмерная анимация
Краткий обзор
Обзор трехмерной анимации
Сцена
Объекты
Фиксированные объекты
Ключевые кадры
Автоматическая вставка промежуточных кадров
Анимационные наборы
Импорт содержимого
Экспорт из 3ds max
Основы моделирования
Загрузка объекта
Программа Convert 3DS
Редактирование анимации
Готовые редакторы анимации
Программирование собственного редактора
Интерфейс редактора анимации
Команды редактора анимации
Команды работы с кадрами
Команды работы с объектами
Команды воспроизведения
Команды работы с файлами
Процесс редактирования
Сохранение и загрузка
Программирование редактора
Элементы управления программы D3D_AnimationEditor
Проект D3D_AnimationEditor
Класс C3DAnimation
Методы класса C3DAnimation
Члены данных класса C3DAnimation
Структура stKeyFrame
Реализация методов класса C3DAnimation
Конструктор класса C3DAnimation
Деструктор класса C3DAnimation
Функция C3DAnimation::vReset()
Функция C3DAnimation::vNewFrame()
Функция C3DAnimation::iNextFrame()
Функция C3DAnimation::iPrevFrame()
Функция C3DAnimation::iStartFrame()
Функция C3DAnimation::iNewObj()
Функция C3DAnimation::vUpdateTrans()
Функция C3DAnimation::vUpdateRot()
Функция C3DAnimation::vUpdateScale()
Функция C3DAnimation::vSave()
Функция C3DAnimation::vLoad()
Функция C3DAnimation::vSet3DDevice()
Программа D3D_AnimationEditor
Функция vInitAnimation()
Функция vLoadObject()
Создание кадров
Выбор необходимого объекта
Изменение местоположения объекта
Добавление ключевых кадров
Функция vRender()
Управление с клавиатуры
Что еще можно сделать
Реализация анимации
Итоги
Часть IV. Дополнительные темы
Глава 12. Поиск пути
Краткий обзор
Задача поиска пути
Простое решение
Поиск пути по алгоритму A*
Основы A*
Начало поиска
Вычисление стоимости узлов
Базовая стоимость узла
Стоимость относительно начального узла
Стоимость относительно цели
Общая стоимость
Поиск наилучшего узла
Продолжение поиска
Обратная трассировка для нахождения пути
Реализация в коде
Функция инициализации пути
Функция CPathFinder::bFindPath()
Итоги и оптимизация
Глава 13. Визуализация частиц
Краткий обзор
Основные сведения о частицах
Характеристики частиц
Изображение частиц
Движение частиц
Анимация частиц
Структура класса частиц
Класс CVector
Класс CParticle
Члены данных
Методы класса
Функция CParticle::vUpdate()
Реализация системы частиц
Структура проекта D3D_Particles
Инициализация частиц
Визуализация частиц
Итоги
Глава 14. Пример сетевого программирования
Краткий обзор
Сетевые соединения
Игра по локальной сети
BNC — шаг вперед!
Соединения витой парой
Соединение через кросс-кабель
Сеть с концентратором
Сеть с коммутатором
Маршрутизаторы — ворота в Интернет
Сетевые протоколы
Протокол TCP/IP
Протокол UDP
TCP/IP против UDP
Пакеты
Задержка
Одноранговые сети
Сети клиент-сервер
Сравнение одноранговых сетей и сетей клиент-сервер
Сокеты и DirectPlay
Пример программирования сокетов
Программа Sockets_Receive
Включение заголовочного файла WinSock
Установка версии WinSock
Создание сокета
Поиск сервера по URL
Установка номера порта
Подключение к серверу
Отправка данных серверу
Получение данных от сервера
Закрытие сокета
Отключение сокетов
Программирование сетевых походовых игр
Ход выполнения походовой игры
Программа Sockets_TurnGame
Глобальные переменные программы Sockets_TurnGame
Функции программы Sockets_TurnGame
Функция vHost()
Функция vConnect()
Функция vTurnDone()
Функция vSendTurnMessage()
Функция vReceiveTurnMessage()
Итоги
Приложение A. Photoshop — лучший редактор для текстур
Краткий обзор
Adobe Photoshop
Создание снимков экрана с помощью Photoshop
Диалоговое окно создания нового изображения
Установка атрибутов изображения
Вставка изображения из буфера
Компоновка изображения
Сохранение изображения
Слои
Эксперименты со слоями
Перемещение слоев
Изменение порядка слоев
Изменение прозрачности слоя
Эффекты
Свойства слоя
Параметры смешивания
Падающая тень
Фильтры
Альфа-карты
Делаем альфа-карту
Вкладка Channels
Инструмент Magic Wand
Выбор фрагмента
Создание маски
Инвертирование маски
Сохранение изображения
Итоги
Приложение B. Ресурсы для разработчика
Алфавитный указатель
netlib.narod.ru
< Назад |
Оглавление
| Далее >
Сайт управляется системой
uCoz