Intro
Что и чем будем кодить
Каждый новый курс - это новый подход к созданию игры, который обязательно заинтересует энтузиастов. Role Playing Game (или ролевая игра) - один из самых популярный жанров компьютерных игр. В общем случае главгерой исследует локации, собирает предметы, находит/покупает/продаёт оружие и носимую броню, и самое главное - постоянно повышает свой уровень разными путями (прокачка в боях, покупка магии и т.д.). RPG-игры далеко не всегда созданы по фентезийным вселенным. Существует немало ролёвок в стиле киберпанк, стимпанк и др. Более подробно об этом жанре читай здесь: Жанры компьютерных игр.В данном курсе:
- В режиме "Шаг за шагом" мы рассмотрим все стадии программирования игры в жанре RPG. Пройдя весь курс до конца, ты обнаружишь, что им можно пользоваться в том числе как справочным пособием.
- Создадим так называемый "каркас" (framework), который позднее может быть использован при создании других игр (в программировании это называется "рефакторинг"). В том числе других жанров. По ходу повествования каркас будет "обрастать" всевозможными "фишками".
- Обязательно коснёмся теории стейтов (states), подробно расскажем об игровом конвейере (pipeline) и о менджменте ресурсов (модели, сцены, звуки и т.д.).
- Научимся создавать (относительно) крутую игровую графику и т.н. движок битв (combat engine), внедрять поддержку статов главгероя и оснащать игру внутриигровыми предметами.
Язык программирования и API:
- Язык программирования: С+ + .
- Графичесий API: MS DirectX 8 (8.1) образца 2001 года. Почему именно он?
- Это демократично.
- Практики ( = наработки), полученные в данном курсе, пригодятся при создании игр и под более современные API.
- Автору данного курса в руки попала книга Adams J. Programming Role Playing Games with DirectX 8.0. - Premier Press, 2002 .
Поэтому будем экспериментировать с (более или менее) современной бесплатной IDE MS Visual C++ 2010 Express.
- Создать хорошую игру под устаревший графический API с помощью бесплатных программных средств - это мастерство.
Обрати внимание
DirectPlay признан устаревшим компонентом и уже много лет не поддерживается Майкрософт. Его даже перестали включать в последние версии DirectX SDK. (Здесь придёт на помощь DirectX SDK 8.) Вместо DirectPlay Майкрософт предлагает... ничего! Вернее, предлагает использовать различные реализации сетевых протоколов от сторонних разработчиков.
Но и это ещё не всё. В ОС Microsoft Windows 10 компонент DirectPlay вообще отключен по умолчанию! Это является чуть-ли не единственной причиной, по которой многие игры, использующие его, просто не запускаются, выдавая сообщение об отсутствии библиотек DirectPlay. О том, как его всё-таки включить, есть отличный ролик на YouTube: https://www.youtube.com/watch?v=WrufOcVR_HU .
MS DirectX распространяется в двух видах:
- MS DirectX Runtime library (т.н. "библиотека времени выполнения"; необходима для запуска игр на ПК; включена по-умолчанию во все версии ОС MS Windows XP/Vista/7/8/10)
- MS DirectX SDK (Software Development Kit, набор для разработки ПО; необходим для создания игр).
- System Core (Системное ядро)
- Graphics Core (Графическое ядро)
- Input Core (Ядро ввода)
- Sound Core (Звуковое ядро)
- Network Core (Сетевое ядро).
В течение курса мы будем создавать игровой движок (от англ "engine" - двигатель, движок), который "физически" будет выглядеть как Проект в MS Visual C++, конечной целью которого станет компиляция статической LIB-библиотеки.
Примечание
Формат LIB является внутренним форматом MS Visual C+ + . Файлы .lib, как правило, применяются только внутри интегрированной среды программирования (ИСР, IDE). Обычно их вставляют ("подключают") в проект с исходным кодом исполняемого .exe-файла. Статические LIB-библиотеки являются хорошим способом повторного использования кода. Вместо того чтобы каждый раз реализовывать одни и те же подпрограммы для обеспечения той или иной функциональности в каждом создаваемом приложении, их можно создать единожды и затем вызывать из приложений. Код, подключенный из статической LIB-библиотеки, становится частью вашего приложения — для использования кода не нужно устанавливать еще какой-либо файл.
После своей компиляции LIB-библиотека будет добавлена в Проект игры, который позднее создадим в том же Решении (так, начиная c MS Visual Studio 2005, теперь зовётся рабочее пространство "workspace"), что и движок. Таким образом, одно Решение будет (в общем случае) содержать 2 Проекта:
- Engine (Проект движка)
- Game (Проект игры).
На основе разработанного движка, мы создадим игру (демо-версию игры), которая "физически" будет выглядеть как 1 файл приложения Windows с расширением .exe. В общем виде файловую структуру будущей игры можно представить так:
Исполняемый ("стартовый") файл игры (файл с расширением .exe) | Является обычным приложением Win32. Содержит функционал игры (порядок загрузки ресурсов, смена стейтов, активация видеовставок и т.д.). Обычно на него указывает ярлык, размещаемый на Рабочем столе Windows. |
Ресурсы игры | Изображения (текстуры, заставки), звуки, модели, локации и т.д. Как правило, аккуратно разложены по папкам внутри каталога с игрой (maps, textures, sounds и т.д.) . |
Полученный после компиляции исполняемый файл игры, в принципе, автономен и без труда запустится на любом компьютере под управлением ОС Windows и установленным DirectX Runtime (при условии, что видеоадаптер поддерживает DirectX 8. Не надо смеяться: некоторые ноуты из Китая не поддерживают даже его!. Таким образом, получив от IDE исполняемый файл игры, про остальные библиотеки и заголовки можно забыть, бережно перенеся exe-шник, его ресурсы и MS Visual 2010 Runtime Library из каталога с Проектом в новый каталог (папку) на жёстком диске с названием игры. Именно эту папку ты затем заархивируешь, перенесёшь на флэшку и будешь с гордостью показывать своё творение на компьютерах друзей. (Собственно, для чего всё и затевалось.))
Вообще, программированием движка игры с чистого листа, как правило, никто не занимается, так как это самый долгий и трудоёмкий процесс. Для создания крупных коммерческих проектов обычно используют готовые игровые движки (Unreal Engine, Cry Engine, Ogre, Irrlicht и др.) или собственные наработки в данной области. Но чтобы как следует разобраться во всей этой игрокодинговой "кухне", необходимо начать всё буквально "с нуля". Также это нужно, чтобы чётко понимать, что где "лежит" и откуда взялось. Наша цель - чёткий, хорошо структурированный код, в котором его автор может, при необходимости, менять абсолютно всё, что посчитает нужным. Приготовься к головокружительному путешествию в мир программирования 3D-графики. И запасись терпением: объём информации для запоминания будет просто огромным! Компьютерные игры - самые сложные программные приложения. Да и Microsoft DirectX является низкоуровневым API, а не игровым движком. Что также не делает жизнь игрокодера проще.
Необходимый софт
ПК | Intel x86-совместимый компьютер с установленной ОС MS Windows 7, 8. Под Win10 не тестилось, но в теории тоже всё должно работать. Компьютер должен без труда "крутить" 3D-приложения под DirectX 8, увидевшем свет ещё в 2001 году. Так что современные видеокарты без труда его "подхватят" (в DirectX заложена обратная совместимость версий; т.е. библиотеки DirectX 10 и DirectX 11 подойдут для запуска игр, созданных под DirectX8). |
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 8.1 | Набор библиотек для разработки приложений под DirectX 8. Восьмой SDK всё ещё можно найти в гугле по запросу DX81SDK_FULL.EXE. Вышел в свет в 2001 г. До сих пор активно применяется разработчиками инди-игр и специализированных приложений. Кладезь информации по программированию графики средствами DirectX посредством неуправляемого (unmanaged, т.е. на чистом C++ без .NET-фреймворка) кода. Берём здесь: 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. При желании её нетрудно найти в Интернете в виде отдельного приложения.
ДАЛЕЕ ==> Кодим 3D RPG DX8. 1.1 Создаём ядро игры
Последние изменения страницы Пятница 01 / Июль, 2022 01:17:31 MSK
Последние комментарии wiki