Программирование игр для Windows. Советы профессионала

Что вы должны знать

Введение
Компьютерные игры

Об этой книге
Что вы должны знать
Как организована эта книга
Видеоигры. первые шаги...
Кто пишет видеоигры?
Откуда берутся идеи?
Фазы создания видеоигр
Что вы узнаете из этой книги?

ИТОГ


Основы языка Ассемблера
Зачем нам нужен ассемблер при написании игр?
Обзор семейства процессоров 80x86
Регистры процессора
Флаговый регистр
Общий вид ассемблерной функции
Передача параметров

Директива USES
Передача указателей
Локальные переменные
Директива LOCAL
Создание внешних ссылок
Возвращение параметров в вызывающую функции
Установка видеорежимов
Сверхскоростная очистка экрана

Использование встроенного (in-line) ассемблера
Использование встроенного (in-line) ассемблера - 2
ИТОГ
Основы работы с устройствами ввода
Взаимодействие с пользователем в видеоиграх
Джойстик
Как работает джойстик
Кнопки джойстика

Чтение позиции джойстика
Калибровка джойстика
Клавиатура
Скан-коды
Статус клавиш

Получение скан-кодов с клавиатуры
Получение ASCII-кодов с клавиатуры
Теперь все вместе: Демонстрационная программа работы с клавиатурой
Мышь

ИТОГ
Использование матриц. Двухмерная проекция
Точки, линии и области
Точки
Линии
Многоугольники
Объекты
Позиционирование объекта
Трансляция объектов
Масштабирование объектов

Вращение объектов
Отсечения
Матрицы
Произведение операций над матрицами

Единичная матрица
Использование матриц в играх
Главная матрица перемещений
Главная матрица масштабирования
Главная матрица поворотов
Общая матрица масштабирования, поворотов и перемещений
Компонент нормализации вершины
Программа Астероиды с использованием матриц

К вашему сведению
Основы контроля столкновений
ИТОГ
Секреты VGA-карт
Обзор VGA-карт
Цветный режим
Конфигурация видеопамяти
Таблицы цветов

Переопределение цветовой палитры
Цветовая ротация
Рисование точки
Рисование линий

Графический формат PCX
Побитовое копирование изображения (бит-блиттинг)
Спрайты

Отображение текста
Дублирующее буферизирование
Вертикальный обратный ход луча
Тайминг
Игра Tombstone

Итог
Что такое трехмерное пространство
Точки, линии, многоугольники и объекты в трехмерном пространстве

Перемещения, масштабирование и повороты в трехмерном пространстве
Перемещение трехмерного объекта
Масштабирование трехмерного объекта
Вращение трехмерного объекта
Вращение, параллельное оси Х
Вращение, параллельное оси Y
Вращение, параллельное оси Z
Последнее слово о трехмерных трансформациях

Проекции
Копирование на экран
Масштабирование экрана
Математические основы параллельных проекций
Математические основы верспективной проекции
Объем просмотра
Геометрическое моделирование
Удаление невидимых поверхностей

Алгоритм художника

Алгоритм художника
Алгоритм Художника, Тест 1
Алгоритм Художника, Тесты 3 и 4

Алгоритм Художника, Тест 5
Время выполнения Алгоритма Художника
Алгоритм Z - буфера
Уравнение плоскости
Использование уравнения плоскости для вершин многоугольника
Соотношение пространства образов и пространства объектов
Трассировка луней
Отсечение лучей

Математические основы отсечения лучей
Рисование лучей
Определение значения наклона
Вычисление линий для генерации
Вычисление точки первого пересечения
Вычисление оставшихся пересечений
Вычисление расстояния

Вычисление масштаба
Уменьшение проекционных искажений
Отрисовка фрагментов стен
Реализация отсектеля лучей
Оптимизация отсекателя лучей

Отрисовка дверей и прозрачных областей
Освещение, тени и палитра
Рассеянное освещение
Локальное освещение
Закон Ламберта
Закон обратных квадратов
Создание модели освещения

Итог
Ускорение процесса двоичного кодового преооразовзния (бит-блиттинга)
Применение логических операций
Операция
Кодирование прозрачности

Битовое отсечение
Контроль столкновения спрайтов
Дублирующая буферизация

Использование сигнала вертикальной синхронизации
Мультипликация с помощью регистров цвета
Освещение ваших игр
Связь мультипликации с контекстом

«Animotion»
Специальные эффекты
Фоновая мультипликация
Экранные эффекты

Гаснущее изображение
Пробовали ли вы текстурировать?
Масштабирование растровых изображений

Повороты объектов
Итог
Механика трехмерных спрайтов
Аксонометрические преобразования

Правильный расчет масштаба
Видимый объем
Новая версия масштабирования

Отсечение спрайтов в трехмерном пространстве
Построение траекторий
Удачный угол зрения на спрайты
Трехмерное звездное небо
Реализм

Создание звездного неба с использованием целых чисел
Оцифровка объектов и моделирование

Создание съемочного мини-павильона
Video for Windows
Цветовая палитра
Эксперименты с макетами
Коротко! (То есть итог)
Звуковые эффекты и музыка
Устройство и архитектура звуковой карты Sound Blaster

Оцифрованный звук
Воспроизведение оцифрованного звука
Описание
Использование функций драйвера для проигрывания VOC-файлов

Частотный синтезатор

Использование звука в играх

Музыка И MIDI
Использование звука в играх

ИТОГ
Разработка музыки для компьютерных игр
Способы воспроизведения звука

Пакеты программ DIGPAK и MIDPAK
Что такое «расширенный MIDI-формат»?
В каком формате должны быть представлены данные MIDI?
Вопросы и ответы
API пакета программ DIGPAK
Замечание

API пакета программ MIDPAK
Завтрак с Толстяком - музыка в программах
Почему?
Когда?

Как?
Создание пользовательского интерфейса с системой распознавания голоса
Демонстрационная программа Test.c
Алгоритмы, структуры данных и методология видеоигр
Структуры данных, используемые для представления игрового пространства

Когда объекты сталкиваются
Игровые объекты
Структуры данных в компьютерных играх
Планирование игровых объектов
Состояния бытия

Интерфейс пользователя
Демонстрационный режим
Сохранение игры
Моделирование реального мира

Итог
Мнимое время, прерывания и многозадачность
Восприятие игры
Что такое многозадачность?
Реализация многозадачности при помощи прерываний
Написание программы обработки прерываний на языке Си
Установка обработчика прерывания

Игровой цикл
Автономные функции
Функции ответа
Программируем системные часы
Изменение частоты таймера
Частота

Собираем все вместе
Пример обработчика прерывания № 1 - Там полно звезд...
Пример обработчика прерывания № 2 - Ловим нажатия клавиш!

Заключение
Искусственный интеллект
Как мыслят видеоигры: обзор
Алгоритмы Преследования и Уклонения
Преследование
Уклонение

Шаблонные мысли
Случайные передвижения
Конечные автоматы
Конечный автомат, управляемый окружающей средой

Управление приоритетным состоянием
Вероятностные автоматы
Память и обучение
Алгоритмы Поиска. Выслеживание игрока
Теория игр

Итог
Связь
Средства связи видеоигр
Последовательный интерфейс ПК
Универсальный асинхронный приемопередатчик
Установки и статус UART
Аппаратное обеспечение UART
Операции с ROM BIOS
Соединение через нуль-модем

Построение коммуникационной библиотеки
Инициализация последовательного порта
Установка прерывания
Вектор Номер Адресная функция
Чтение символа из буфера
Запись в последовательный порт
Коммуникационная программа: NLINK

Стратегия игровых коммуникаций
Синхронизация вектора состояния

Синхронизация состояния ввода/вывода

Синхронизация состояния ввода/вывода
Временная синхронизация
Модем
Net Tank: танковый имитатор для двух игроков

Анализ игры Net-Tank
Раздел 1: Инициализация
Раздел 2: Игровой цикл
Раздел 3: Удаление объектов
Раздел 4: Получение входных данных и передача состояния дистанционно управляемой системе
Раздел 5: Перемещение объектов
Раздел 6: Распознавание столкновений
Раздел 7: Рисование объектов
Раздел 8: Дублирующий буфер
Раздел 9: Всякая всячина

Итог
Инструментальные средства
Определение понятия инструментального средства
Редакторы изображений
Пакеты анимации
Производство кинофильма
Звуковые редакторы
Редактор поля WarEdit

Использование WarEdit
Примечание
Функциональное описание программы WarEdit
Улучшения WarEdit
Итог
Графическое оформление игры

Удобные детали и инструменты
Первый этап: планирование
Разрешающая способность и количество цветов
Для кого вы пишете игру?
Содержание и общее настроение игры
Что детализировать, а что нет?
Несколько слов по поводу цвета
Разработка 256-цветной палитры

Ну дайте мне место (разработка стен, пола и «кирпичиков» потолка!
Детали, детали и детали
Придание «кирпичикам» стен глубины трехмерного пространства
Масштабирование изображения
Создание бесшовных мозаичных изображений
Особые ситуации

Если б только у меня было оружие и еда! (разработка объекта)
Подайте сюда врагов! (разработка персонажей)
Технические приемы анимации
Чудовища и прочие кровожадные персонажи
Последние дорисовки
Начальная и конечная заставки
Оформление оценочного экрана

Экраны для отражения статуса и изменения конфигурации игры
Анимация
Кадры для привлечения внимания
ИТОГ
Техника созданий параллакса
Еще кое-что о режиме 13h
Примечание по поводу демонстрационной программы
Первый шаг

Несколько смещающихся слоев
«Прозрачные» пиксели

Оптимизированные версии OpaqueBlt() и TransparentBlt()
Смещение мозаичных изображений

Устранение эффекта сдвига кадра
PCX-графика
Примечания по выполнении
Техника оптимизации

Игра WARLOCK (Колдун)

Содержание раздела