Игровой движок Unity 3D. Курс обучения

Оглавление 1. Подготовка к работе : Где скачать , как установить , что нужно знать , чем руководствоваться .
2. Интерфейс программы : Главное меню , Обзор проекта , Иерархия , Сцена , Игровой вид , Инспектор .
3. Простейшая игра : Создаем проект , Создаём игровую сцену , Создаём скрипт .
4. Простейшая игра (2) : Возможность стрелять , Как добавить врагов , Контроллер врагов .
5. Простейшая игра (3) : Система частиц , Добавление звуков , Создание текста на экране , Публикация .
6. Трехмерный платформер. (в процессе создания)

3. Простейшая игра

Для начала нам желательно создать наиболее простую игру, чтобы быстро пройти все этапы разработки, не отвлекаться на мелкие нюансы, и на практике увидеть, что всё таки это возможно – вручную создать свою игру. Для этой цели в качестве ориентира выберем одну из первых игр в истории – SpaceWar. Это двухмерная стрелялка, где космический корабль летает по космосу и стреляет в другой корабль. Графики минимум, только чистая механика. (Но по графике мы, конечно, можем позволить себе более интересные изображения, чем монохромные пиксели).

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

3.1. Создаем проект

1. После запуска Юнити, в верхнем главном меню выбираем «File -- New Project » (файл – создать проект).

В появившемся окне выбираем место на жестком диске, где сохранить проект. Рекомендуем написать путь к папке как можно короче, например: C:/Project_1 .

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

В нижней части окна выбираем двухмерную игру «Setup defaults for: 2D ».

После этого нажимаем кнопку «Create » (создать).




2. Перед нами открывается окно Юнити, состоящее из нескольких зон. Расположение зон можно сразу же настроить под себя в разделе «View» главного меню, поэтому ориентироваться будем не по сторонам экрана, а по названиям рабочих зон Юнити.


Сразу же оговоримся, что мы будем соблюдать все стандарты разработки программ: четкая иерархия, осмысленные названия переменных, комментарии в программном коде. (Вообще, это не обязательные действия, они несколько увеличивают время разработки, но значительно повышают удобство работы с программой для других людей. Если вы собрались создавать игры в команде с единомышленниками, то вам просто необходимо придерживаться стандартов. Но даже если вы ведете разработку в одиночку, проект может быть настолько большим, что в какой-то момент вы забудете часть кода, и сами не сможете быстро разобраться в нём. Чтобы этого не случалось, везде оставляем комментарии. Стандарты оформления программ помогут вам быстрее разобраться в собственном давно забытом коде).


3. Создадим четкую иерархию проекта, создав папки для каждого вида файлов:

1). В окошке «Project » в его левом верхнем углу нажимаем кнопку «Create ».

2). В появившемся списке выбираем «Folder » (папка). В корневой папке «Assets» появится новая папка.

3). Создаём четыре папки, называем их так:

Prefabs (префабы – массивы объектов),

Scripts (скрипты – программный код),

Sounds (звуки – для звукового сопровождения игровых действий),

Sprites (спрайты – изображения для игровых объектов).

(Созданные папки можно переименовывать и перемещать в любое время с помощью перетаскивания элементов в окошке «Project»).

4). Вот так должен выглядеть конечный результат нашей операции:



3.2. Создаём игровую сцену

Создадим главный игровой объект, которым непосредственно будет управлять игрок. В нашем случае это – космический корабль.


Создаём спрайт:

1. Открываем программу Paint. В свойствах изображения изменяем размер на «100 х 75». Рисуем корабль из простейших фигур, закрашиваем, вокруг корабля оставляем белый цвет. Сохраняем файл под именем «».

2. Созданный файл открываем в программе «Gimp». Слева выбираем инструмент «волшебная палочка», на изображении выбираем белый участок вокруг корабля. В главном меню на вкладке «Изображение» выбираем последнюю строчку «Color to alfa-cannel». После этого вокруг корабля будет прозрачный цвет. Если на изображении ещё остались белые участки, повторяем действия, пока не обесцветим всё ненужное. Сохраняем файл. Запоминаем папку, где лежит созданный файл.

(Не важно, как будет выглядеть корабль, главное чтобы четко были видны его силуэты, и вокруг была прозрачность. Если у вас совсем всё плохо с рисованием, можете загрузить изображение корабля прямо с этой страницы).


Изображения, необходимые для создания игры
Корабль
Космос
Пришелец
Выстрел

Создаём игровой объект:

1. В другом окне находим на компьютере файл изображения, который мы только что создали, перетаскиваем его в окно Юнити в зону «Project » на папку «Sprites ». Файл подгрузится в папку. После этого выделяем загруженный файл, в окне «Inspector » в строчке «Texture Type » выбираем значение «Sprite (2D and UI) ». Внизу нажимаем кнопку «Apply » (применить).


(Другой способ добавлять файлы: в зоне «Project» выбираем папку «Sprites», на ней нажимаем правой кнопкой мыши, в появившемся списке выбираем «Import New Asset», в появившемся окне ищем папку расположения и сам файл изображения).

2. Выбираем загруженный файл в зоне «Project », перетаскиваем его в зону «Scene (тёмно-серая часть рабочего окна Юнити, где есть изображение видеокамеры).

Справа в зоне «Inspector» смотрим на характеристики «Transform» - это координаты нашего объекта в игровом пространстве. После перетаскивания объект установился неровно (в координатах X и Y указаны не целые, а дробные числа). Нажимаем правой кнопкой мыши по меню «Transform », в появившемся списке выбираем «Reset Position ». После этого изображение встанет ровно по центру мира (X=0, Y=0).


Создаём фон:

1. Рисуем изображение звездного пространства – тёмный фон и несколько звезд. Размер изображения - 100 х 100, формат - .png. Можете использовать готовый файл изображения с нашего сайта.

2. Созданный файл добавляем в окно Юнити в папку «Sprites».

3. Перетаскиваем файл в окно игровой сцены. Как мы видим, новое изображение встало поверх старого, и корабля теперь почти не видно. Unity, да и вообще все редакторы, устроены так, что в них новые элементы ставятся поверх старого, но нам-то нужно, чтобы фон был на заднем плане. Чтобы исправить очередность изображений, выбираем игровой объект с фоном, в окне «Inspector» в свойствах «Transform » вставим значение «Z = 1 ». У изображения корабля должно стоять свойство «Z = 0». Z – это глубина расположения объекта в 2D играх. Чем больше значение Z, тем дальше объект находится от игровой камеры.


4. Другой способ: на сцене выбираем объект фона, в окне «Inspector» смотрим свойства «Sprite Renderer », в строчке «Sorting Layer » нажимаем кнопку и выбираем «Add Sorting Layer ». После этого появится новая строчка с названием слоя «Layer 1», переименовываем его в «Background ». Точно так же создаём ещё два слоя: «Foreground » и «GUI ».

5. Выбираем объект корабля, в окне «Inspector» в строчке «Sorting Layer» выставляем ему слой «Foreground». Выбираем объект фона, выставляем ему «Background». Теперь корабль будет отображаться поверх фона.



Наше фоновое изображение сейчас имеет размер 100 х 100 пикселей. Для фона этого будет мало. Конечно, можно создать много копий этого изображения, и закрыть ими весь игровой экран, но это очень долгий и неэффективный способ. Мы пойдём другим путём: превратим спрайт в текстуру.


6. Выделяем объект фона из списка «Hierarchy » и удаляем его (клавиша «delete»), чтобы убрать фон с игровой сцены. В зоне «Project » выбираем изображение фона, в окне «Inspector » меняем его тип «Texture Type » на «Texture ». В строчке «Wrap Mode» ставим значение «Repeat». Нажимаем кнопку «Apply ». (Сайт сайт)



7. У нас есть текстура, теперь создадим для неё подходящий игровой объект. В верхнем главном меню выбираем строчку «Game Object | Create Other | Cube ». Изменяем имя появившегося объекта на «Background». В свойствах «Transform» изменяем расположение «Position: 0, 0, 1 » и размер «Scale: 100, 100, 1 ».

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

8. В свойствах куба удаляем раздел «Box Collider » (обработчик столкновений). Для этого нажимаем правой кнопкой мыши на разделе, в появившемся меню выбираем строчку «Remove Component ».



9. Наше изображение фона нельзя напрямую поместить в 3D-объект. Для начала изображение нужно преобразовать в материал. В зоне «Project » сверху нажимаем «Create | Material ». Появившийся материал называем «BackgroundMaterial». В свойствах «Shader » нажимаем на выпадающее меню, выбираем «Unlit | Texture ». В правой части свойств кликаем по квадрату с изображением текстуры «Texture box», из появившегося списка выбираем текстуру нашего фона (или же можно просто перетащить сюда файл текстуры из зоны «Project»). В свойстве «Tiling » проставляем значения x = 25 , y = 25 .



10. В зоне «Hierarchy» выбираем объект «Background». В его свойствах, под компонентом «Mesh Renderer » открываем «Materials » и меняем значение «Element 0 » на наш материал «BackgroundMaterial ».


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

3.3. Создаём скрипт

Для того, чтобы заставить игровые объекты двигаться, нам нужны скрипты. Скрипты – это своеобразные логические команды, которые предписывают объектам, как им себя вести в той или иной ситуации. В Unity можно писать скрипты на следующих языках программирования: C#, Boo, UnityScript. Мы будем использовать язык C#, так как он принадлежит к серии самых популярных языков программирования.

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


Реализация передвижений игрока

1. В области «Проекта» нажимаем правой кнопкой мыши на папке «Scripts », в выпадающем списке выбираем «Create » - «C# Script ». (Или же можно нажать на кнопке «Create» в верхнем левом углу области, и создать скрипт там). Назовём созданный файл - «PlayerScript ».



2. Делаем двойной клик по файлу скрипта, после этого откроется окно дополнительной программы «MonoDevelop» (это программа из комплекта Unity, предназначенная для написания скриптов).


После запуска «MonoDevelop» видим, что часть программного кода уже создана автоматически. Пока ничего не изменяем, а изучаем то, что появилось в коде по умолчанию.


Рассматриваем стандартный шаблон скрипта

В самом верху видим две строчки:

using UnityEngine;
using System.Collections.Generic;

В программном коде мы должны оперировать различными классами объектов. Описания классов содержатся в специальных библиотеках. Вот эти библиотеки мы и подключаем к нашему коду командой «using».

В библиотеке «UnityEngine» содержатся описания всех стандартных объектов внутри движка Unity (объекты, их свойства, файлы, префабы, система наследования, связи между объектами).

В библиотеке «System.Collections.Generic» содержатся простейшие логические конструкции (классы, списки, перечни, массивы, таблицы, векторы), а так же источники внешних данных для нашей будущей игры (нажатие клавиш клавиатуры, кнопок мыши, свойства экрана).


public class PlayerScript: MonoBehaviour {

Это заголовок созданного нами скрипта. Заметьте, что третье слово «PlayerScript» - это название скрипта, оно соответствует тому, как мы назвали файл «PlayerScript.cs». После двоеточия указан класс нашего скрипта – «MonoBehaviour». Это стандартный класс для всех скриптов Юнити.

После символа «{» начинается перечень команд внутри скрипта. В самой последней строчке скрипт обязательно должен завершится символом «}».


Внутри скрипта видим строчки:

// Use this for initialization

void Update () {

Это две пустые стандартные функции. «void» - это команда вызова функции. «Start» и «Update» - названия функций.

«()» - означает что это процедурная функция, для неё не нужны внешние значения, и она не выдаёт результат, а просто выполняет определенные действия.

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

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


Изменяем скрипт

3. Строчку «using System.Collections;» изменяем, чтобы получить больше возможностей при разработке. Дописываем подкатегорию «.Generic»:

using System.Collections.Generic ;

4. Функция «Start» выполняется один раз при создании объекта в игре, а функция «Update» повторяется каждое мгновение в процессе игры. «Start» нам не нужна, можем удалить её.


5. Создадим переменные значения, которые нам понадобятся. После строчки «public class PlayerScript: MonoBehaviour {» добавляем следующий текст:

// Изменение скорости перемещения героя
public float playerSpeed = 2.0f;

// Текущая скорость перемещения
private float currentSpeed = 0.0f;

// Создание переменных для кнопок
public List upButton;
public List downButton;
public List leftButton;
public List rightButton;

// Сохранение последнего перемещения
private Vector3 lastMovement = new Vector3();

Рассмотрим, что мы написали. В первой строчке:

«public» - публичный тип переменной (её смогут изменять другие игровые объекты).

«float» - тип значения, хранящегося в переменной, в данном случае – число с дробным значением.

«playerSpeed» - название переменной (можете назвать по другому).

«= 2.0f» - начальное значение, хранящееся в переменной. Дробное число написано в таком формате – число с точкой, а в конце буква «f», чтобы компьютеру было понятно, что это не обычная цифра, а число с дробным значением. Такой тип переменных используется для координат объекта в пространстве.


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

«private» - приватный тип переменной (такую переменную может изменять только сам объект, переменная для внутреннего пользования).

«List» - тип переменной «массив из нескольких значений», в массиве содержатся ссылки на клавиши клавиатуры. «upButton», «downButton»,.. – названия применяемых клавиш.

«Vector3» - тип переменной «вектор в трех измерениях». «new Vector3()» - создание пустого вектора (обязательно для инициализации такого типа переменной).


Подвязываем скрипт к объекту

6. Сохраняем изменения в скрипте. Можем сделать это, нажав комбинацию клавиш «Ctrl + S». Сворачиваем окно «MonoDevelop», возвращаемся на экран Юнити.


7. В «иерархии» выбираем объект корабля. Перетаскиваем файл скрипта в свойства корабля в окно «инспектора». Там появится новое свойство объекта «Player Script (Script)». Здесь мы можем увидеть, что все публичные переменные отображаются в свойствах объекта, и мы можем поменять их прямо отсюда, не возвращаясь к программному коду.



8. Настроим управление нашим кораблём. В свойствах каждой переменной-кнопки «Up Button», «Down Button», «Left Button», «Right Button» в строчке «Size » ставим значение «2 ». После этого появляются два списка «Element 0» и «Element 1», в них выбираем те клавиши, которые будут соответствовать этой переменной. Для «Up Button» это «UpArrow » (клавиша со стрелкой вверх на клавиатуре) и «W ». В итоге мы должны назначить переменным все кнопки-стрелки и клавиши «W, A, S, D », как это показано на рисунке. (Открыв список, на клавиатуре можно нажимать клавишу с первой буквой названия клавиши, чтобы быстро найти её в огромном списке).

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


Пишем функции перемещения объекта

9. Возвращаемся в «MonoDevelop». Внутри функции «Update» прописываем ещё две функции. Размещение функций в «Update» означает, что они будут повторяться вновь и вновь, на протяжении всей игры:

// Update is called once per frame
void Update () {

// Поворот героя к мышке

// Перемещение героя

}

10. Выше мы написали лишь вызов наших функций. Теперь ниже нужно описать, что же собственно будут выполнять эти функции. После символа «}», закрывающего функцию «Update», и перед последним символом «}» добавляем код:

// Поворот героя к мышке
void Rotation() {
// Показываем игроку, где мышка
Vector3 worldPos = Input.mousePosition;
worldPos = Camera.main.ScreenToWorldPoint(worldPos);
// Сохраняем координаты указателя мыши
float dx = this.transform.position.x - worldPos.x;
float dy = this.transform.position.y - worldPos.y;
// Вычисляем угол между объектами «Корабль» и «Указатель»
float angle = Mathf.Atan2(dy, dx) * Mathf.Rad2Deg;
// Трансформируем угол в вектор
Quaternion rot = Quaternion.Euler(new Vector3(0, 0, angle + 90));
// Изменяем поворот героя
this.transform.rotation = rot;
}

11. Описываем функцию движения корабля «Movement»:

// Движение героя к мышке
void Movement() {
// Необходимое движение
Vector3 movement = new Vector3();
// Проверка нажатых клавиш
movement += MoveIfPressed(upButton, Vector3.up);
movement += MoveIfPressed(downButton, Vector3.down);
movement += MoveIfPressed(leftButton, Vector3.left);
movement += MoveIfPressed(rightButton, Vector3.right);
// Если нажато несколько кнопок, обрабатываем это
movement.Normalize();
// Проверка нажатия кнопки
if(movement.magnitude > 0)
{
// После нажатия двигаемся в этом направлении
currentSpeed = playerSpeed;
this.transform.Translate(movement * Time.deltaTime * playerSpeed, Space.World);
lastMovement = movement;
}
else
{
// Если ничего не нажато
this.transform.Translate(lastMovement * Time.deltaTime * currentSpeed, Space.World);
// Замедление со временем
currentSpeed *= 0.9f;
}
}

// Возвращает движение, если нажата кнопка
Vector3 MoveIfPressed(List keyList, Vector3 Movement) {
// Проверяем кнопки из списка
foreach (KeyCode element in keyList)
{
if(Input.GetKey (element))
{
// Если нажато, покидаем функцию
return Movement;
}
}
// Если кнопки не нажаты, то не двигаемся
return Vector3.zero;
}


12. Сохраняем файл скрипта, возвращаемся в окно Юнити, сохраняем сцену (в главном меню нажимаем «File | Save Scene ». Теперь можем запустить нашу игру. На вкладке «Game » нажимаем кнопку «Maximize on Play », чтобы игра запускалась во всё окно Юнити. Нажимаем клавишу «Play » в верхней части экрана для включения игры. (Для отключения игры снова нажимаем по клавише «Play »).



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

Достижение "Почётный читатель сайт"
Понравилась статья? В благодарность можно поставить лайк через любую социальную сеть. Для вас это - один клик, для нас - очередной шаг вверх в рейтинге игровых сайтов.
Достижение "Почётный спонсор сайт"
Для особо щедрых есть возможность перевести деньги на счет сайта. В этом случае вы можете повлиять на выбор новой темы для статьи или прохождения.
money.yandex.ru/to/410011922382680
+ Добавить комментарий

Как создать игру в Unity

Казуальные игры в жанре match 3 (три в ряд) - одни из самых популярных на рынке. Многие играют в Candy Crush, Bejeweled и прочие. У этих игр простая цель: перемещать мозаичные элементы до тех пор, пока три одинаковых элемента не окажутся рядом. Когда это происходит, совпавшие элементы исчезают, а на их месте появляются другие. Игрок при этом набирает баллы.

В этом руководстве будут освещаться следующее:

  • Создание доски, заполненной мозаичными элементами
  • Выбор и отмена выбора мозаичных элементов
  • Идентификация соседних элементов с помощью raycasts
  • Замена элементов
  • Поиск совпадающих трех и более элементов с помощью raycasts
  • Заполнение пустых элементов
  • Ведение счета и подсчет движений

Примечание . Предполагается, что вы уже знаете, как пользоваться редактором Unity, как редактировать код, и что у вас есть базовые знания по части C#.

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

Share this article:

Related Articles

Unity - это игровой движок, на котором строится большая часть современных игр на разных платформах. Посредством движка реально создавать игры, ориентированные на запуск на компьютерах (Windows, Linux, MacOS), мобильных телефонах, планшетных компьютерах (Android, iOS, Windows Phone) и даже игровых приставках PlayStation, Xbox, Nintendo.

Создание игр на движке Unity невозможно представить без написания дополнительного кода. В Unity поддерживается два языка программирования - и . Раньше также поддерживался язык Boo, но позже от него отказались.

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

В Unity используется встроенные функции, которых нет ни в C#, ни в JavaScript. За счёт этого особо не имеет значения знает вы язык программирования или нет. Тем не менее, мы все же рекомендуем сперва пройти курс по изучению языка C#. Курс представлен на нашем сайте по .

План курса

За курс мы создадим простую игру под названием «Roll a Ball». В игре будет шар, который можно будет передвигать за счёт стрелок на клавиатуре. При передвижении объект сможет поглощать другие объекты на поверхности, тем самым собирая очки.

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

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

10 место

Оригинальный инди-шутер с видом от 1-го лица, созданный одноименной командой Superhot Team. Будучи небольшой демонстрацией для конкурса 7 Day FPS Challenge, игра переросла в демоверсию , а затем перебралась на Kickstarter, где получила необходимое финансирование и впоследствии стала полноценной игрой.

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

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

9 место

Очередная инди-игра, созданная компанией Failbetter Games. Сама по себе Sunless Sea не является культовой и не предлагает уникальных вещей. Внести её в список мы решили лишь потому, что в целом игра выполнена качественно, а её жанр - roguelike - сегодня в чистом виде практически невозможно встретить на просторах игровой индустрии.

Собрав средства на Kickstarter, разработчики решили выпустить спин-офф к собственной браузерной RPG Fallen London. Все действие Sunless Sea развивается в той же вселенной и в тех же временных рамках - декорациях Викторианской эпохи, вобравшей в себя мистическую тематику и фэнтези по типу легенд о Ктулху.

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

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

8 место

MMO-симулятор, в котором игрокам необходимо совместно управлять огромным дирижаблем. Guns of Icarus Online разработана в стиле . Никакого мира или описания вселенной в этой игре вы не встретите - все происходящее разворачивается на безликих небесных пространствах, где сталкиваются боевые дирижабли.

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

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

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

Разница же заключается в дебаффах и баффах, которые накладываются в зависимости от класса и действий игрока (пилот лучше управляет, а инженер быстрее чинит).

В Guns of Icarus Online представлено немало уникальных дирижаблей, каждый из которых обладает собственными огневой мощью и характеристиками. Победы же достигнет та команда, которая отправит вражескую технику в свободный полет - т.е. уничтожит.

7 место

Проект, устроивший по себе вакханалию «хайпа» в 2016 году, которая захлестнула весь интернет, проникла на телевидение и в газеты. является бесплатной игрой для мобильных устройств, в которой игроку необходимо коллекционировать известных персонажей-монстров из вселенной Pokemon.

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

Однако же только Pokemon Go удалось получить громкий отклик от общественности - игра была загружена более чем 100 миллионами человек со всего мира. Студии Niantic же удалось заработать около полумиллиарда долларов.

6 место

В 2016 году студия Campo выпустила интересный инди-проект - игру в с видом от 1-го лица, которая рассказывает историю об обычном человеке по имени Генри и его проблемах, что порождает современное общество.

События игры разворачиваются в лесу Шошони 1989 года, как раз в то время, когда начался Йеллоустонский пожар. Главный герой Генри, потерявший любимую жену, решает абстрагироваться от социума и уйти в отшельничество, став наблюдателем леса на одной из пожарных вышек.

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

5 место

Студия Obsidian Entertainment продолжает созданную ей же тенденцию по воскрешению «олдскульных» ролевых игр. После успешной Pillars of Eternity разработчики принялись за - проект того же жанра, который рассказывает совершенно новую историю.

Как и PoE, поиграть в которую мы также вам советуем, Tyranny сделана на движке Unity. В техническом плане игра (как и все вышеописанные) ничего нового не предлагает - это использование все тех же технологий границы 1990-х и 2000-х, которые в свое время использовались в CRPG.

Будучи знакомы с жанром, вы столкнетесь с привычным партийным геймплеем и паузой. Вас ожидают сложные битвы, в которых нужно использовать все умения героев, и разветвленные сюжет и диалоги, являющиеся главной изюминкой Tyranny. Фанатам Baldur’s Gate и Planescape: Torment рекомендуется.

4 место - Rust

В бескрайней пахучей жиже под названием «Симулятор выживания в раннем доступе» очень тяжело отыскать что-то стоящее, кроме непосредственно пахучей жижи. Однако исключения все же имеют место быть, о чем нам красноречиво заявляет Rust. Этот «выживастик» прежде всего отличается от сотен подобных клонов тем, что стал одним из первых в своем роде.

Rust

Проект Rust долго находился в раннем доступе (с 2013 года), что по сути причисляло её в проклятый стан «альфа-игр», которым никогда не суждено выйти. Тем не менее, игра уже так давно обновляется и обросла таким количеством контента, что в раннем доступе она находилась скорее по прихоти разработчиков, нежели из-за технических причин. Наконец, 8 февраля 2018 игра все же вышла официально.

Вообще, все сумасшествие с играми в раннем доступе в началось с DayZ, которая как гром среди ясного неба навалилась на индустрию. Именно на неё ориентировались разработчики Rust, правда, вскоре они решили отойти от первоначальной затеи и смешать особенности DayZ с Minecraft.

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

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

Мы бы не разместили её в топе, если бы она, как уже упоминалось выше, не стала одним из первопроходцев жанра. Качественная игра, которой удалось реализовать более 5 миллионов копий к 2016 году, что во многом говорит в пользу Rust.

3 место

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

В большинстве своем игры на Unity создаются инди-разработчиками (примерно 90% от общего количества). В основном, понятное дело, подобные проекты проваливаются или просто остаются незамеченными аудиторией, что бьет по презентабельности Unity. И лишь изредка игры вроде вихрем проносятся среди конкурентов, оставляя всех позади.

Inside разработана датской студией Playdead, которые также ответственны за выпуск Limbo. В Inside вам тоже предстоит играть за безымянного мальчика, путешествующего по гротескному и полном опасностей миру.

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

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

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

2 место

Ещё одним интересным проектом на Unity является космический симулятор Kerbal Space Program - увлекательнейшая , в которой вам предлагается воздвигнуть собственный космодром, построить ракету и запустить её в космос!

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

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

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

Разобравшись со строительством ракеты, вы попытаетесь выбраться на орбиту Земли, а затем и вовсе покинуть её, чтобы добраться до других планет. В Kerbal Space Program присутствуют живые существа - кербалы, которыми и предстоит стать вашими космонавтами.

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

В общем и целом, Kerbal Space Program - это игра огромной сложности, одолев которую вы получите уйму удовольствия и станете чуточку более эрудированным.

1 место

Серия Civilization стояла у истоков жанра 4Х-стратегий. Начиная с 1990-х, она прошла огромный путь и до сих пор продолжает считаться лучшей из лучших. Естественно, что из года в год всплывающие финансовые успехи серии не раз побуждали и продолжают побуждать сторонних разработчиков выпускать нечто подобное.

Некоторые работают под копирку, меньшинство - делает уникальные игры, которые во многом даже превосходят Civilization. Endless Legend, разработанная студией Amplitude на движке Unity, как раз из таких.

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

И хотя цели 4Х-стратегии не отличаются от многих других (вы должны полностью уничтожить противника, либо достичь научной/территориальной/дипломатической победы), её сеттинг и некоторые особенности значительно выделяются среди конкурентов.

Если вам надоела Civilization и подобные ей клоны, то обратите внимание на Endless Legend - игру с собственной чарующей вселенной и уникальными механиками, которые, вполне вероятно, могут полюбиться вам гораздо больше, чем «фишки» той же Civilization.

Видео: трейлер Endless Legend


Лайк, если понравилось

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

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

  1. Объектные модели;
  2. Функциональные спецификации;
  3. Игровой контент;
  4. Интерфейс.

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

Объектные модели

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

Функциональные спецификации

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

Игровой контент

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

Интерфейс

Интерфейс – это то, как пользователь будет взаимодействовать с игрой. Он включает в себя кнопки, с помощью которых можно управлять персонажем, и разделы меню: например, играть, счет, настройки, топ игроков, справка. Если вы не имеете опыта в создании приложений на Андроид, перед созданием собственного скачайте с Плей Маркета и проанализируйте популярные игры и перенесите лучшие решения в свой проект.

Игровой движок

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

Каждый из них предлагает различные функции: некоторые разработаны для 3D, другие для 2D, может поддерживаться мультиплатформенность. Таких движков есть огромное количество, но, если вы новичок, лучше выбрать один из самых популярных, так как там будут присутствовать все необходимые функции.

UDK

Torque 2d/3d

Что такое конструктор игр?

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

Конструктор позволяет создавать игры различных жанров для Windows, Android и iOS. Предлагает большой выбор готовых локаций, объектов, персонажей и звуковых оформлений, поэтому создание первой Андроид-игры не займет много времени. Пользователи, знакомые с языками программирования JS и C++, могут использовать встроенный GML. Единственный недостаток заключается в том, что программа не переведена на русский язык.

Заключение

Создание игры на Андроид – не совсем простое, но очень прибыльное дело. Если вы решили разработать игру и зарабатывать на ней, сначала проработайте идею. Далее напишите «дизайн-документ» и определитесь с игровым движком, который сможет максимально раскрыть ее потенциал. После этого можно приступать непосредственно к созданию приложения в конструкторе.

Видео

Чтобы детальнее ознакомиться с процессом создания Андроид-игр, ознакомьтесь с серией видеороликов, посвященных этому занятию.