Создание 2D игр в Visual Studio (C#)?
Есть ли какие официальные средства разработки игр в Visual Studio от Microsoft? Знаю о XNA, но Microsoft его забросила. И можно ли вообще написать достойную игру чисто в Visual Studio на C#?
Прошу простить, если какие то из вопросов некорректны.
- Вопрос задан более трёх лет назад
- 34117 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 7
Используйте WPF/WinForms. Я когда начинал, делал в WinForms snake/game of life.
Если хотите делать на C# что-то ощутимо более серьезное, то тут только Unity.
Ответ написан более трёх лет назад
Нравится 3 3 комментария
Помимо Unity есть у другие решения, не стоит так категорично высказываться.
Скажите, а в WPF на .NET 4.0 есть возможность встроить Unity3D ?
RMar: Чего? В WPF встроить Unity? О_о
GavriKos @GavriKos Куратор тега Разработка игр
У вас немного некорректно поставлен вопрос. VisaulStudio — это просто меганавороченный блокнот. Ей все равно, пишете вы игру, сервер, веб-приложение или еще что то, лишь бы на знакомом ей языке. По сути ваш вопрос должен был звучать как «можно ли создать игру только средствами c#». Ответ — можно, но долго и непроизводительно. Если жесткое ограничение по языку — используйте Unity. Если жесткое ограничение по «не устанавливать ничего кроме IDE (VisualStudio)», то смотрите в сторону c++ оберток над openGL.
СОЗДАНИЕ ИГРЫ «ПЯТНАШКИ» НА ЯЗЫКЕ C# Текст научной статьи по специальности «Компьютерные и информационные науки»
Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Поварницын Е.Н.
Статья посвящается созданию игры « Пятнашки ». В данной статье описан сам процесс игры , а так же её суть. Так же наглядное использование языков C# и XAML.
i Надоели баннеры? Вы всегда можете отключить рекламу.
Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Поварницын Е.Н.
РАЗРАБОТКА ИГРОВОГО ПРИЛОЖЕНИЯ КРЕСТИКИ — НОЛИКИ НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ С#
РАЗРАБОТКА МОБИЛЬНОГО-ПРИЛОЖЕНИЯ НА ПЛАТФОРМЕ ANDROID
СОЗДАНИЕ ИГРОВОГО ПРИЛОЖЕНИЯ В СРЕДЕ РАЗРАБОТКИ ИГР UNITY
СОЗДАНИЕ ИГРОВОГО ПРИЛОЖЕНИЯ С ИСПОЛЬЗОВАНИЕМ СРЕДЫ РАЗРАБОТКИ ИГР UNITY
Применение программных технологий WPF и Silverlight при разработке информационных систем
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.
CREATING THE GAME «FIFTEEN» IN C #
The article is dedicated to the creation of the game » Fifteen .» This article describes the game process itself, as well as its essence. Also, the visual use of the C # and XAML languages.
Текст научной работы на тему «СОЗДАНИЕ ИГРЫ «ПЯТНАШКИ» НА ЯЗЫКЕ C#»
Поварницын Е.Н. студент 2 курса
факультет «Информационные системы и технологии» Северный Арктический Федеральный Университет
Россия, г. Архангельск СОЗДАНИЕ ИГРЫ «ПЯТНАШКИ» НА ЯЗЫКЕ C#
Аннотация: Статья посвящается созданию игры «Пятнашки». В данной статье описан сам процесс игры, а так же её суть. Так же наглядное использование языков C# и XAML.
Ключевые слова: Пятнашки, XMAL, C#, игра, компьютерная игра, Microsoft Visual Studio.
2year, faculty «Information Systems and Technologies»
Northern Arctic Federal University Russia, Arkhangelsk CREATING THE GAME «FIFTEEN» IN C #
Annotation: The article is dedicated to the creation of the game «Fifteen.» This article describes the game process itself, as well as its essence. Also, the visual use of the C # and XAML languages.
Keywords: Fifteen, XAMLL, C #, game, computer game, Microsoft Visual Studio.
Сперва, сделаем один уровень игры размером пятнашек 4×4, но в процессе работы осложним игру. Сложность заключается в размерах самой игры: Лёгкий уровень размером 3×3, средний 4×4 и сложный 5×5. После всей работы сама игра выглядела не очень красиво с обычными цветовыми палитрами и поэтому закрасим кнопки с цифрами в текстуру, а сам фон сменим с градиента на более живой. Таким образом, получится, вроде как, красивая и интересная игра «Пятнашки».
Для начала нужно создать саму модель игры «Пятнашки». Для этого создадим «класс», в котором будет реализован основной процесс игры. Для облегчения процесса создания также потребовались «методы» в самом классе.
Первый метод «Model» , данный метод позволял создать матрицу для самой игры, так же он намного упрощал создания таких игр как 24,8, в соответствии с рисунком 1. Переменная map служила самой матрицей, а size размер, к примеру 4.
int space_x, space_y;
static Random rand = new Random();
public Model (int size)
if (size < 2) size = 2; if (size >5) size = 5; this.size = size; map = new int[size, size]
Рисунок 1 — Model Следующий метод «Start». Данный метод заполняет массив цифрами по координатам, в соответствии с рисунком 2. Так же здесь используется метод «coords_to_position», но о нём позже.
public void start()
map[x, y] = coords_to_position(x, y) + 1;
space_x = size — 1;
space_y = size — 1;
Рисунок 2 — Start
Далее расположены методы «coords_to_position» и «position_to_coords».
Первый метод с помощью координат x и y ищет номер матрицы, к примеру, если будет координата x=3, а y=0, то матрица примет значения 3. Так же он не даёт матрице переполниться, что впоследствии могло взывать ошибку. Второй метод же возвращает координаты x и y обратно, то есть даёт возможность с помощью элемента массива найти, какие координаты он имеет, в соответствии с рисунком 3. Так же он проверяется, что бы массив не переполнился.
private int coords_to_position(int x,int y)
if (x > size -1 ) x = size-1;
if (y > size — 1) y = size — 1; return y * size + x;
private void position_to_coords (int position, out int x, out int y)
if (position < 0) position = 0; if (position >size * size — 1) y=size*size-1 ; x = position % size; y = position / size;
Рисунок 3 — coords_to_position и position_to_coords Следующий метод «Shift» позволяет нам передвигать нулевой элемент в массиве, в соответствии с рисунком 4. Другими словами обмениваться числами. Это позволит нам в будущем передвигать наши пятнашки.
public void shift(int position)
position_to_coords(position, out x, out y); if ((Math.Abs(space_x — x) + Math.Abs(space_y — y)) == 1)
Рисунок 4 — Shift
Метод «Get_number» нам понадобится для того, чтобы в будущем получить координату, на котором будет расположено число, в соответствии с рисунком 5.
public int get_number(int position)
position_to_coords(position, out x, out y); if (x < 0 || x >= size) return 0;
if (y < 0 || y >= size) return 0; return map[x, y];
Рисунок 5 — Get_number Для того чтобы в начале игры числа располагались случайно составим
метод «SЫft_гandom». В нём нулевое число будет передвигаться на 4 стороны наугад, в соответствии с рисунком 6.
public void shift_random()
int a = rand.Next(0, 4);
case 0: x—; break; case 1: x++; break; case 2: y—; break; case 3: y++; break;
shift(coords_to_position(x, y)); _>_
Рисунок 6 — Shift_random И самый последний метод в данном классе является «Chek_game». Данный метод проверяет не окончена ли ещё игра. Он сверяет, не совпадают ли начальные координаты с текущими, и если они совпадают, то он выдаёт значение «true», в соответствии с рисунком 7. Игра будет продолжаться до тех пор, пока этот метод не будет действительным.
public bool chek_game()
if (!(space_x == size — 1 && space_y == size — 1))
return false; for (int x = 0; x < size; x++)
if (map[x, y] != coords_to_position(x, y) + 1) return false; return true;
Рисунок 7 — Chek_game На этом класс игры заканчивается и начинается работа с файлами .xaml и xaml.cs.
WINDOWS PRESENTATION FOUNDATION На данном этапе будет показано, как делается средний уровень 4×4 сложности в игре «Пятнашки». Лёгкий уровень 3×3 и сложный 5×5 делается аналогично, с добавлением или удалением кнопок, в зависимости от параметра матрицы.
Сначала, следует разделить окно на равную клетчатую таблицу, где будут расположены 4 строки и 4 столбца. В них следует сделать кнопки («Button») и установить обработчик событий «По клику». Таким образом, у нас в .xaml.cs добавятся методы при взаимодействии с данной кнопкой. Для
взаимодействия с кнопками добавим «Tag» к каждой кнопки начиная с 0 и заканчивая 15.
Далее добавим метод Button, который позволит с помощью кейсов взаимодействовать с кнопками, в соответствии с рисунком 8.
private Button button (int position)
case 0: return button0; case 1: return button1; case 2: return button2; case 3: return button3; case 4: return button4; case 5: return button5; case 6: return button6; case 7: return button7; case 8: return button8; case 9: return button9; case 10: return button10; case 11: return button11; case 12: return button12; case 13: return button13; case 14: return button14; case 15: return button15; default: return null;
Рисунок 8 — Button Далее создадим метод «refresh», который будет отвечать за расстановку чисел на кнопки, он будет брать номера из массива и преобразовывать их в текст (контент), в соответствии с рисунком 9. Также для красивой картинки сделаем кнопку, на которой будет расположено число 0 невидимой.
private void refresh()
for (int position = 0; position < 16; position++)
button(position).Content = game.get_number(position); button(position).Visibility = (game.get_number(position)==0)?
Рисунок 9 — Refresh Остаётся только начать игру. И для этого нужно создать метод «Start_game». В котором будут располагаться сначала элементы в массиве, потом перемешиваться с определённой точностью n шагов и
преобразовываться в текст (контент), в соответствии с рисунком 10.
private void start_game ()< game.start();
Рисунок 10 — Start_game Далее возвратимся к нашим кнопкам. В них следует отметить позицию, конвертировав наш тэг, для определения кнопки, далее следует добавить наше передвижение по матрицы и конвертировать ее в текст. Следует это сделать ко всем кнопкам. Теперь цифры передвигаются с кнопки на кнопку. Теперь чтобы понять что игра закончена следует её проверить через метод «chek_game», и если оно true, то вывести на экран победное сообщение с предложением либо повторить игру, либо закрыть приложение. Это следует сделать в соответствии с рисунком 11 и применить ко всем кнопкам соответственно.
private void Button_Click(object sender, RoutedEventArgs e)
int position = Convert.Tolntl6(((Button)sender).Tag);
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
var res = MessageBox.Show(«Победа. \nЕще разок?», «Ура. «, MessageBoxButton.YesNo);
if (res == MessageBoxResult.Yes)
start_game(); else Close();
Рисунок 11 — Button_Ckick_N Всё, наша игра готова, теперь остаётся сделать ее визуально красивой. Для этого в файле .xaml отредактируем фон игры и собственно сами кнопки. Наложим на фон красящую картинку, в соответствии с рисунком 12.
Рисунок 12 — Background Далее будет работать с кнопками приложения. Добавим на кнопки фон,
сделаем так, чтобы кнопки имели формы фона, у меня они квадратные. Так же я сделал рамку под цвет фона, для того что бы лучше выглядело. Следует всё это выполнить в соответствии с рисунком 13, и применить ко всем кнопкам, дабы они не различались друг от друга
Рисунок 13 — Button.Img Для будущего взаимодействия с главным экранам я сделал кнопки «В главное меню». Так же я добавил «Рестарт» и «Выход». Для того чтобы выйти в главное меню, нужно прежде всего создать ещё одно окно и сделать переход на него при нажатии определённой кнопки, в соответствии с рисунком 14.
private void Button_Click_17(object sender, RoutedEventArgs e)
Window1 taskWindow = new Window1();
Рисунок 14 — Переход в главное меню Так же стоит добавить чтобы игра стартовала при загрузки окна, для этого нужно сделать в обработчики событий «Loaded» и в файле .xaml.cs запустить игру, в соответствии с рисунком 15.
private void Window_Loaded(object sender, RoutedEventArgs e)
Рисунок 15 — Загрузка игры В итоге мы получаем игру «Пятнашки», показанную на рисунке 16.
Рисунок 16 — Пятнашки
Теперь можно создать лёгкий и сложный уровень, сделав некоторые махинации с кнопками. Для увеличения или уменьшения массива стоит всего лишь поменять одну переменную game = new Model(поле NxN), в соответствии с рисунком 17.
public partial class MainWindow : Window
game = new Model(4);
Рисунок 17 — Размер поля
Так же следует изменить кол-во кейсов в методе «Button» на необходимое количество, в соответствии с рисунком 18.1 и 18.2.
private Button button(int position)
case 0: return button0; case 1: return buttonl; case 2: return button2; case 3: return button3; case 4: return button4; case 5: return buttons; case 6: return button6; case 7: return button7; case 8: return buttons; default: return null;
private Button button(int position)
case 0: return button0;
case 1: return button1;
case 2: return button2;
case 3: return button3;
case 4: return button4;
case 5: return button5;
case 6: return button6;
case 7: return button7;
case 8: return button8;
case 9: return button9;
case 10 return button10;
case 11 return button11;
case 12 return button12;
case 13 return button13;
case 14 return button14;
case 15 return button15;
case 16 return button16;
case 17 return button17;
case 18 return button18;
case 19 return button19;
case 20 return button20;
case 21 return button21;
case 22 return button22;
case 23 return button23;
case 24 return button24;
default: return null;
Рисунок 18.2 — Изменение Button для 5×5
После чего следует поменять расстановку чисел на кнопках в методе «Refresh», если поле 4×4, то будет 16, если 3×3, то 9, если 5×5, то 25 и т.д., в соответствии с рисунком 19.1 и рисунком 19.2.
private void refresh()
for (int position = 0; position < 9; position++)
button(position).Content = game.get_number(position); button(position).Visibility = (game.get_number(position) == 0)
_Рисунок 19.1 — Изменение Refresh для 3x3_
private void refresh()
for (int position = 0; position < 25; position++)
button(position).Content = game.get_number(position); button(position).Visibility = (game.get_number(position) == 0) ? Visibility.Collapsed: Visibility;
Рисунок 19.2 — Изменение Refresh для 5×5 После этих операций и некоторых работы в XAML мы получаем игры, в соответствии с рисунками 20.1 и 20.2
ДЗ Пятнашки — □ X
Рисунок 20.1 — Лёгкий уровень
Рисунок 20.2 — Сложный уровень Далее в уже созданном меню, разместим ссылки на открытие самих уровней и закрытие самой игры, в соответствии с рисунком 21.
private void Button_Click(object sender, RoutedEventArgs e)
Easy taskWindow = new Easy();
private void Button_Click_1(object sender, RoutedEventArgs e)
MainWindow taskWindow = new MainWindow();
private void Button_Click_2(object sender, RoutedEventArgs e)
Hard taskWindow = new Hard();
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
private void Button_Click_3(object sender, RoutedEventArgs e)
Рисунок 21 — Ссылка на уровни и выход
В итоге после редактирования фона и кнопок, мы получим меню через которое можно проходить на уровни, в соответствии с рисунком 22.
Рисунок 22 — Меню игры И в самом конце можно добавить иконку для игры, в соответствии с рисунком 23_
^^^Пятнашки» Height=»500″ Width=»750″ Icon=»Img/Games.ico»>
Рисунок 23 — Иконка для игры Всё, мы получили игру с красивым оформлением. Это можно увидеть на рисунке 24.
9 Î 4 6 11 5 12
Рисунок 24 — Готовая игра Использованные источники:
1. Подбельский, В.В. Язык декларативного программирования XAML / В.В. Подбельский. — Москва : ДМК Пресс;
2. Александров, Э.Э. Программирование на языке C в Microsoft Visual Studio 2010 : учебное пособие / Э.Э. Александров, В.В. Афонин. — 2-е изд. — Москва
Разработка игр в Visual Studio
Разрабатывайте высокопроизводительные двух- и трехмерные игры с DirectX, которые запускаются на различных устройствах семейства Windows, включая настольные компьютеры, планшеты и телефоны. Visual Studio предлагает отличный набор инструментов для создания игр с DirectX, позволяющих писать код для шейдеров и разрабатывать ресурсы или отлаживать и профилировать графику, — и все это в рамках знакомой среды IDE Visual Studio.

Шаблоны проектов
Быстрое начало работы
Начните создавать игры 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), Интернет или приставки. Используйте мощные кроссплатформенные инструменты, чтобы обеспечить прекрасное выполнение своего интерактивного содержимого на любом устройстве.

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


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

Программирование в 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, чтобы значительно повысить эффективность своей работы.

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


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


Сохранение заинтересованности игроков
Внедрите многопользовательские режимы и списки лидеров, используя Azure Active Directory. Например, управляйте поставщиками удостоверений социальных сетей, таких как Facebook, Google и Майкрософт. Управляйте удержанием игроков, повышением вовлеченности пользователей и монетизацией на разных платформах с помощью Центров уведомлений Azure и Служб мультимедиа Azure.
Исследование больших данных для подробного анализа игр
Создайте многофункциональную платформу сквозного анализа игр в Azure с помощью средств из Cortana Intelligence Suite и решений для больших данных. Анализируйте поведение игроков на мобильных устройствах с помощью таких служб, как машинное обучение Azure и службы мобильного взаимодействия Azure, чтобы максимально увеличить частоту использования приложения, удержание пользователей и монетизацию.
Урок №1: Введение в создание игры «SameGame» на C++/MFC
В этой серии обучающих уроков мы, используя библиотеку MFC (сокр. от «Microsoft Foundation Classes»), с нуля создадим свой вариант всем известной игры-пазла SameGame. Мы добавим несколько дополнительных фич к этой игре, помимо простого удаления блоков, а также реализуем подсистему отмены/повтора действия и диалоговые окна конфигурации. Рассмотрим примеры не только «голого» исходного кода, но и поэтапную разработку вместе со скриншотами.
Оглавление:
- Правила игры SameGame
- Перед началом работы
- Чему вы научитесь?
- Почему именно MFC?
- Создание проекта
Правила игры SameGame
Правила SameGame предельно простые. Ваша задача — удалить все цветные блоки с игрового поля. Для того чтобы удалить блок, игрок должен кликнуть по любому блоку, который стоит рядом (вертикально или горизонтально) с другим блоком того же цвета. Таким образом уничтожится целая цепочка блоков одного цвета. Блоки, которые при этом находились сверху, упадут вниз, заполняя освободившееся пространство. При удалении всего столбца, стоящие справа столбцы сдвигаются влево, занимая пустое место. Игра заканчивается тогда, когда у игрока не остается больше возможных ходов. Цель игры состоит в том, чтобы как можно быстрее очистить доску от цветных блоков.
Стоит заметить, что некоторые реализации игры SameGame также могут дополняться использованием алгоритмов для подсчета очков игрока. Реализацию подобного функционала можно рассмотреть в качестве дополнительного урока.
Перед началом работы
Вам потребуются базовые знания в таких разделах языка C++ как функции, рекурсия, классы и наследование классов. В качестве среды разработки была выбрана бесплатная версия Microsoft Visual Studio 2017 Community Edition в операционной системе Windows 7 (детально об установке IDE). Если версии вашей операционной системы или среды разработки не совпадают с вышеуказанными версиями, то некоторые детали или внешний вид отдельных компонентов могут отличаться от тех, которые вы будете видеть на скриншотах данного туториала. Также не советую использовать Express-версии пакета Visual Studiо, т.к. в них не входит компонент MFC.
Чему вы научитесь?
В первую очередь, вы научитесь основным принципам создания своей собственной игры, узнаете о библиотеке MFC и о некоторых базовых методах её использования, а также познакомитесь с построением своего приложения с использованием архитектуры «Document/View».
Почему именно MFC?
MFC — это легкая в использовании библиотека, особенно для такой простой игры как наша. С её помощью не составит труда создать приложение с, так называемым «Windows look-and-feel», внешним видом. Стиль «Windows look-and-feel» имитирует особенности конкретной системы, на которой он используется: «Look» определяет внешний вид компонентов, а «Feel» — их поведение.
Создание проекта
Создавать нашу игру мы будем в Microsoft Visual Studio 2017. Все инструкции и описания, приведенные ниже, могут быть с легкостью адаптированы и для других версий Visual Studio. Итак, для начала запустите Visual Studio и создайте новый проект. Тип проекта «Visual C++» > «MFC/ATL» > «Приложение MFC» :

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

Выбирая опцию «Один документ» мы указываем нашему будущему приложению на необходимость использования архитектуры «Document/View». Следующий интересующий нас параметр — «Использование MFC» , который содержит две опции. Выбор опции «Использовать MFC в общей библиотеке» подразумевает, что на компьютере конечного пользователя, который будет запускать наше приложение, уже имеются все необходимые для этого MFC-библиотеки. Если же мы выберем «Использовать MFC в статической библиотеке» , то нужные MFC-библиотеки войдут в нашу программу на этапе компиляции, что в результате приведет к увеличению итогового размера нашей программы, но эта программа будет работать на любой машине с Windows.
Затем в следующих окнах оставляйте всё как есть, пока не доберетесь до окна:

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

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

В результате будут автоматически сгенерированы 4 класса, которые станут основными классами в нашей игре.
К классу CSameGameView мы вернемся немного позже. А пока рассмотрим класс CSameGameApp , который является классом-обёрткой для всего нашего приложения и функции main() в том числе. Базовым для него всегда будет класс CWinApp .
Следующим рассмотрим класс CSameGameDoc , в котором будут храниться все данные нашего приложения. Для него базовым будет класс CDocument .
И, наконец, класс CMainFrame , базовым для которого будет CFrameWnd . Он также является классом-обёрткой для окна нашей программы. Класс основного фрейма содержит меню и представление клиентской области. Клиентская область — это место, где отрисовывается наша игра.
Теперь возвратимся к пропущенному ранее классу CSameGameView — базовый класс, который представляет собой раскрывающийся список с набором общедоступных представлений, каждое из которых имеет свои особенности в использовании и применении. Тип представления по умолчанию — CView , который является общим представлением, где все отображения и взаимодействия с пользователем должны выполняться вручную. Это как раз то, что нам нужно.
Сейчас быстренько пройдемся по списку и поговорим, для чего используется каждый тип представления:
CEditView — это общее представление, которое состоит из простого текстового поля.
CFormView — позволяет разработчику вставлять в него другие основные элементы управления, т.е. поля редактирования, поля со списком, кнопки и т.д.
CHtmlEditView — имеет HTML-редактор, встроенный в представление.
CHtmlView — вставляет элемент управления — браузер Internet Explorer.
CListView — имеет область, похожую на окно Проводника со списками и значками.
CRichEditView — похож на редактор WordPad; позволяет не только вводить текст, но и форматировать его, изменять цвет и тому подобное.
CScrollView — это общее представление, похожее на CView , но допускающее прокрутку.
CTreeView — вставляет элемент управления древовидной структурой.
Завершение работы мастера приложений MFC приведет к созданию и запуску приложения MFC. Поскольку мы еще не написали никакого кода, то увидим окно, в котором ничего нет, но все равно это полностью функционирующее приложение. Ниже приведен скриншот того, как должно выглядеть ваше базовое приложение (чтобы скомпилировать программу, нужно перейти в меню Visual Studio «Отладка» > «Запуск без отладки» ):

Обратите внимание, здесь есть стандартное меню ( «Файл» , «Правка» и «Справка» ) и пустая клиентская область. Прежде, чем мы перейдем к непосредственному написанию кода, мы немного поговорим об архитектуре «Document/View», которая используется в приложениях MFC, и о том, как мы собираемся применять её в нашей игре.
