Сегодня в распоряжении разработчиков находится немало инструментов, делающих создание игр заметно проще, удобнее и быстрее, чем всего лишь несколько лет назад. Несмотря на кажущуюся сложность процесса, сегодня разработать мобильную игру может практически любой. При надлежащем усердии и выделению на решение задачи достаточного количества времени, а также понимании, что нужно получить на выходе и знания последовательности предпринимаемых для этого шагов.
Первым делом требуется придумать и продумать общий концепт игры. Для этого имеет смысл изучить вопрос с помощью любого из многочисленных онлайн-курсов разработчиков игр, в большом количестве представленных сегодня на рынке образовательных услуг.
Далее необходимость определиться со способом реализации задуманного в жизнь. Можно выделить три основных способа сделать это:
Независимо от выбранного способа, потребуются определенные знания в программировании.
Поэтому основные моменты следует рассмотреть более внимательно.
Для разработки игр используются самые разные языки программирования, начиная с Pascal или C и заканчивая Java или Python. Важно понимать специфику и область применения каждого. Тем более, что выбранный язык в значительной степени влияет на итоговую производительность программного продукта.
Хотя есть и универсальные из них, например, C++, который подходит практически для любой платформы. JavaScript или PHP станут оптимальным выбором для браузерной игры. При использовании в качестве основы какого-либо игрового движка, целесообразно научиться программировать на C#, который используется для прописывания скриптов.
Важно помнить и об образцах лучшего воплощения достоинств разных языков программирования в игровой индустрии.
Например, об использовании Java для разработки Minecraft или отличной совместимости движка Unity с JavaScript.
Одним из самых популярных на сегодня движков для разработки игр заслуженно считается Unity. Он универсален, так как подходит для реализации и 2D-, и 3D-проектов, сочетается с разными языками программирования и платформами. Важным дополнительным преимуществом движка является многофункциональность, большая часть которой доступна в бесплатном режиме. С помощью Unity разработаны такие игровые продукты, как Outlast, Temple Run, Assassin's Creed и множество других. Именно эта платформа используется в настоящее время для создания большей части инди и мобильных игр.
Заметной востребованностью среди разработчиков игр пользуется игровой движок CryEngine. Он применялся при написании Far Cry, Crysis и Sniper II: Ghost Warrior.
Серьезную конкуренцию ему составляет Unreal Engine, с помощью которого разработаны Tekken 7, Mortal Combat X, Dead Pool и Gears of War 4.
После выбора языка программирования и движка игры следует разобраться с основными особенностями построения кода продукта. Если создание игры ведется собственными силами, потребуется активно поработать сразу в нескольких направлениях – начиная с физики и механики и заканчивая игровым балансом и искусственным интеллектом. При использовании готового игрового движка необходимость в подобной работе или полностью исключается, или резко сокращается, но перечислить ключевые моменты игрового кода все-таки необходимо.
Предусматривает реагирование игрового мира на различные воздействия – как со стороны игрока, так и внутренних объектов. Стандартный набор физических действий включает:
Прописать каждое из перечисленных действий самостоятельно, а их в игре множество, представляет собой сложную задачу.
Например, программирование обычного прыжка предусматривает описание нескольких операций:
Важно дополнить описанную последовательность действие анимацией для придания игре визуальной привлекательности. Даже без решения этой задачи самый простой программный код приобретает следующий вид:
function jump() {
If(gamer.jumpTimer >= 1) {
gamer.y++;
gamer.jumpTimer --;
} else {
If(gamer.y >= ground.y) {
gamer.y--;
}
}
}
Если для разработки используется игровой движок, физика процессов уже проработана.
Разработчику остается приспособить ее под собственные потребности. Применительно к платформе Unity это означает следующие действия пользователя:
Никакой код писать не требуется, так как подавляющее большинство физических действий уже прописаны. Остается грамотно применить их на практике.
Игровой механикой называет взаимодействие игрока с окружающим его миром. Весь предусмотренный программным продуктом набор механик образует игровой процесс. Механика непосредственно влияет на все, что касается игры – от сюжета до баланса.
Например, если прописать ходьбу и прыжки, на выходе получится платформер.
При добавлении получения новых уровней и прокачки навыков механика и игровой процесс в целом усложняются, что приближает игру к классическим RPG.
Представляет собой визуальную составляющую игры. Несколько лет назад для создания графики требовалось написание больших объемов программного кода. Сегодня процесс заметно упростился, так как предусматривает использование готовых спрайтов и текстуры (для графики в формате 2D) или моделей (для 3D-игр). Сказанное касается практически всех ведущих игровых движков. Для создания с их помощью графики достаточно выбрать нужный набор спрайтов и текстур, после чего прикрепить их к моделям.
Двухмерная анимация еще проще. Игрок видит несколько последовательно сменяющихся изображений модели с небольшими корректировками во внешнем виде. Чем больше подобных изображений, тем более плавной получаются движения анимированной фигурки.
Анимация в формате 3D является более сложной. Она предусматривает создание каркаса или скелета, на который нанизываются движения отдельных его частей. Например, руки или головы. Чем больше подобных объектов, тем красивее и детализированное графика.
Чтобы прописать движения каждого из многочисленных объектов на одном персонаже, используются два метода. Первый – более трудоемкий, но и дешевый – предусматривает записывание всех координат каждой из точек во время всех движений. Второй – быстрый, но дорогой – предусматривает захват и записывание движений реального человека, одетого в специальные костюмы.
Помимо зарплаты самого актера и покупки не самого дешевого костюма, требуется оплатить работу операторов, услуги павильона и т.д.
Важной частью игрового процесса выступает взаимодействие игрока со встроенными в игру персонажами или NPC. Каждому из них требуется прописать искусственный интеллект, который предусматривает определенную модель поведения и включает:
Разработка искусственного интеллекта справедливо считается одной из самых сложных задач, в процессе программирования игры. От ее успешного решения в значительной степени зависит качество конечного продукта.
Не менее серьезное значение играет игровой баланс. Он предусматривает собой комбинацию достоинств и недостатков каждого из персонажей игры – как самого игрока, так и его противников. Отсутствие продуманного баланса делает прохождение или слишком трудным, или напротив, излишне легким. Оба варианта сложно назвать удачными, а потому приходится компенсировать любое сверхоружие каким-то не менее существенным недостатком. Что в равной степени касается как NPC, так и самого игрока.
Если вы хотите войти в сложный мир геймдева, изучать теорию – это не ваш путь. Создайте простую игру, немного поиграйте в нее, подумайте над тем, что можно улучшить, сделайте задуманное – и вы поймете, насколько это вам подходит. Ниже – гайд по созданию простой игры на самом дружелюбном для новичков движке, Unity. Мы предполагаем, что вы можете сами разобраться со скачиванием и установкой последней версии Unity. Ваша версия (и интерфейс) могут отличаться от того, что показано на скриншотах, но пункты меню и базовые скрипты в Unity практически не меняются от версии к версии – вы без труда найдете нужные инструменты.
Как только вы войдете в Unity, вам предложат создать проект. Выберите пресет «3D», дайте проекту имя.
Вы увидите интерфейс Unity:
Что здесь есть:
Камера и базовый источник освещения у вас уже есть, остальное нужно создавать и настраивать. Что делать:
В окне проекта щелкаем правой кнопкой мыши, выбираем Создать -> C#. Ждем, пока откроется VS. Стандартный «чистый» скрипт выглядит так:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
Убираем вот эту часть:
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
На следующей строке после первой фигурной скобки указываем параметры, которыми будем манипулировать в дальнейшем:
public Rigidbody Rb;
public float forwardforce = 2000f;
public float sideforce = 500;
Теперь добавляем вот это:
void FixedUpdate()
{
// Adding force to game object
Rb.AddForce(0, 0, forwardforce * Time.deltaTime);
}
Функция FixedUpdate что-то делает каждый фрейм, в нашем случае она добавляем объекту импульс по координате – куб будет двигаться вперед с фиксированной скоростью. Умножение на deltaTime нужно для того, чтобы на устройствах с разными мощностями скорость была одинаковой.
Постоянную скорость мы добавили, надо еще добавить переменную – зависящую от нажатой кнопки. Добавляем в скрипт:
if (Input.GetKey("d"))
{
Rb.AddForce(sideforce * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
}
if (Input.GetKey("a"))
{
Rb.AddForce(-sideforce * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
}
if (Input.GetKey("s"))
{
Rb.AddForce(0, 0,-1000 );
}
if (Input.GetKey("w"))
{
Rb.AddForce(0, 0, 1000);
}
На w и s мы увеличиваем/уменьшаем скорость, на a и d – добавляем боковую скорость.
Сохраните скрипт, перетащите его из нижнего окна на куб игрока. Теперь при выборе куба вы в инспекторе заметите параметры.
Их можно менять прямо здесь, изменения автоматически запишутся в скрипт.
Последний штрих – выберите куб игрока, в инспекторе откройте свойства Rigid Body, выберите «Freeze Rotation» по координате x, чтобы куб не вращался по своей оси.
Теперь запустите вашу игру и поперемещайте игрока, чтобы посмотреть, что получилось.
Так игра будет выглядеть намного более динамичной. Сделать это очень просто – нужно создать скрипт, после чего перетащить его из нижнего окна либо на саму камеру в сцене, либо на строку камеры в иерархии. Сам скрипт:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraFollow : MonoBehaviour
{
public GameObject playercube;
private Vector3 offset;
void Start()
{
offset = transform.position - playercube.transform.position;
}
void LateUpdate()
{
transform.position = playercube.transform.position + offset;
}
}
Скрипт делает так, чтобы каждый фрейм позиция камеры равнялась позиции игрока + оффсет. Оффсет можно настроить в инспекторе, выбрав камеру.
Теперь нужно создать уровень. Ничего нового делать не надо, все мы уже проходили: добавляем куб, придаем ему форму, добавляем свойство Rigid Body. После этого – копируем куб и вставляем его, то есть создаем клон. Создайте столько объектов, сколько вам нужно, расставьте их – простейшая игра готова. Вы имеете полосу препятствий, по которой нужно пройти до конца.
У Unity есть ряд гайдов, с помощью которых можно самостоятельно создать действительно сложные игры (правда, разработка точно будет занимать более 10 часов). Приводим ссылка на эти гайды:
Разобравшись с основными характеристиками игры, следует определиться с подходящей игровой платформой. Это важно как для процесса программирования, так и коммерческой успешного создаваемого проекта. Выделяют четыре основные игровые платформы для каждой из которых лучше подходят определенные виды игр. В их числе:
Приведенная классификация несколько условно. Так как многие игры универсальны и одинаково эффективно запускаются с разных платформ, нередко – со всех четырех из перечисленных выше.
В интернете можно встретить множество гайдов по запуску первого коммерческого проекта, и выглядят эти гайды примерно вот так:
Мы приведем «усредненный» пошаговый гайд, а затем расскажем, в чем состоит основная проблема. Итак, чтобы сделать коммерчески успешную игру, вам нужно:
Проблема, о которой обычно не говорят в таких гайдах: если у вас нет опыта в разработке и выпуске игр, на весь этот цикл у вас спокойно уйдет год или больше. Каждый из этих шагов – это огромный объем работы: для сбора команды нужно иметь минимальные навыки HR, команда сама может не знать свои сильные стороны, выбор жанра и платформы – это огромное исследование, движки нужно учить (в том числе учить обходы базов движков, привет работа с UI в Unity), маленький диздок – это 50 страниц А4 мелким шрифтом и так далее.
Разработка игр – это крайне объемная работа, и ваша игра будет конкурировать с большим количеством других игр от опытных разработчиков.
Поэтому запаситесь терпением и не стройте ожидания в отношении вашей первой игры – в 95% она провалится. В разработке игр главное – опыт, а опыт быстрее всего получается на ошибках.
Геймдев – это русскоязычная транскрипция термина Game Dev или Game Developer. В буквальном переводе он означает разработчик игр. Обучение специальности обычно ведется одним из двух способов. Первый предусматривает изучение информации, размещенной в интернете на многочисленных тематических сайтах, или самоучителей, частично перечисленных в одном из следующих разделов статьи.
Главным преимуществом такого подхода становится бесплатный характер. Из недостатков – далеко не всегда высокая эффективность, неопределенность по срокам и качеству обучения. Поэтому такой способ имеет смысл рекомендовать новичкам с нуля для получения базовых представлений о разработке игр. Он необходим, чтобы понять, насколько интересным является данный вид деятельности.
Если желание создавать игры сохраняется и становится еще более осязаемым, целесообразно пройти обучение в рамках разнообразных онлайн-курсов. Их количество весьма велико, что позволяет подобрать оптимальный по срокам, цене и направлению подготовки способ обучения. Некоторые из самых известных учебных центров также будут указаны ниже.
Здесь же необходимо отметить несколько ключевых достоинств такого варианта овладения специальностью разработчика игр. Помимо разнообразия, к ним относятся:
Школа |
Нетология |
Стоимость |
107 500 руб |
Цена в рассрочку |
3 143 руб/мес |
Длительность курса |
13.5 месяцев |
Программа трудоустройства |
Есть |
Формат |
Запись лекций, Онлайн занятия с преподавателем |
Школа |
Skillfactory |
Стоимость |
123 655 руб |
Цена в рассрочку |
3 817 руб/мес |
Длительность курса |
10 месяцев |
Программа трудоустройства |
Есть |
Формат |
Запись лекций, Онлайн занятия с преподавателем |
Школа |
Skillbox |
Стоимость |
156 277 руб |
Цена в рассрочку |
5 041 руб/мес |
Длительность курса |
6 месяцев |
Программа трудоустройства |
Отсутствует |
Формат |
Запись лекций |
Практически все сказанное выше про разработчика игр справедливо и для геймдизайнера. Отведение специальности целого раздела объясняется предельно просто: в конечном успехе любого игрового продукта роль дизайнера переоценить крайне сложно. Именно поэтому таких специалистов набирают в команды разработчиком первым делом.
В остальном для получения первых навыков в области игрового дизайна вполне подойдет самообучение. Для более серьезного овладения профессией потребуется подход посерьезнее, желательно – прохождение многомесячного учебного курса.
Школа |
Нетология |
Стоимость |
117 500 руб |
Цена в рассрочку |
3 435 руб/мес |
Длительность курса |
8.5 месяцев |
Программа трудоустройства |
Есть |
Формат |
Запись лекций, Онлайн занятия с преподавателем |
Школа |
Contented |
Стоимость |
130 817 руб |
Цена в рассрочку |
3 634 руб/мес |
Длительность курса |
9 месяцев |
Программа трудоустройства |
Есть |
Формат |
Запись лекций |
Школа |
Skillbox |
Стоимость |
120 223 руб |
Цена в рассрочку |
3 878 руб/мес |
Длительность курса |
13 месяцев |
Программа трудоустройства |
Есть |
Формат |
Запись лекций |
Первым делом следует понять, что именно нужно получить на выходе. Чем более детальнее представление о конечном продукте, тем выше вероятность успеха.
По большому счету, в настоящее время используется три из них:
Наиболее популярным заслуженно считается Unity, так как именно он используется для разработки большинства игр. Далее место в топе занимают еще два движка – Unreal Engine и CryEngine.
Для разработки игровых продуктов используются практически все широко распространенные языки программирования. Выбор подходящего зависит от вида игры и выбранной для ее распространения игровой платформы.
Выделяют четыре из них: игровые консоли, ПК, мобильные устройства и браузеры.
На первом этапе – для создания самых простых игр – самообучения может оказаться вполне достаточным. При более серьезной подготовке и желанию повысить профессиональный уровень имеет смысл пройти учебный онлайн-курс или даже несколько.