Урок №1: введение в создание игры «samegame» на c++/mfc

Класс Asteroid

Класс Asteroid отвечает за отображение на экране небесного тела, напоминающего огромный камень. Asteroid включает в себя массив спрайтов Sprite[] и массив текстур Texture[] из подключенной программной библиотеки SFML. Каждый элемент массива спрайтов одевается в свою соответствующую картинку. Массив спрайтов с элементами, одетыми в соответствующую текстуру, имеет общую координатную позицию. Таким образом происходит отображение астероида без признаков его осколочной структуры. И только при попадании ракеты в астероид происходит его разрушение, он разделяется на части и каждый осколок летит по своей случайной траектории.

Мотивация

Зачем так делать?

Чтобы научиться программировать. А точнее — чтобы научиться переносить человеческие мысли в код. Обычные задания по программированию плохо тренируют этот навык потому что они скучные. Признаюсь честно, я намеренно готовил скучные задания для своих студентов. Нудные задания на превращение двух чисел в третье неизбежны, чтобы освоить базовые концепции. Такие задания помогут вам спуститься по горной реке, заполненной острыми камнями синтаксиса и водоворотами новых концепций. Проблема в том, что простые понятные задания однажды бросят вас в бескрайнем океане возможностей. Тогда вы обнаружите, что можете плыть куда угодно. Однако никто не подскажет вам верное направление. Ни одна платформа с автоматической проверкой решений не сможет проверить творческую работу и поставить оценку. Это может сделать либо живой преподаватель, либо живой напарник.

В статье ничего не будет про создание конкретной игры. Потому что конкретная игра — конкретные правила. А правила вы должны придумать сами. Дайте волю своему воображению, вспомните свою любимый жанр и сделайте хорошую попытку. Единственное ограничение — мы не будем рисовать красивую картинку. Потому что красивая картинка займет слишком много сил и будет только отвлекать нас от упоения кодом. Скажу по секрету, как только вы сделаете свою игру с помощью символов в черном окошечке, то сможете воплотить ваш замысел на любой другой платформе. Интересная игра будет интересна даже в консоли.

Почему C++?

Главная причина в том, что я сейчас веду индивидуальные занятия по C++ у одного талантливого студента. Его успехи вдохновили меня, а его вопросы показали о чем вообще нужно написать. C++ до сих пор рекомендуют как «язык для обучения». Это вселяет надежду, что статья будет полезна многим. Может быть когда-нибудь я напишу такую же статью и для других языков или для Linux, но не рассчитывайте на это. Если вы напишете сами подобный сборник советов для другого языка, то сообщите мне личным сообщением. Я добавлю ссылку на ваш труд.

Что нужно знать, чтобы понять статью?

Если вы понимаете концепцию циклов, массивов и функций, то вам должно быть достаточно. Предупреждаю сразу, в статье будут магические конструкции, которые я не буду объяснять. У меня нет цели сделать всеобъемлющий курс по C++. Цель — писать код и радоваться тому, как оно почти магически заработает. Когда закончите с основной целью или когда встретитесь с непреодолимыми проблемами, тогда и углубляйтесь.

10 лучших игр для программистов, улучшающих навыки разработки/программирования

CodeGym


Языки программированияПлюсы:

  • Практичные и применимые упражнения
  • Удобное сочетание теории и практики
  • Дружелюбный стиль обучения, который легко понять
  • Простой интерфейс
  • Идеален для начинающих

Минусы:Цена:

CodeMonkey


Языки программирования: Плюсы:

  • Очень легко начинать и понимать основы
  • Доступно для детей (от 7 лет)
  • Локализация на 20 языков

Минусы:

  • Иногда не хватает теории
  • Только 90 уроков

Цена:

Code Hunt


Языки программирования: Плюсы:

  • Этот способ обучения помогает находить по-настоящему изящные решения и использовать их в своей будущей работе
  • У Code Hunt есть большое дружное сообщество

Минусы:

  • Слишком практично (не хватает теории)
  • Нельзя пропускать уровни

Цена:

CheckIO и Empire of Code


Языки программирования: Плюсы:

  • Очень увлекательные игры с отличными заданиями
  • Хороший инструмент для подготовки к собеседованию разработчиков
  • Пользователи могут делиться своим опытом решения задач
  • Поддержка более 10 языков

Минусы:

  • Судя по некоторым отзывам пользователей, медленная
  • Навигация не всегда проста
  • Прежде чем начинать, лучше выучить основы

Цена:


Языки: Плюсы:

  • Очень легко начинать и учиться
  • Простой интерфейс, который быстро осваиваешь

Минусы:Цена:

CodinGame


Языки программирования: Плюсы:

  • Различные типы задач и заданий
  • Возможность играть с друзьями
  • Отличное поддерживающее сообщество с опытными наставниками
  • Используется компаниями для поиска и рекрутинга разработчиков

Минусы:

  • Не учит добротным навыкам
  • Не для начинающих (требуются как минимум базовые знания)

Цена:

Robocode


Языки программирования: Плюсы:

  • Увлекательный и расслабляющий способ обучения программированию и оттачивания своих навыков
  • Возможность играть с друзьями

Минусы:

  • Довольно примитивная (доступны только танковые бои)
  • Не обучает добротным навыкам

Цена:

CodeWars


Языки программирования: Плюсы:

  • Адаптируется к вашему уровню и нужному языку программирования
  • Увлекательные задания и система рангов
  • Возможность поделиться своим решением с другими и сравнить его для улучшения своих навыков
  • Используется компаниями для найма разработчиков

Минусы:

  • Не учит добротным навыкам
  • Не для начинающих (нужны хотя бы базовые навыки)

Цена:

Cyber Dojo


Языки программирования:Плюсы:

  • Очень простой интерфейс
  • Поддерживает большое количество языков программирования

Минусы:

  • Не обучает добротным навыкам
  • Не для начинающих (нужны хотя бы базовые навыки)
  • Ограниченное количество задач

Цена:

Типы полей игровой карты

Для выполнения хода на игровой карте расположены узлы — кнопки (Button) на расстоянии 20 пикселей друг от друга, 39 рядов по 39 кнопок. Таким образом достигается функционал выполнения нового хода.

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

  1. поле, куда машинка может сделать безопасный ход

  2. поле, куда машинка может сделать ход, но это будет выход за трассу

  3. поле, принадлежащее дороге

  4. поле, не принадлежащее дороге

  5. текущее поле с машинкой

При проверке нужно найти поля в которые машинка может сделать ход. Для этого учитывается текущая скорость по оси X и по оси Y.

Проверка нахождения точки дороге:Дорога представляет собой массив прямоугольников (элементы дороги) и кругов (стыки элементов дорог).Проверка принадлежности точки кругу рассчитывается по формуле:

Проверка принадлежности точки прямоугольнику немного сложнее:Из точки C (это точка, которую проверяем на принадлежность прямоугольнику) опустим перпендикуляр на отрезок AB (точки A и B — точки начала и конца элемента дороги соответственно). Данный перпендикуляр — это высота треугольника. Поиск факта принадлежности точки прямоугольнику сводится к проверке:

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

  1. h > (ширина элемента дороги / 2) — точка не принадлежит прямоугольнику

  2. h <= (ширина элемента дороги / 2) — точка принадлежит прямоугольнику если ∠ABC < 90° и ∠CAB < 90°

  3. высота h опускается не на отрезок AB, а на его продолжение. Хотя и длина высоты удовлетворяет нашей формуле, но если ∠ABC > 90° или ∠CAB > 90°, то точка не принадлежит прямоугольнику.

Формула нахождения площади треугольника зная координаты его вершин:

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

Данных двух формул достаточно для расчета высоты треугольника (а еще Вы могли не заморачиваться с площадью и рассчитать проще используя:

но я это понял на момент написания статьи)

Формула нахождения длины отрезка по его координатам:

Формула нахождения углов треугольника зная длины сторон треугольника:

Крестики-нолики

Суть игры: перед вами минимальное игровое поле 3 х 3 клетки. Каждому игроку присваивается своя фигура (крестик или нолик), после чего они поочередно заполняют ими поле. Первый ход за крестиками. Побеждает тот, кто соберёт 3 своих фигуры в ряд (по горизонтали, вертикали или диагонали).

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

Как усложнить: увеличение размеров поля, регулировка сложности.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    — это общее представление, которое состоит из простого текстового поля.

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

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

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

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

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

    — это общее представление, похожее на , но допускающее прокрутку.

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

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

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

Solar 2D

Бесплатный фреймворк (набор готовых функций для использования), разработанный в 2009 году. Ранее движок распространялся под названием Corona SDK. Основная цель — создание мобильных и десктопных приложений на базе скриптов Lua. В мае 2020 года в связи с закрытием компании Corona Labs Inc. произошёл ребрендинг, и теперь, как и в случае с Godot, поддержка и развитие движка осуществляется через пожертвования. Есть активное русскоязычное сообщество. Исходный код можно скачать с GitHub.

Game of Sultans — игра созданная на Solar 2D

Достижения:

  • за всё время существования движка на нём создано более  000 приложений на Android;
  • игру Bubble Ball (2010), созданную 14-летним подростком на Solar 2D, скачали два миллиона раз за две недели после релиза на iOS;
  • на Solar 2D также создана Game of Sultans, известная в России как «Великий Султан»: у неё более 10 миллионов загрузок, она лидер по продажам в 2019 году.

Преимущества:

  • возможность быстро разработать проект (скрипты Lua просто освоить);
  • небольшой объём приложений;
  • кроссплатформенность (iOS, tvOS, Android, Android TV, macOS, Windows, Linux, HTML5);
  • поддержка сторонних API и библиотек (C/C++/Obj-C/Java);
  • большое разнообразие плагинов для расширения функциональности.

Недостатки:

  • не поддерживает консоли;
  • позволяет работать только с 2D;
  • нет визуального редактора — только окно со строками кода;
  • не подходит для крупных проектов.

Игры на движке: CarMaker, Game of Sultans, The Lords of the Earth Flame, Incursion Defense: Cards TD, Edorium, Beasts Battle.

«Сообщество Solar 2D хоть и небольшое, но активное. Благодаря открытому исходному коду любой толковый программист может написать плагин к движку и развивать его. Solar 2D подходит для создания небольших казуалок, но при желании можно сделать что-нибудь сложнее. Если сравнивать с движками, которые под силу освоить даже художнику или сценаристу, то у Solar 2D порог входа выше, так как требуются навыки программирования».

Сергей Поморин, инди-разработчик (Beasts Battle, Necromancer Returns, Magicians Legacy)

Necromancer Returns

Обучение геймдизайну в России

В России на гейм-дизайнера в вузах не учат — таких образовательных программ нет. Пройти обучение можно только на специализированных курсах.

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

В сети разработчики охотно делятся  своими знаниями с новичками, есть профильные ресурсы (например, Gamasutra), бесплатные вебинары и книги (Джесси Шелл «Искусство геймдизайна»).

Новичкам желательно изучить:

  • программы Sketch, Photoshop;
  • принципы создания интерфейса Apple’s UI Do’s and Don’ts, Google Material Design;
  • создание 2D-объектов в Paint Tool SAI, Gimp, Photoshop;
  • создание 3D-объектов: Max (отрисовка), Blender (сложное обучение), Maya (анимация);
  • игровые ассеты (элементы игрового контента): Open Game Dev Art (библиотека графики), Behance (шрифты и иконки), KennyNL (готовые к использованию объекты).

Платные онлайн-курсы обучения геймдизайну

Выпускники большинства IT-школ с дистанционным обучением по завершению курса готовы к работе в студии на позиции гейм-дизайнера, инженера по данным, специалиста по контролю качества. Знаний, которые дают на онлайн-курсах достаточно, чтобы выпустить собственный коммерческий продукт.

Вводная часть любого курса — лекции по игровым классификациям, психологии, менеджменту и маркетингу, формированию геймплея, процессу разработки игры, мастер-классы. Обязательно есть практическая часть, презентация и защита концептов. Большинство платных курсов предполагают получение диплома.

Бесплатные курсы геймдизайна

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

Лучшие курсы геймдизайна в Москве

Очные курсы в Москве — это возможность разработать собственную игру под руководством опытного наставника. Прежде чем записываться на курс, желательно посетить пробное занятие, чтобы ознакомиться с методикой подачи материала, преподавателем, программой. Лучше выбирать курсы, которые ведут гейм-дизайнеры действующих студий.

Совет №3. Соберите прототип и покажите его друзьям

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

Опирайтесь на те навыки, которые вы получили при знакомстве с движком, — так вы не загоните себя в тупик. Соберите что-нибудь небольшое — один уровень платформера или трассу в гоночной игре. Главное, чтобы в это можно было играть.

Замечательная серия видео от Extra Credits по теме

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

Положение пользователя на игровой карте

Положение пользователя на игровой карте отображается в виде машинки. Чтобы игровая карта могла быть любого размера, нужно чтобы при выполнении хода пользователя двигалась карта относительно машинки, а не машинка относительно карты. Это значит, что машинка будет всегда в одной точке на игровой карте, а при выполнении хода нужно запоминать отклонение машинки от ее начальной точки и перерисовывать элементы трассы учитывая данное отклонение.

Изображение машинки сделано в виде машины с четко выделенным задом и передом. Чтобы было понятно пользователю текущее направление движения машинки нужно поворачивать машинку в сторону направления движения.

Каждый выполненный ход сохраняем в списке _pathList — список отрезков пройденного пути.

Отрезок пройденного пути должен хранить следующие данные:

  1. Точка начала отрезка (X и Y)

  2. Точка конца отрезка (X и Y)

  3. Смещение машинки относительно карты в момент выполнения хода

Зная точку начала и конца отрезка можно вычислить угол наклона отрезка к оси oX.AC — изменение координаты X от начала до конца отрезкаBC — изменение координаты Y от начала до конца отрезка

Публикация

Совет

  1. Описание
    Сделайте скриншоты страниц «Об игре» и создайте описания для каждой платформы, на которых планируете выпустить игру.
  2. Нетворкинг
    Если хотите, чтобы все узнали об игре, напишите анонсы для игровых медиа, участвуйте в фестивалях и конференциях.
    Отправьте описание игры в прессу за неделю до выхода — дайте людям время написать о ней. Может случиться, что о ней не станут писать, но помните: журналисты любят красивые истории о разработчиках, уникальную или противоречивую идею и медиа-кит.
    Где взять адреса?

    • Найдите в сети контакты авторов, которые вам нравятся: почта, страница в LinkedIn, Твиттер.
    • Найдите почту издания в разделе «О нас» или внизу страницы.
  3. Стримеры и видеоблогеры
    Они снимут по игре видео, если:

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

    Обычно адреса блогеров указаны на странице. Если нет, попробуйте найти контакты в интернете.Письмо видеоблогеру Markiplier, чей канал насчитывает более 21 миллиона подписчиковВидео по игре от Markiplier

  4. Социальные сети
    Это прекрасный инструмент для продвижения: Agar.io обрела популярность на 4chan, Butterfly Soup подскочила в загрузках после внимания в Твиттере.
    Как лучше: публиковаться через издателя или самому. Хотите пойти по пути Hotline Miami, выпущенной Devolver Digital, или перенять опыт Farmville и Doki Doki Literature Club?
    Чтобы сотрудничать с издателем, нужно сначала его найти. После этого будет небольшой ворох бумажной работы, зато вы получите достаточно средств для развития игры.
    Если собираетесь издаваться самостоятельно, готовьтесь тратить немало времени на изучение маркетинга. Вы можете провалить кампанию по продвижению, но в процессе наберётесь ценных знаний и сэкономите деньги.Количество установок игры растёт
    Я предпочитаю публиковать игры самостоятельно. Мне нравится учиться, и я верю, что по-настоящему хорошая игра будет успешна вне зависимости от продвижения.
  5. Жмите на кнопку «Опубликовать»!
    Получилось! Теперь расслабьтесь, возьмите что-нибудь вкусное и отдохните. Вы работали не покладая рук и заслужили это.
    Не бойтесь, если игра не получила ожидаемого внимания — это нормально. У моей первой игры всего 255 загрузок в Steam.

Инструменты

presskit()помогает

  • Steam (PC) — 100 $ за публикацию.
  • Origin (PC).
  • GOG (PC) — бесплатная публикация после разрешения.
  • Mac App Store (MacOS) — 100 $ в год, требуется учётная запись разработчика Apple.
  • itch.io (PC / Web) — бесплатная публикация.
  • Game Jolt (PC/Web) — бесплатная публикация.
  • Armor Games — бесплатная публикация.
  • Kongregate (Web) — бесплатная публикация.
  • Newgrounds (Web) — бесплатная публикация.
  • GitHub (Web) — бесплатная публикация на сайте, заканчивающемся на «___.github.io».
  • Amazon (Web/Mobile) — бесплатная публикация.
  • Google Play (Mobile) — 25 $ за публикацию.
  • iOS App Store (Mobile) — требуется учётная запись разработчика Apple.
  • DTF (на русском).
  • Канобу (на русском).
  • IndieGames.
  • Siliconera.
  • FreeGamesPlanet.
  • PCGamer.
  • Kotaku.
  • Rock Paper Shotgun.
  • Polygon.
  • Giant Bomb.
  • EuroGamer.
  • Independent Games Festival (IGF). Приём заявок до 1 октября.
  • Indiecade. Международный фестиваль инди-игр. Приём заявок до мая–июня.
  • Swedish Game Awards. Игровая премия Швеции. Приём заявок до июня.
  • South by Southwest Festival (SXSW). Приём заявок до декабря.
  • The Game Awards. Приём заявок до ноября.
  • DevGAMM — проводится в Москве.
  • Game Developer’s Conference (GDC).
  • Penny Arcade Expo (PAX).
  • Electronic Entertainment Expo (E3).
  • Tokyo Game Show.

Cocos 2D-x

Движок Cocos 2D-x китайской компании YAJI Software считается одним из самых популярных среди инструментов для создания игр преимущественно на мобильных платформах. Недавний релиз инструмента для создания двумерных и трёхмерных игр — Cocos Creator — вывел технологию на новый уровень, и теперь разработчикам и художникам стало ещё легче работать вместе и создавать игры для iOS, Android, Facebook Instant Games, WeChat Mini Games, HTML5, а также для десктопных платформ.

Plague Inc. — игра, созданная на Cocos 2D-x

Достижения:

  • согласно данным на официальном сайте, с 2011 года технологией воспользовалось более 1,4 млн разработчиков игр из 195 стран;
  • на движке сделано 25 000 игр;
  • общая аудитория проектов — полтора миллиарда человек.

Преимущества:

  • бесплатный инструмент с открытым исходным кодом поможет реализовать все амбиции проекта и быстро пофиксить баги;
  • наличие API для кроссплатформенных игр — это позволяет сконцентрироваться на разработке приложений и меньше беспокоиться о технических аспектах;
  • движок быстрый и стабильный в работе;
  • SDKBOX: интеграции с различными модулями (реклама, соцсети и так далее) для выпуска игры на мобильных платформах.

Недостатки:

  • подходит только для 2D-игр;
  • для работы с движком требуется знание C++ или JavaScript;
  • разработчики на плохую документацию: информации по движку в сети мало, что может отпугнуть новичков.

Игры на движке: Plague Inc. Evolved, 8 Ball Pool, Might & Magic Heroes: Era of Chaos, Hill Climb Racing 2, Forge of Empires.

«Мы стали делать игры на этом движке, потому что один из разработчиков попробовал частично перенести „Сокровища Пиратов“ на Cocos 2D-x (по счастливой случайности он выбрал именно эту технологию) и показал нам демоверсию. Результат нам понравился. <…> Мы решили перенести всю игру на новый движок. Чуть больше чем через год была готова полная версия для Android. Когда мы загрузили её в Google Play, заменив старый билд 2014 года, аудитория оценила обновление, и наш доход вырос в четыре раза».

Команда TAPCLAP, разработчик мобильных и социальных игр («», «»).

Cocos Brings Bigger Success To Russian Developers, сентябрь 2020 года

«Сокровища Пиратов»

Все эти примеры движков с открытым кодом показывают, что «бесплатный» — не всегда означает «некачественный». Если инструмент способен воплотить задумки, ничто не мешает начать с него и обойтись минимальными затратами. Кто знает, вдруг при наличии определённых навыков разработчик сделает новый хит, который затмит по популярности Plague Inc. или «Великого Султана»?

Впрочем, если вы мечтаете о более масштабном проекте, возможно, следует обратить внимание на движки, которые сфокусированы на 3D-графике, поддерживают консоли и распространяются по условно-бесплатной модели. Им и будет посвящён наш следующий материал

Разное

Вот несколько общих советов по оформлению игр:

Разбивайте элементы на плитки для создания плиточных изображений и экономии места на жестком диске.

Неразбитый и разбитый на плитки элементы

9-частей / 9-квадратов. Масштабируйте объекты с немасштабируемыми границами через центр изображения (растягивайте и сжимайте изображение) для изменения его масштаба и сохранения памяти.

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

  • Сделайте каждую текстуру или объект кратным размеру 4 и силе равной 2 (мера качества изображения) для экономии памяти.
  • Если вы используете Photoshop, используйте «File»> «Export»> «Layers to Files», для того чтобы быстро экспортировать каждый слой в виде файла (например PNG или JPEG).

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

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

Совет №1. Не стремитесь к идеалу

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

Многие берутся за разработку в надежде воплотить в жизнь свои блестящие идеи. Иногда у новичков выходит The Stanley Parable — но куда чаще их задумки гибнут ещё на первых этапах разработки, погребённые под грузом амбиций.

Не потому что у вас нет таланта — просто для этого нужны опыт, знания и, если речь идёт о хоть сколько-нибудь большой игре, команда профессионалов. Вашей целью поначалу должен быть не хороший продукт, а что-то, что вы сможете быстро собрать и так же быстро начать тестировать.

Иными словами, смотрите на свои первые проекты как на обучающие упражнения. Ведь это они и есть.

Что такое Unity

Unity — это и среда разработки, и игровой движок, с помощью которого создаются проекты для разных платформ: ПК, мобильных устройств, игровых консолей и интернет-платформ, — поэтому он называется кроссплатформенным. В Unity есть инструменты для создания объектов, их перемещения, работы с графикой, текстурами и звуком, поэтому сделать полноценную игру с его помощью можно даже в одиночку.

Наглядный пример игры, созданной на Unity, которая поддерживает разные устройства, — , успешный мультиплатформенный проект китайской студии miHoYo Limited. Более популярной стала ее мобильная версия, но пользователи могут войти в аккаунт, например, с компьютера и продолжить играть с того же момента, на котором остановились в мобильной версии. Кроме Genshin Impact, на Unity созданы такие известные проекты, как Hearthstone, Outlast, Cuphead, Pokemon GO и многие другие.

В игровой индустрии существуют десятки разных движков. Одни разработаны под конкретную игру, на других можно делать игры конкретного жанра (шутеры от первого лица, платформеры, гонки), а есть универсальные, вроде Unity, которые открывают разработчикам больше возможностей. Уникальность Unity заключается в сочетании нескольких факторов. Кроме того, что этот движок позволяет создавать проекты под разные устройства и не ограничивает разработчика конкретным жанром, он:

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector