Intro
Содержание
Что и чем будем кодить
3D-шутер (или 3D-стрелялка) от первого лица - самый популярный жанр компьютерных игр на ПК. Наиболее известные игры, созданные в этом жанре: Doom, Quake, Unreal, Serious Sam, FEAR, серия Call of Duty и др. Во всех этих играх мы управляем персонажем, который скрыт, но видны только его руки, держащие оружие. Всё происходящее мы видим,как бы его глазами, что позволяет более полно погрузиться в атмосферу игры. Суть любого 3D-шутера - массовый отстрел врагов, постоянно нападающих со всех сторон.Для тех, кому не нравятся такие игры (например из-за излишней жестокости или однообразия):
- Любой 3D-шутер можно переделать в игру другого жанра, добавив соответствующий функционал. Легендарная игра Half-Life, основанная на переработанном движке Quake, - яркое тому подтверждение.
- Начинать программирование трёхмерных игр лучше, всё же, с 3D-шутеров. Так как этот жанр является фундаментальным для всех других жанров трёхмерных игр.
Язык программирования и API:
- Язык программирования: С++.
- Графичесий API: MS DirectX 9 .
- MS DirectX Runtime library (т.н. "библиотека времени выполнения"; необходима для запуска игр на ПК; включена по-умолчанию во все версии ОС MS Windows Vista/7)
- MS DirectX SDK (Software Development Kit, набор для разработки ПО).
В данном курсе:
- В режиме "Шаг за шагом" мы рассмотрим все стадии программирования 3D-игры. Пройдя весь курс до конца, вы обнаружите, что им можно пользоваться в том числе как справочным пособием.
- Создадим так называемый "каркас" (framework), который позднее может быть использован при создании других игр (в программировании это называется "рефакторинг"). В том числе других жанров. По ходу повествования каркас будет "обрастать" всевозможными "фишками".
- Обязательно коснёмся теории стейтов (states), подробно расскажем об игровом конвейере (pipeline) и о менджменте ресурсов (модели, сцены, звуки и т.д.).
- В конце курса на базе собственноручно созданного движка мы создадим демо-версию FPS-игры, вполне играбельную и готовую к дальнейшему масштабированию (добавлению уровней и контента).
- Создание Проекта движка;
- Создание Проекта игры (в виде исполняемого файла с расширением .exe и прилагаемых ресурсов).
Примечание
Формат LIB является внутренним форматом MS Visual C++. Файлы .lib, как правило, применяются только внутри интегрированной среды программирования (ИСР, IDE). Статические LIB-библиотеки являются хорошим способом повторного использования кода. Вместо того чтобы каждый раз реализовывать одни и те же подпрограммы для обеспечения той или иной функциональности в каждом создаваемом приложении, их можно создать единожды и затем вызывать из приложений. Код, подключенный из статической LIB-библиотеки, становится частью вашего приложения — для использования кода не нужно устанавливать еще какой-либо файл.
После своей компиляции LIB-библиотека будет добавлена в Проект игры, который позднее создадим в том же Решении (так, начиная c MS Visual Studio 2005, теперь зовётся рабочее пространство "workspace"), что и движок. Таким образом, одно Решение будет содержать 2 Проекта: Engine (Проект движка) и Game (Проект игры). Это придаст исходному коду чёткую структуру, повысит читабельность, сделает его более инкапсулированным.
Во 2 части курса на основе разработанного движка, мы создадим игру (демо-версию игры), которая "физически" будет выглядеть как 1 файл приложения Windows с расширением .exe. В общем виде файловую структуру будущей игры можно представить так:
Исполняемый ("стартовый") файл игры (файл с расширением .exe) | Является обычным приложением Win32. Содержит функционал игры (порядок загрузки ресурсов, смена стейтов, активация видеовставок и т.д.). Обычно на него указывает ярлык, размещаемый на Рабочем столе Windows. |
Ресурсы игры | Изображения (текстуры, заставки), звуки, модели, локации и т.д. Как правило, аккуратно разложены по папкам внутри каталога с игрой (maps, textures, sounds и т.д.). |
Полученный после компиляции исполняемый файл игры, в принципе, автономен и без труда запустится на любом компьютере под управлением ОС Windows и установленным DirectX Runtime (при условии, что видеоадаптер поддерживает DirectX 9). Таким образом, получив от IDE исполняемый файл игры, про остальные библиотеки и заголовки можно забыть, бережно перенеся exe-шник и его ресурсы из каталога с Проектом в новый каталог (папку) на жёстком диске с названием игры. Именно эту папку ты затем заархивируешь, перенесёшь на флэшку и будешь с гордостью показывать своё творение на компьютерах друзей. (Собственно, для чего всё и затевалось.))
В начальных главах мы "пробежимся" по основам языка программирования C++ и затронем принципы объекто-ориентированного программировани вцелом. Курс составлен в том числе для новичков, но знать хотя бы азы программирования всё же очень желательно.
Вообще, программированием движка игры с чистого листа, как правило, никто не занимается, так как это самый долгий и трудоёмкий процесс. Для создания крупных коммерческих проектов обычно используют готовые игровые движки (Unreal Engine, Cry Engine, Ogre, Irrlicht и др.) или собственные наработки в данной области. Но чтобы как следует разобраться во всей этой игрокодинговой "кухне", необходимо начать всё буквально "с нуля". Также это нужно, чтобы чётко понимать, что где "лежит" и откуда взялось. Наша цель - чёткий, хорошо структурированный код, в котором его автор может, при необходимости, менять абсолютно всё, что посчитает нужным. Приготовьтесь к головокружительному путешествию в мир программирования 3D-графики. И запаситесь терпением: объём информации для запоминания будет просто огромным! Компьютерные игры - самые сложные программные приложения. Да и Microsoft DirectX является низкоуровневым API, а не игровым движком. Что также не делает жизнь игрокодера проще.
Нам потребуется:
ПК | Intel x86-совместимый компьютер с установленной ОС MS Windows 7, 8. Под Win10 не тестилось, но в теории тоже всё должно работать. Компьютер должен без труда "крутить" 3D-приложения под DirectX 9, увидевшем свет ещё в 2004 году. Современные видеокарты также без труда его "подхватят" (в DirectX заложена обратная совместимость версий. Т.е. библиотеки DirectX 10 и DirectX 11 подойдут для запуска игр, созданных под DirectX 9. |
Microsoft Visual Studio 2010 Express | Официально бесплатный (для некоммерческого использования) пакет из четырёх интегрированных сред разработки приложений (ИСР или IDE) от Microsoft. Включает в себя: Visual C# 2010 Express, Visual C++ 2010 Express, Visual Web Developer 2010 Express, Visual Basic.NET 2010 Express. Все IDE сильно заточены под разработку .NET приложений, но в Visual C++ можно также создавать классические win32 программы. На 15.01.2019 найти Microsoft Visual Studio 2010 Express на сайте самой Microsoft нереально. Берём здесь: http://allpcworld.com/download-visual-studio-2010-express-free/g. ISO-образ. 694 Мб. Формат ISO-образов изначально создавался для записи на CD/DVD-диски. Запиши образ с помощью встроенной в Windows программы записи дисков или сторонних программ (IMG Burning Rom, CDBurnerXP и др.). Классические ISO-образы легко открывались и извлекались с помощью архиватора WinRAR. Но в данном случае образ создан в стандарте UDF и WinRar не поможет. Если чистых дисков нет или не на чем записывать, помогут программы CD Daemon Tools (функционала бесплатной версии будет достаточно) или Alcohol 120% Free. Обе программы создают в системе виртуальный (программный) DVD-привод, позволяя "смонтировать" скачанный ISO-образ прямо с жёсткого диска, и пользоваться им как обычным DVD-диском, вставленным в виртуальный привод. Запускаем Проводник, щёлкаем по виртуальному приводу и запускаем программу установки из предварительно смонтированного ISO-образа (setup.exe). Во время первого запуска любой IDE из состава MSVS она запросит регистрационный ключ, который теоретически можно получить, бесплатно зарегистрировавшись на сайте Microsoft. Но на практике ссылка на ключ в самой MS Visual Studio 2010 уже сейчас (04.07.2015) не работает, а на сайте Microsoft сам чёрт ногу сломит. Так что вводим эти ключи: VC# 2010 Express: PQT8W-68YB2-MPY6C-9JV9X-42WJV VC++ 2010 Express: 6VPJ7-H3CXH-HBTPT-X4T74-3YVY7 VWD 2010 Express: CY8XP-83P66-WCF9D-G3P42-K2VG3 VB.NET 2010 Express: 2KQT8-HV27P-GTTV9-2WBVV-M7X96 |
Microsoft Windows SDK for Windows 7 and.NET Framework 4 | Ставится автоматом вместе с MS Visual C++ 2010. Набор необходимых заголовков, библиотек, документации и утилит для создания приложений под ОС Windows 7. Существуют SDK и для других ОС Windows. На него, в частности, опирается MS Visual Studio при разработке приложений в том числе под DirectX. Поэтому данная версия Microsoft Windows SDK идёт в наборе с MS Visual Studio 2010. Содержит в себе такие важные заголовки, как windows.h, windowsx.h, winnt.h. Без них большинство примеров DirectX SDK 8 просто не станут компилироваться. Берём здесь: https://www.microsoft.com/en-us/download/details.aspx?id=8279. Объём прибл. 3 Мб (веб-инсталлятор). |
Microsoft DirectX SDK 9 | Набор необходимых библиотек, документации и утилит для создания приложений с использованием DirectX. Вышел в свет в 2004 г. До сих пор активно применяется разработчиками инди-игр и специализированных приложений. Берём здесь: https://softfamous.com/directx-9-sdk/download. Объём прибл. 572 Мб. Скачанный архив распаковываем в любую папку на жёстком диске и запускаем Setup.exe. |
Microsoft DirectX SDK 8.1 | Ряд компонентов, которые мы будем использовать, давно признан компанией Майкрософт устаревшими. В частности, в последних версиях DirectX SDK нет ни слова о DirectMusic и DirectSound, т.к. они о были объединены в DirectAudio (XAudio). В связи с эти настоятельно рекомендуем скачать и держать на компьютере в распакованном виде DirectX SDK 8 версии, впервые вышедшей в свет аж в 2001 году. И, несмотря на то, что Майкрософт не считает нужным хранить у себя на сайте подобную "ересь", восьмой SDK всё ещё можно найти в гугле по запросу DX81SDK_FULL.EXE. Также ссылки на него встречаются на форумах разработчиков инди-игр и даже на торрент-трекерах. Вот одна из ссылок для скачивания: http://old-dos.ru/index.php?page=files&mode=files&do=show&id=2629. Объём прибл. 164 Мб. Скачанный архив распаковываем в любую папку на жёстком диске и запускаем Setup.exe. |
GUIDGEN | Генератор GUID-идентификаторов. Раньше шёл в наборе с MS Visual C++ 6.0. В современных версиях MS Visual С++ Express его нет. Берём здесь: https://marketplace.visualstudio.com/items?itemName=AndrewLArnott.GuidGen20, либо пользуемся онлайн-сервисами вроде https://www.guidgen.com . |
Напомним, что из всего набора MS Visual Studio 2010 нам нужна только MS Visual C++ 2010. При желании её нетрудно найти в Интернете в виде отдельного приложения.
Источники
1. Young V. Programming a Multiplayer FPS in DirectX 9.0. - Charles River Media, 2005
ДАЛЕЕ ==> Кодим 3D FPS DX9. 1.1 Проектируем движок
Последние изменения страницы Воскресенье 03 / Июль, 2022 10:45:55 MSK
Последние комментарии wiki