Какой проект создавать в visual studio для игры

Обновлено: 03.07.2024

Правила игры SameGame

Правила SameGame предельно простые. Ваша задача — удалить все цветные блоки с игрового поля. Для того чтобы удалить блок, игрок должен кликнуть по любому блоку, который стоит рядом (вертикально или горизонтально) с другим блоком того же цвета. Таким образом уничтожится целая цепочка блоков одного цвета. Блоки, которые при этом находились сверху, упадут вниз, заполняя освободившееся пространство. При удалении всего столбца, стоящие справа столбцы сдвигаются влево, занимая пустое место. Игра заканчивается тогда, когда у игрока не остается больше возможных ходов. Цель игры состоит в том, чтобы как можно быстрее очистить доску от цветных блоков.

Стоит заметить, что некоторые реализации игры SameGame также могут дополняться использованием алгоритмов для подсчета очков игрока. Реализацию подобного функционала можно рассмотреть в качестве дополнительного урока.

Перед началом работы

Вам потребуются базовые знания в таких разделах языка C++ как функции, рекурсия, классы и наследование классов. В качестве среды разработки была выбрана бесплатная версия Microsoft Visual Studio 2017 Community Edition в операционной системе Windows 7 (детально об установке IDE). Если версии вашей операционной системы или среды разработки не совпадают с вышеуказанными версиями, то некоторые детали или внешний вид отдельных компонентов могут отличаться от тех, которые вы будете видеть на скриншотах данного туториала. Также не советую использовать Express-версии пакета Visual Studiо, т.к. в них не входит компонент MFC.

Чему вы научитесь?

В первую очередь, вы научитесь основным принципам создания своей собственной игры, узнаете о библиотеке MFC и о некоторых базовых методах её использования, а также познакомитесь с построением своего приложения с использованием архитектуры «Document/View».

Почему именно MFC?

Создание проекта

Создавать нашу игру мы будем в Microsoft Visual Studio 2017. Все инструкции и описания, приведенные ниже, могут быть с легкостью адаптированы и для других версий Visual Studio. Итак, для начала запустите Visual Studio и создайте новый проект. Тип проекта "Visual C++" > "MFC/ATL" > "Приложение MFC" :


Имя задайте SameGame . Если вы задали другое имя, отличное от SameGame , то имена ваших классов будут немного отличаться от тех, которые будут на этом уроке.

На следующем шаге вы увидите окно с большим набором различных опций, влияющих на итоговый исходный код, который будет автоматически сгенерирован по завершению работы мастера настройки. На следующем скриншоте показано, какие параметры необходимо выбрать, чтобы получить то, что нам нужно:


Затем в следующих окнах оставляйте всё как есть, пока не доберетесь до окна:


Опция "Утолщенная граница фрейма" позволяет пользователю изменить размер окна нашей программы. Но поскольку наша игра имеет фиксированный размер, то флажок с этой опции нужно будет снять. "Развернуть окно" нам также не понадобится, как и "Начальная строка состояния" .

Далее мы переходим на страницу "Дополнительные функции" :


Отключите опции "Печать и предварительный просмотр" , "Элементы управления ActiveX" . Если есть возможность, то укажите 0 в опции "Число файлов в текущем списке файлов" , поскольку мы не будем подгружать в нашу программу какие-либо дополнительные файлы.

Далее рассмотрим последнюю страницу мастера настройки MFC-приложений, на которой можно увидеть список созданных классов:


В результате будут автоматически сгенерированы 4 класса, которые станут основными классами в нашей игре.

К классу CSameGameView мы вернемся немного позже. А пока рассмотрим класс CSameGameApp , который является классом-обёрткой для всего нашего приложения и функции main() в том числе. Базовым для него всегда будет класс CWinApp .

Следующим рассмотрим класс CSameGameDoc , в котором будут храниться все данные нашего приложения. Для него базовым будет класс CDocument .

И, наконец, класс CMainFrame , базовым для которого будет CFrameWnd . Он также является классом-обёрткой для окна нашей программы. Класс основного фрейма содержит меню и представление клиентской области. Клиентская область — это место, где отрисовывается наша игра.

Теперь возвратимся к пропущенному ранее классу CSameGameView — базовый класс, который представляет собой раскрывающийся список с набором общедоступных представлений, каждое из которых имеет свои особенности в использовании и применении. Тип представления по умолчанию — CView , который является общим представлением, где все отображения и взаимодействия с пользователем должны выполняться вручную. Это как раз то, что нам нужно.

Сейчас быстренько пройдемся по списку и поговорим, для чего используется каждый тип представления:

CFormView — позволяет разработчику вставлять в него другие основные элементы управления, т.е. поля редактирования, поля со списком, кнопки и т.д.

CHtmlEditView — имеет HTML-редактор, встроенный в представление.

CHtmlView — вставляет элемент управления — браузер Internet Explorer.

CListView — имеет область, похожую на окно Проводника со списками и значками.

CRichEditView — похож на редактор WordPad; позволяет не только вводить текст, но и форматировать его, изменять цвет и тому подобное.

CTreeView — вставляет элемент управления древовидной структурой.

Завершение работы мастера приложений MFC приведет к созданию и запуску приложения MFC. Поскольку мы еще не написали никакого кода, то увидим окно, в котором ничего нет, но все равно это полностью функционирующее приложение. Ниже приведен скриншот того, как должно выглядеть ваше базовое приложение (чтобы скомпилировать программу, нужно перейти в меню Visual Studio "Отладка" > "Запуск без отладки" ):


Разрабатывайте высокопроизводительные двух- и трехмерные игры с DirectX, которые запускаются на различных устройствах семейства Windows, включая настольные системы, планшеты и телефоны. Visual Studio предлагает отличный набор инструментов для создания игр с DirectX, позволяющих писать код для шейдеров и разрабатывать ресурсы или отлаживать и профилировать графику, — и все это в рамках знакомой среды IDE Visual Studio.

screenshot of Forza driving game

Шаблоны проектов

Быстрое начало работы

Начните создавать игры DirectX в Visual Studio с помощью встроенных шаблонов проектов DirectX. При создании игр DirectX 12 или DirectX 11 для Windows или Windows Phone вы найдете шаблон, который вам подходит.

Отладка графики

Локальный или удаленный захват кадров

Устранение проблем отрисовки может быть непростой задачей. Visual Studio Graphics Diagnostics вместе с отдельным средством PIX on Windows предоставляет простой способ захвата и анализа кадров из игр DirectX 10, 11 или 12 локально или удаленно. Можно проверять каждое событие DirectX, объект графики, журнал пикселей и изучать графический конвейер для того, чтобы понять, что именно произошло во время кадра. Это средство также фиксирует стеки вызовов для каждого события графики, упрощая переход обратно в код приложения в Visual Studio.

Отладка кода шейдера

Тот же высококлассный отладчик теперь работает для отладки кода шейдеров

Отладка кода шейдера из захваченного кадра — отличный способ выявить источник проблем отрисовки. Просто установите точку останова в коде шейдера и нажмите клавишу F5 для его отладки. Можно проверить переменные и выражения в окне “Locals” и “Autos”. Если вы раньше использовали отладчик Visual Studio для других языков, эта задача не представит для вас никакой проблемы.

Увеличение частоты кадров

Поиск ресурсоемких вызовов прорисовки

Ищете способы увеличения частоты кадров для игры? Средство анализа кадров Visual Studio может пригодиться. Оно анализирует записанные кадры для поиска ресурсоемких вызовов прорисовки и выполняет с ними эксперименты для просмотра возможностей оптимизации производительности. Вся информация предоставляется в удобном отчете.

Анализ использования графического процессора

Сведения о том, как игра загружает ЦП и графический процессор

Использование функции Visual Studio GPU Usage или PIX в Windows для выяснения того, как выполняется игра на ЦП и графическом процессоре. Функция “Использование графического процессора” в реальном времени обеспечивает сбор данных, дополняющих анализ кадров, который выполняется над захваченными кадрами в автономном режиме. Отчет об использовании графического процессора ясно показывает, где находится узкое место – на ЦП или графическом процессоре.

Редактор кода шейдера

Цветовая разметка синтаксиса шейдера

Вне зависимости от того, размещается ли код шейдера в файлах HLSL или FX, редактор Visual Studio их распознает. Редактор шейдера предоставляет выделение синтаксиса и фигурные скобки автозаполнения, обеспечивая удобный способ для чтения и записи кода шейдера в Visual Studio. Можно также настроить редактор для использования избранных шрифтов и темы.

Компиляция кода шейдера

Файлы шейдера являются частью проекта

Как и положено, файлами шейдера можно управлять и создавать их как часть проектов Visual Studio. Просто задайте свойства файла шейдера, чтобы указать тип шейдера, его модель и параметры оптимизации. Visual Studio выполнит компиляцию шейдера.

Создание шейдеров

…в конструкторе шейдеров Visual Studio

Если вы не знаете HLSL и предпочитаете более наглядный способ создания шейдеров, конструктор шейдеров Visual Studio вам в этом поможет. Вместо того чтобы писать код шейдера в редакторе, добавьте и подключите узлы шейдера с помощью графического интерфейса. Вы можете применять различные текстуры, лампочки и даже добавлять и просматривать анимации в режиме реального времени. Создание шейдеров никогда не было таким простым.

Просмотр трехмерных моделей

…в средстве просмотра моделей Visual Studio

Не нужно выходить из интегрированной среды разработки, в которой вы уже работаете, просто для просмотра последних 3D-моделей, отправленных вам художником. Можно просмотреть 3D-модели OBJ и FBX в среде Visual Studio. Панорамирование, масштаб, изменение позиций камеры, просмотр объекты анимации на основе времени — в трехмерном мире невероятно много вещей для анализа. В средстве просмотра моделей можно также вносить простые изменения в модели.

Редактировать текстуры

…в редакторе изображений Visual Studio

Редактор изображений Visual Studio не только прекрасно работает с файлами изображений, но также распознает файлы текстуры DirectDraw Surface (DDS). Помимо базового просмотра и функциональности рисования можно также переключать каналы RGBA, создавать MIP-карты и применять фильтры. Этот редактор изображений способен выполнить многие задачи по изменению текстуры.

Конвейер содержимого ресурсов

Управление конвейерами содержимого

Работа с ресурсами в различных форматах может быть невероятно сложной. Visual Studio предоставляет средства управления конвейерами содержимого для изображений, моделей и шейдеров. Просто задайте свойства файла для использования конвейера содержимого и настройте параметры. Visual Studio выполнит преобразования формата автоматически во время построения.

Ядро Unity объединяется в одну непревзойденную платформу, позволяющую создавать двухмерные и трехмерные игры и интерактивное содержимое. Создайте одну игру и опубликуйте ее на 21 платформе, включая все мобильные платформы, WebGL, настольные системы (Mac, ПК и Linux), Интернет или приставки. Используйте мощные кроссплатформенные инструменты, чтобы обеспечить прекрасное выполнение своего интерактивного содержимого на любом устройстве.

Unity 3D screeenshot of AircraftJet

Отладка в Visual Studio

Высококлассная отладка для игр на основе Unity в Visual Studio

Visual Studio обеспечивает первоклассную отладку игрового ядра Unity. Быстро выявляйте проблемы, отлаживая игры на основе Unity в Visual Studio: задавайте точки останова и оценивайте переменные и сложные выражения. Вы можете выполнять отладку игры Unity, запущенной в Unity Editor или Unity Player, и даже отлаживать внешнюю управляемую библиотеку DLL в Unity Project.

Unity debugging screenshot

Unity Quick MonoBehaviours screenshot

Повышение производительности

Полнофункциональная среда IDE для Unity

Программируйте эффективнее, используя все возможности повышения производительности, предлагаемые Visual Studio, в том числе IntelliSense, рефакторинг и просмотр кода. Настройте среду программирования в полном соответствии со своими потребностями — выберите любимую тему, цвет, шрифты и остальные параметры. Кроме того, используйте Unity Project Explorer для перехода к сценариям Unity и их создания. Вам больше не надо переключаться между несколькими интегрированными средами разработки. Вы можете быстро создавать методы сценариев Unity в Visual Studio, используя мастера реализации поведений MonoBehaviour и быстрых поведений MonoBehaviour.

Unreal Engine4— это полный набор инструментов для разработки игр, созданный опытными специалистами в этой области для своих коллег. В Unreal Engine 4 есть все необходимое для создания двухмерных мобильных игр, консольных блокбастеров и игр в виртуальной реальности, чтобы вы могли приступить к их разработке, распространять и совершенствовать их, а также составить достойную конкуренцию другим компаниям в этой отрасли. Изменяйте, создавайте и отлаживайте игры на основе Unreal на языке C++ в Visual Studio, чтобы повысить продуктивность.

Unreal Engine 4 code screenshot

Программирование в Visual Studio

Unreal Engine легко интегрируется с Visual Studio, позволяя быстро вносить изменения в код проекта и увидеть результаты сразу после компиляции. Пишите код с многофункциональной поддержкой IntelliSense с динамическим списком ошибок и комментариев, чтобы ускорить рабочий процесс. Экономьте время, используя интеллектуальные предложения IntelliCode о типах пользовательского оборудования. При желании можно обучить модель IntelliCode локально с помощью базы кода команды и получать конкретные предложения, основанные на типах и шаблонах кодирования команды.

Отладка в Visual Studio

Visual Studio обеспечивает высококлассную отладку в рамках Unreal Engine. Вы можете легко отлаживать проекты Unreal с помощью расширенной поддержки с визуализаторами и исследовать распространенные типы Unreal, такие как FNames и динамические массивы. Вы можете также проверить производительность программы: просто обратите внимание на советы по производительности, которые отображаются в редакторе.

Cocos — это предназначенный для создания игр профессиональный пакет средств разработки с открытым исходным кодом, который упрощает процесс разработки. С помощью Cocos вы можете быстро создавать проекты, разрабатывать игры и анимационные клипы, а также пакетировать и публиковать игры для распространения. Создавайте игры Cocos, используя мощную среду IDE Visual Studio IDE, и выполняйте отладку с помощью первоклассного отладчика Visual Studio, чтобы значительно повысить эффективность своей работы.

Cocos Creator screenshot

Программирование в Visual Studio

Подсистема Cocos полностью интегрируется с Visual Studio и позволяет программировать эффективнее, используя все возможности повышения производительности, предлагаемые Visual Studio, в том числе IntelliSense, рефакторинг и просмотр кода. Компилируйте и запускайте проекты в Visual Studio, чтобы сразу просмотреть влияние изменений в коде.

Cocos IntelliSense screenshot

Cocos debugging screenshot

Отладка в Visual Studio

Используйте мощный отладчик Visual Studio, чтобы быстрее находить ошибки. Отладчик Visual Studio интегрируется с рабочим процессом разработки игр на Cocos: задайте точки останова и начните вычислять переменные и выражения. Вы можете также проверить производительность программы: просто ознакомьтесь с советами по производительности, которые отображаются в редакторе.

Создание серверной инфраструктуры для игр

Azure предоставляет гибкие возможности выбора для серверной части игр в облаке. Для вычислений можно использовать такие предложения IaaS, как виртуальная машина, масштабируемые наборы виртуальных машин в Windows и Linux, или же предложения PaaS, например Service Fabric и Службу приложений. В качестве хранилища данных можно использовать управляемые службы баз данных, такие как База данных SQL Azure и Azure DocumentDB, а также MongoDB и другие варианты из Azure Marketplace.

Azure Services Collaborators leverage PaaS offerings

Multiplayer gamer scenario enabled with Azure Active Directory

Сохранение заинтересованности игроков

Внедрите многопользовательские режимы и списки лидеров, используя Azure Active Directory. Например, управляйте поставщиками удостоверений социальных сетей, таких как Facebook, Google и Майкрософт. Управляйте удержанием игроков, повышением вовлеченности пользователей и монетизацией на разных платформах с помощью Центров уведомлений Azure и Служб мультимедиа Azure.

Исследование больших данных для подробного анализа игр

Создайте многофункциональную платформу сквозного анализа игр в Azure с помощью средств из Cortana Intelligence Suite и решений для больших данных. Анализируйте поведение игроков на мобильных устройствах с помощью таких служб, как машинное обучение Azure и службы мобильного взаимодействия Azure, чтобы максимально увеличить частоту использования приложения, удержание пользователей и монетизацию.


Шаг первый. Сперва решите, какой игровой движок и IDE (интегрированная среда разработки) вы будете использовать для создания своей первой игры. Мои рекомендации относительно выбора игрового движка и IDE находятся ниже, в разделе Ресурсы.

Шаг второй. Пишите код.

Вы никогда не занимались программированием? Не беспокойтесь — вы все выучите!

Нижеприведенные основопола г ающие принципы C++ помогут вам разобраться с кодом и этого вполне хватит на первое время (все примеры кода приведены на C ++, одним из основных языков программирования, используемых в Unity 3D):

1) Типы данных и переменные. В основе всего кода лежат данные. Эти данные хранятся посредством переменных. Вы можете написать переменную подобным образом:

Давайте разберемся с этим поподробнее:

int- это тип данных. i — это имя переменной. 0 — значение переменной.

С этим разобрались. Теперь попробуем разобраться вот с этим:

string — это тип данных. s — это имя переменной. И как вы наверное уже догадались, что “pusheen is best cat” — это значение переменной.

Некоторые общие типы данных: int и long — являются данными целых чисел. float и double — используются для обозначения десятичных чисел. А строка (string) может нести в себе любое предложение (даже пустые «»).

Хотите узнать больше? Посмотрите это и вот это.

2) Оператор if. Этот оператор проверяет, является ли какое-либо условие истинным. Если да, то он запустит код, находящийся внутри него:

Если условие оказалось неверным, альтернативное действие определяется связкой операторов else if:

Либо можно прописать тело кода для оператора else отдельно:

3) Циклы For и while. Цикл while выполняет код, находящийся в теле цикла, до тех пор, пока данное условие истинно. Когда условие ложно, цикл while завершается:

Подумайте: как долго этот цикл будет продолжаться?

Цикл For работает также как и цикл while:

Это эквивалентно этому:

4) Основные структуры данных. Итак, у нас есть определенные виды данных которыми мы можем манипулировать. Мы также можем хранить эти данные в некоторой системе — структуре данных. Вот виды структур данных, которые вы должны знать: массивы, списки, очереди, стеки и наборы.

Вот пример массива:

Чтобы получше разобраться во всем этом перейдите по этой ссылке.

5) Функции и исключения. Функция — это небольшая строка кода, описывающая большой участок кода. Например, если вы вызовете:

EatBread() будет выглядеть вот так:

Вызов EatBread() на самом деле будет вызывать два оператора в функции EatBread(). Если вы допустите ошибку в коде — это может привести к возникновению исключения. Красные «злые» ошибки будут как бы говорить вам: «Эй, назад! То что вы сделали — просто не работает. Вернись и проверь».

Если вы хотите лучше разобраться с функциями, то перейдите сюда; если с исключениями, перейдите сюда.

Что ж, есть еще несколько вещей, которые вы должны будете знать:

7) API (интерфейс прикладного программирования). После того, как вы изучите основы программирования, вам придется изучить конкретный API вашего игрового движка. API — это, по сути, множество мощных инструментов, которые можно объединить в простые классы и функции. API упрощают жизнь.

8) При выборе игрового движка, поинтересуйтесь и посмотрите уже выпущенные игры на том или ином движке. На движках Unreal и Unity написана целая масса бесплатных игр. Вы можете создать свою игру, основываясь на другой игре. (Я сделала свою первую игру на основе платформера Corgi Engine.)

Слова поддержки: Я понимаю, сначала вам будет страшно, когда вы начнете программировать. Понятное дело, поначалу вы будете чувствовать неуверенность и собственную некомпетентность. Вы будете постоянно допускать одни и те же ошибки, снова и снова. Это не значит, что вы плохо программируете — у вас просто недостаточно опыта. Примите этот вызов!

Но все это требует времени, как и занятие любым другим делом. Дальше вам будет намного легче и вам действительно будет доставлять это удовольствие (по крайней мере мне доставляло).

Несколько важных моментов:

    . Делайте свой код более естественным. . Называйте свои классы, методы и переменные так, чтобы название передавало его цель и задачи. Например, функцию атаки в ближнем бою следует назвать meleeAttack (), а не mA () или protecbutalsoattac (). Вы (и все остальные, кто будет читать или работать с вашим кодом) должны понимать, что, зачем и почему. . Если определенный участок кода повторяется — поместите его в отдельную функцию. Вызывайте эту функцию по мере необходимости, вместо полного дублирования повторяемого кода. . Он позволяет предоставить доступ извне к данным, которые должны храниться в одном экземпляре.
  • Избегайте статики. При создании игр я избегала создания статических переменных (одиночные игры — исключение). Их жизнь — это время жизни игры, а они медленные и в редакторе они могут вести себя непредсказуемо. . Он позволяет не тратить время на проверку компьютером кода, который должен исполниться, в зависимости от другого участка кода.

Несколько важных вещей в Unity:

    . IEnumerators (перечислители) и Coroutines (сопрограммы) позволяют создавать определенные алгоритмы действий. Я, например, использую их для: создания всплесков визуальных эффектов, передвижения и для режима ожидания в загрузке игровой сцены. t (скриптуемый объект). Класс, который экономичнее и эффективнее содержит данные, чем MonoBehaviors.

Ресурсы 🎁

Выбор игрового движка:

1) Вы можете написать свой собственный движок! Требуются знания C/ C++ на низком, системном уровне.

3) Unreal Engine — кросс-платформенный движок, поддержка 2D / 3D (2D плохо поддерживается). Требуются знания C ++ уровня middle.

4) pixi.js — поддержка 2D. Требуются знания Javascript уровня middle.

5) GameMaker Studio — кросс-платформенная программа, поддержка 2D / 3D. Требуются знания GML начального уровня.

6) Corona — фреймворк, кросс-платформенный. Требуются знания Lua начального уровня.

Среда разработки:

  • Visual Studio Code для MacOS (👍) — очень плавно работает, не тормозит и обладает потрясающими функциями VSCode (встроенная справочная информация, быстрая навигация и т.д.).
  • Visual Studio для Windows (👍).
  • MonoDevelop — поставляется с Unity, часто тормозит.

Бесплатные ассеты для Unity:

Для Unity существуют тонны бесплатных ассетов в Unity Asset Store, GitHub, bitbucket и на других сайтах. Я постоянно их использую в каждом своем проекте. Сделайте свою жизнь проще — пользуйтесь! Но помните, что они неидеальны. Если вы заметили в них какие-то ошибки — исправьте их или сообщите разработчику!

    (👍). (👍). . . . — он работает с движком Unity, у него есть удивительные визуальные эффекты для Unity с открытым исходным кодом, которые вы также можете использовать!

И последнее, но не менее важное! Средство №1 для разрешения всевозможных проблем в программировании: Google!

В этом проекте мы создадим собственный игровой движок на C++. Движок будет очень простым, но готовым к расширению возможностей. Конечная игра с использованием этого кода тоже крайне проста: наш персонаж сможет перемещаться влево и право, а из графики – только бэкграунд и фигурка персонажа.

background with pers

Создадим новый проект в Visual Studio. Обратите внимание, что проект требует библиотеку SFML, поэтому если вы не настраивали окружение для нее, прочтите сначала небольшое руководство по настройке.

  1. Откройте Visual Studio и выберите File | New Project. В левом меню отметьте язык C++ и шаблон HelloSFML. Назовите проект Simple Game Engine.
  2. Выберите правой кнопкой мыши файл HelloSFML.cpp в окне Solution Explorer (под Source Files), далее – Rename и назовите файл Main. Это подходящее имя, так как файл будет содержать основную функцию.
  3. Откройте Main.cpp, удалите все содержимое файла.
  4. Переместите файл библиотеки SFML.dll из каталога Диск:\SFML\bin в Диск:\Visual Studio Stuff\Projects\Simple Game Engine\Simple Game Engine. Если названия в путях отличаются, вероятно, вы сделали отличную от руководства настройку.

Теперь можно приступить к коду. Исходный код и дополнительные ресурсы будут доступны на этой странице.

Самое важное – запуск движка, который будет происходить в файле Main.cpp, но им мы займемся немного позже.

Класс персонажа

Bob – простой класс для представления фигурки персонажа, управляемой игроком. Код класса будет легко расширяться, а что самое главное – его несложно переписать под любой другой игровой объект, который вы захотите добавить. Для этого потребуется заменить текстуру и описать поведение нового объекта в методе update().

Займемся заголовками класса. Выберите правой кнопкой Header Files в Solution Explorer и нажмите Add | New Item. В окне Add New Item выберите Header File (.h), затем в поле Name введите Bob. Нажмите Add и добавьте код заголовка класса:

Здесь мы объявили объекты типа Texture и Sprite. Дальше мы свяжем эти объекты и любое действие на экране с объектом Sprite будет сопровождаться изображением Боба:

Кликните правой кнопкой, чтобы сохранить

Bob.cpp

Теперь приступим к описанию методов.

Выберите правой кнопкой мыши Source Files в Solution Explorer и откройте Add | New Item. В окне Add New Item кликните по C++ File (.cpp), а в поле Name укажите Bob.cpp. Теперь добавьте в файл код:

В конструкторе мы установили значение переменной m_Speed на 400. Это значит, что Боб пересечет экран шириной в 1920 пикселей за 5 секунд. Также мы загрузили файл Bob.jpg в Texture и связали его с объектом Sprite. В переменных m_Position.x и m_Position.y установлено начальное положение Боба.

Функция update обрабатывает два If. Первое If проверяет, нажата ли правая кнопка (m_RightPressed), а второе следит за левой (m_LeftPressed). В каждом If скорость (m_Speed) умножается на elapsedTime. Переменная elapsedTime рассчитывается в функции Start движка (класс Engine). Им мы и займемся далее.

Пишем класс Engine

Класс Engine будет контролировать все остальное.

Engine.h

Добавим заголовок. Откройте окно Add New Item (так же, как для класса Bob), выберите Header File (.h) и в поле Name введите Engine.h. Добавьте в файл следующий код:

Класс библиотеки SFML, RenderWIndow, используется для рендера всего, что есть на экране. Переменные Sprite и Texture нужны для создания фона. Также в заголовке мы создали экземпляр класса Bob.

Engine.cpp

В Engine.cpp мы опишем конструктор и функцию start. Создайте файл класса так же, как для Bob.cpp, и добавьте в него код:

Функция конструктора получает разрешение экрана и разворачивает игру на весь экран с помощью m_Window.create. В конструкторе же загружается Texture и связывается с объектом Sprite.

background

Пример фонового изображения

Скачайте пример изображения или используйте любое другое на свое усмотрение. Переименуйте файл в background.jpg и поместите в каталог Simple Game Engine/Simple Game Engine.

Игровой цикл

Обрабатываем пользовательский ввод

Создайте файл Input.cpp и добавьте в него код:

Функция input обрабатывает нажатия клавиш через константу Keyboard::isKeyPressed, предоставляемую SFML. При нажатии Escape m_Window будет закрыто. Для клавиш A и D вызывается соответствующая функция движения.

Обновляем игровые объекты

Теперь опишем простую функцию update. Каждый игровой объект будет иметь собственную функцию update.

Создайте файл Update.cpp и добавьте в него код:

Поскольку у нас пока только один объект "Боб", мы вызываем только функцию m_Bob.update.

Отрисовка сцены

Это последняя функция класса Engine. Создайте файл Draw.cpp и добавьте в него код:

Экран очищается методом clear, затем отрисовывается фон. Первым делом должен быть отрисован фон, чтобы потом поверх него можно было отрисовать Боба.

Запускаем движок в main()

Теперь вернемся к нашему Main.cpp. Время добавить в него немного кода:

Наш собственный игровой движок получился очень простым: он умеет только двигать главный объект и закрывать программу. Он не умеет обрабатывать столкновения, работать с интерфейсом и еще много чего. Однако он отлично описывает то, как строится ядро игрового проекта с нуля. К тому же, как мы уже выяснили, класс Bob расширяется и адаптируется под другие объекты, так что дайте волю фантазии и попробуйте поэкспериментировать с окружением.

Читайте также: