Как сделать игру без движка
Перейти к содержимому

Как сделать игру без движка

  • автор:

Разработка браузерной онлайн игры без фреймворков и движков

В этом посте будет описан процесс разработки онлайн игры на чистом javascript и WebGL (без фреймворков и движков). Будут рассмотрены некоторые алгоритмы, техники рендеринга, искусственный интеллект ботов и сетевая игра. Проект является полностью опенсорсным, в конце поста будет ссылка на репозиторий.

Сразу же геймплейное видео:

Тут играет бот по имени Лягуха и другие боты

Введение

Игра представляет из себя 2D стрелялку «вид сверху». В игре присутствуют следующие элементы: земля; стены, ограничивающие видимость; лава, по которой ходить нельзя; мосты через лаву; 6 видов оружия и 5 видов пауэрапов; персонажи, одним из которых управляет игрок.

Геймплей, как в Quake III, обычный deathmatch, то есть нужно убить врагов больше, чем это сделают они. В игре присутствуют боты, но как только в неё заходит живой игрок, то один из ботов удаляется (тот, кто недавно погиб и не успел еще респавниться). Набор оружия традиционен для подобных игр. Стоит отметить лишь, что рельса наносит бесконечный урон, а ракетница стреляет «умными» ракетами — они подрываются автоматически, когда пролетают на минимальном расстоянии от врага.

Клиент написан на javascript с использованием WebGL, а сервер на node.js. В этом проекте используются следующие библиотеки:

    — для requestAnimationFrame, fullscreen и mouselock — матричная библиотека — звуковая библиотека
  • bootstrap и jquery сугубо для странички с вводом ника, более нигде не использовались
  • на сервере используется express, ws (WebSocket) и другие

Генерация уровня

Для генерации карты используется обычный Шум Перлина плюс некоторые преобразования и фильтрации:

Где perlinNoise() — шум Перлина, в диапазоне от 0 до 1,
abs(x) — модуль числа,
clamp(x) — если x < 0, то x = 0. Если x > 1, то x = 1,
norm(-0.5, 2) — нормализует шум в данный диапазон.

Именно такая последовательность преобразований на выходе даёт требуемую топологию карты: она состоит из комнат и коридоров, шириной в 2-3 пикселя.

Получившаяся текстура является маской земли (черный цвет — земля, белый — стена).
Далее в отдельном буфере генерируется река лавы. Для этого генерируется ломаная (если нужны притоки, то несколько ломаных) и каждый отрезок ломанной «рисуется» в буфер с помощью алгоритма Брезенхама. Затем этот буфер с отрезками размывается по Гауссу. Радиус размытия выбирается исходя из требуемой ширины реки. Для оптимизации размытия используется двухпроходный алгоритм. Функция размытия нам ещё не раз пригодится. Размытие буфера с лавой нужно для того, чтобы придать реке ширину, а так же в дальнейшем для рендеринга.

В маске земли, где проходит лава и в непосредственной близости от неё, удаляются стены:


Слева направо: маска земли с предыдущего этапа; маска лавы; расчищаем стены от лавы; финальный результат

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

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

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

Все вышеперечисленные маски и составляют нашу левелмапу. Вот из чего она состоит: R канал содержит маску лавы; G — маска земли; B — маска для смешивания диффузных текстур; A — тени.

Рендеринг уровня

Если прямо сейчас взять и отрендерить левелмапу, то получится примерно следующее:

Слева прямоугольник на левелмапе показывает охват камеры

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

Получилось слишком размыто (фильтр Гаусса даёт о себе знать). Давайте к результату выборки из левелмапы применим клампинг:

Смысл этой формулы: level.rg у нас меняется плавно от 0 до 1 (видно на скриншоте выше). После клампинга все значения выборки меньшие 0.5 обращаются в 0, а большие 0.516 обращаются в 1, а значения на отрезке [0.5, 0.516] «растягиваются» в отрезок [0, 1]. Вот так это выглядит:

Пришло время для текстур: две диффузные текстуры смешиваются по маске из B-канала левелмапы, с ними смешивается текстура стены по G-каналу, а получившийся результат смешивается с текстурой лавы по R-каналу левелмапы (смешивание цветов в шейдерах GLSL производится функцией mix — это обычная линейная интерполяция двух значений по коэффициенту смешивания). Для выборки из текстур используется всё те же текстурные координаты домноженные на некий коэффициент, который влияет на количество повторений этой текстуры по всей карте:

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

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

Осталось решить последнюю проблему: мы можем видеть через стену (то есть видим области, которые отгорожены стеной от нашего персонажа). Для решения этой проблемы используется трассировка фрагмента: из исследуемого фрагмента выпускается луч в сторону персонажа и делаются выборки из левелмапы (нас интересует только G-канал с маской стены), в данном проекте используется 12 выборок. По результатам выборок можно определить, виден ли фрагмент из позиции персонажа или нет. Для полноэкранного прохода такая трассировка слишком дорогая операция, поэтому она выполняется в отдельном фреймбуфере малого размера (64х64). Эта текстура называется картой видимости:

До применения карты видимости и после

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

Рендеринг лавы

Теперь давайте анимируем лаву. Для этого нужно создать карту смещений. В этой текстуре в RG-каналах хранится 2D вектор, который складывается с текстурными координатами для выборки из текстуры лавы. Причем нужна не просто карта смещений, а карта смещений меняющаяся со временем. В данной игре для создания карты смещений используется фреймбуфер размером 512х512. В шейдер этого прохода передаётся текстура с шумом Перлина и время, измеряемое от 0 до 1.

Кусок фрагментного шейдера (упрощено):

где noise — шумовая текстура (она статичная).

Смысл этого шейдера в том, что делаются 4 выборки из одной и той же шумовой текстуры, но с разным масштабом текстурных координат. Да ещё и смещаются они со временем в перпендикулярных направлениях (обратите внимание на вторую выборку, там используется смещение time.yx, а в первой — time.xy). Время зашито только в x-компоненту переменной time, а y-компонента содержит 0.

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

Упрощенный кусок шейдера:

где tex_wave — карта смещений (ну или карта волн).

С коэффициентом 0.1 можно поиграться, влияет он на «возмущение» лавы.

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

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

Итак, обновленный шейдер лавы (упрощено):

Тут делается две выборки из текстуры лавы на расстоянии друг от друга в точности равное vel.xy и смешиваются по значению времени.

Всё вместе выглядит так:

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

Теперь давайте выясним, какое разрешение должно быть у этой текстуры с декалями. Экспериментальным путём было выяснено, что 16х16 текселей текстуры, приходящиеся на один тайл карты выглядит оптимально (если брать 32х32, то это уже больше, чем размер самой декальки, например следа от взрыва, а по памяти 4-кратный проигрыш). Самая большая карта имеет размер 256х256, тогда разрешение текстуры с декалями равно 16 * 256 = 4096х4096.
На самом деле текстура 4К*4К не создаётся, вместо этого всю карту «распиливаем» на зоны 32х32. На каждую такую зону приходится собственная текстура с декалями 512х512. Всего таких текстур для большой карты 64. Чтобы не передавать пачку этих текстур в главный проход рендеринга карты (и не процессить из какой именно делать выборки) был создан ещё один фреймбуфер. Для него настраивается ровно та же матрица камеры, что и для рендеринга карты. И все текстуры с декалями по-очереди рендерятся в неё с учётом своих позиций на карте (естественно большая часть из них отсекается до вызова drawcall). Теперь в главный проход рендеринга карты передаём только этот готовый фреймбуфер.

Физика

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

Для определения нормали к стене в точке (X, Y) нужно произвести такую операцию трижды: для точек (X, Y), (X + 0.25, Y), (X, Y + 0.25):

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

Преимущества и недостатки использования левелмапы по сравнению с тайловым рендером.

  • Рендерится одним вызовом и всё в одном шейдере
  • Легко создавать неровности и плавные переходы, физика при этом не страдает
  • Бесплатный антиалиасинг
  • Не нужно хранить тонну тайлов и думать о том, как их отсечь по камере
  • Что-то ещё
  • Рендерится одним вызовом и всё в одном шейдере, поэтому он довольно тяжелый
  • Мы ограничены в диффузных текстурах, потому что маски смешивания нужно помещать в каналы левелмапы, коих всего 4. Ну и в целом труднее создать разнообразие на карте
  • Что-то ещё

Искусственный интеллект ботов

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

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

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

Тут на картинке в цвете закодировано расстояние, чем темнее, тем дальше

В принципе, тут уже угадываются очертания будущего графа. Следующий подготовительный этап — это вычисление градиента карты расстояний. Где градиент близок к нулю, там и будет вейпоинт.
Градиент карты расстояний в точке (i, j) вычисляется примерно так:

Т.о. для всех пикселей карты выполняем этот код (на самом деле только для проходимых пикселей).

Градиент карты расстояний:

Тут, по традиции, RG-каналы кодируют вектор

Эта карта напоминает горный хребет. Идея состоит в том, чтобы раскидать вейпоинты в точках, где проходит гребень этого хребта. А как найти гребень? Компоненты вектора градиента изменяются от -1 до 1. Гребень хребта будет там, где градиент находится в диапазоне [-α, α], где α — некая константа, подбираемая экспериментальным путём (в данном проекте равна 0.4). Все точки, в которых удовлетворяется данное условие будут первым приближением ко множеству вейпоинтов. Помимо «гребневых» вейпоинтов также добавляются по два вейпоинта для каждого моста (в точках, где мост опирается на землю). Карта с вейпоинтами:

Зелёные точки — это вейпоинты

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

Теперь необходимо соединить эти вейпоинты рёбрами. Перебираем все пары вейпоинтов и соединяем пару ребром тогда, когда оба вейпоинта видимы друг из друга. Для определения видимости используется трассировка: делаем n выборок из карты проходимости вдоль отрезка, соединяющего эти вейпоинты; где n — длина отрезка. Если все выборки дали проходимый пиксель, то соединяем эти два вейпоинта ребром:

Красные линии — это рёбра графа

Получилось слишком много лишних рёбер. Для решения этой проблемы нужно избавиться от треугольников. Как это работает? Возьмём любое ребро с двумя вейпоинтами A и B. Допустим среди соседей A есть вейпоинт C, который в свою очередь является и соседом B. Т.е. образуется треугольник ABC. Самое длинное ребро этого треугольника нужно удалить. То же самое проделываем для всех рёбер:

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

Это окончательный граф. Теперь каждый бот может по нему навигироваться.
ИИ бота состоит из стейтмашин, всего их три. Одна стейтмашина задаёт общее состояние бота, а две другие управляют двумя степенями свободы: ноги (перемещение) и корпус. На выходе ИИ бота выдаёт угол поворота и нажатость его клавиш, т.о. единственное отличие бота от реального игрока — персонаж игрока получает ввод от клавиатуры и мыши, а персонаж бота получает ввод от ИИ. Помимо беготни по графу вейпоинтов бот также умеет реагировать на объекты: валяющиеся пушки и пауэрапы, других ботов и некоторые пули. Причем бот реагирует на эти объекты тогда и только тогда, когда они находятся в зоне его видимости: в пределах его «камеры» (как у игрока) и не отгороженные стенами.

В следующем видео демонстрируется ИИ бота по имени Лягуха в поединке с другими ботами на большой карте:

Алгоритм Время, мс
Генерация текстур частиц 280
Генерация текстур крови 190
Генерация реки лавы 700
Генерация остальной карты 630
Создание графа 210 (720)
Всего: 2010 (2520)

В скобках указано время без использования хеша для вейпоинтов. Этот хеш служит для быстрого поиска вейпоинтов рядом с данным в некоторых алгоритмах построения графа. Без этого хеша в этих алгоритмах перебираются вейпоинты со сложностью O(n 2 ).

Сетевая часть

Сервер написан на node.js с использованием WebSocket. Весь сервер состоит из трёх частей: master-server — http-сервер, раздаёт статику; game-server — соединяется с мастер-сервером и невидим для пользователя, владеет игровыми комнатами; игровая комната — именно к ней коннектится пользователь по веб-сокету, там бегают другие игроки и боты.

При разработке серверной части был применён подход с использованием фейксокетов. Что это такое? Фейксокеты — это два объекта в клиентской части с интерфесами настоящего клиентского и серверного сокета. Они эмулирует работу реальных сокетов. «Клиентский» и «серверный» фейксокет (в кавычках, потому что они оба клиентские, т.е. браузерные) обмениваются данными друг с другом по средством setTimeout (в целях отладки был выбран интервал он же пинг в 30 миллисекунд). Идея в том, что настоящий серверный код можно отдать браузеру, сказать ему, чтобы он работал в режиме фейксокетов. При этом настоящий клиентский код даже не подозревает, что и сервер работает рядом с ним в браузере, он просто посылает данные в сокет (которым является фейксокет) и получает данные с него. Фейксокеты использовались при разработке и отладки серверного кода. Но настоящий online работает через реальные сокеты.

Даже после окончания разработки серверного кода фейксокеты не пропали зря, они остались в проекте и служат в качестве подстраховки, в случае, если игровая комната по каким-либо причинам недоступна. Как это работает? Когда пользователь заходит в игру, то может случиться два варианта: комната свободна и готова принять нового игрока, тогда ему просто отдаётся ip адрес и порт комнаты и он играет онлайн. Второй вариант: если нет мест в комнатах или все комнаты покрешались, тогда мастер-сервер говорит браузеру переходить в режим фейксокетов, также посылает ему весь серверный код (ну не весь, а только код игровой комнаты). И пользователь играет в игру с ботами исключительно локально (ну не повезло ему), при этом пользователь даже не будет знать, что он играет локально (ну это в идиале).

Фейксокеты сыграли огромную роль при разработке серверной части. Т.к. и клиент и сервер запущены в браузере — их очень легко отлаживать, также можно выводить на экран debug-render, т.е. схемотично рендерить объекты именно в тех позициях, где они реально находятся на сервере в данный момент времени. Можно играться с пингом: менять интервал в функции setTimeout, чтобы реализовать всякие предсказания и посмотреть, как они работают на разных пингах (в данном проекте, правда, не было реализовано никаких предсказаний).

  • Легкая отладка — и сервер и клиент находятся в браузере
  • Можно ставить любой пинг и смотреть, как будет играться при разных его значениях
  • debag-render позволяет понять, как объекты выглядят прямо сейчас на сервере
  • В игре должны быть боты, если нет ботов, то фейксокеты бесполезны
  • Сервер должен быть написан на том же языке, что и клиент
  • С ними можно отлаживать разве что логику серверного кода, но вот полную серверную картину (траффик, нагрузка на сеть, разный пинг у разных клиентов. ) они не дадут

Заключение

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

Полный исходный код игры выложен на github.

Руководство по запуску (у вас должен быть установлен node.js).
Если у вас уже установлен bower, то этот шаг пропускаем, иначе:

В корне проекта выполняем две команды:

Если 80 порт у вас занят, то можно так:

В принципе, этого уже достаточно, можно зайти на localhost (ну или localhost:8800, если сменили порт) и там уже будет игра, правда локальная через фейксокеты. Если нужен честный онлайн, то в другой консольке выполняем:

Теперь можно зайти в игру не только с этого компьютера, но и с любого другого, просто указав в адресной строке ip мастер-сервера. Чтобы узнать локальная ли игра, нужно вызвать консоль игры и выполнить команду status. Ещё одна интересная команда spectator nick, где nick — имя игрока, тогда камера переместится на этого игрока. По умолчанию будет сгенерирована большая карта на 110 игроков. Чтобы генерировать другие карты, нужно выполнить:

Здесь не опечатка, количество дефисов именно такое.
Эта команда сгенерирует маленькую карту, которая описывалась в этом посте. Поддерживаются следующие size: 0 — маленькая карта, 1 — средняя и 2 — большая карта (по умолчанию).

Запускать лучше всего в браузере chrome, в других браузерах не гарантируется корректная работа.

Как сделать игру без движка

Completing the CAPTCHA proves you are a human and gives you temporary access to the web property.

What can I do to prevent this in the future?

If you are on a personal connection, like at home, you can run an anti-virus scan on your device to make sure it is not infected with malware.

If you are at an office or shared network, you can ask the network administrator to run a scan across the network looking for misconfigured or infected devices.

Another way to prevent getting this page in the future is to use Privacy Pass. You may need to download version 2.0 now from the Chrome Web Store.

Cloudflare Ray ID: 71ae60a5bb4472fd • Your IP : 82.102.23.104 • Performance & security by Cloudflare

Как сделать мобильную RPG игру в одиночку, без программирования и бюджета

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

Я фанат мобильных игр. Возможно кто помнит, лет десять-пятнадцать назад у всех были кнопочные мобильные телефоны, в которых можно было загружать java приложения. Это могли быть как простенькие аркады, так и вполне серьёзные RPG и стратегические игры. Каждая такая серьёзная игра не переставляла удивлять глубиной и разнообразием. И как только разработчикам удавалось вопреки всем аппаратным и программным ограничениям делать настолько глубокие шедевры?!

Это были игры, в которых ещё не было никакого free-to-play. Каждая новая игра была открытием. Чувствовалось, что разработчики вкладывали душу в свои проекты. И делали свою работу максимально качественной, чтобы игроки покупали их игры снова и снова. С большими надеждами я ждал то время, когда производительность мобильных устройств возрастёт, а вместе с ней увеличится и масштаб игр.

И первое время так и было. Помните первые крупные мобильные игры, которые появлялись на новых смартфонах? Galaxy on Fire 2, серия Asphalt, Modern Combat. Удивительно, но все эти игры являются портами одноименных java-хитов. Время шло вперёд, стали появляться всё более и более мощные устройства. Увеличивались размеры экранов. И вроде бы вот она, золотая эпоха мобильных игр, когда полёт творческой мысли создателей уже больше ничем не ограничен.

Но, к сожалению, с каждым годом игры всё больше и больше переставали быть местом для творчества. Теперь это крупный бизнес, в котором крутятся большие деньги. Больше никаких новых идей, только копирование друг друга. Мне, как ценителю стратегий и RPG стало больно смотреть во что превратились современные игры. Теперь, стратегиями называют всякого рода фермы, которые клонируют геймплей либо Clash of Clans, либо Game of War. На игроков многие разработчики смотрят лишь как на кошелёк с деньгами, который нужно регулярно трясти, чтобы получить больше денег.

А самое большое разочарование, что в современных играх, деньги стали решающим фактором, определяющим успех игрока. Хочешь мощное оружие — только сегодня и только для вас, новый меч «Пожинатель душ 2000» всего за 9.99$. Хочешь улучшить цитадель — жди 999 лет или заплати 299 рубинов(кристаллов/золота/кредитов/алмазов, подчеркнуть нужное) и сможешь построить здание прямо сейчас. Хочешь побеждать, не прикладывая ради этого никаких умственных усилий — заплати 4.99$ и сможешь победить Васю в неравном бою, имея огромное преимущество.

Меня, как истинного фаната тех самых java-игр (с их сложным и глубоким геймплеем), такая ситуация не устраивала в корне. И я уверен, не только меня одного. Прошу прощение за такое длинное предисловие, но это просто необходимо для того, чтобы вы лучше понимали, с какими мыслями и какими идеями я руководствовался при создании своей мобильной игры.

Итак, что у меня было: отсутствие знаний программирования, бюджета на разработку и наличие подлинного желание сделать хорошую игру. Потому, всё (кроме бесплатных звуков и иконок) пришлось делать самостоятельно, что называется ручками. А всё что делал не сам было взято из бесплатных ассетов. Ну, как гласит известная мудрость «мы там, где мы есть, с тем что у нас есть и делаем с этим то, что можем делать». И мы либо делаем что-то с тем, что имеем либо не делаем вообще ничего.

Несколько лет я играл мобильную стратегию под названием Galaxy Legend. Суть игры проста — у нас есть космические корабли, каждый из которых обладает своим набором характеристик плюс специальное умение. Бои проходят автоматически, по особой пошаговой механике. Задача игрока в том, чтобы собрать максимально эффективный флот и придумать эффективную расстановку кораблей, учитывающую особенности вашего флота и вражеского.

Идея замечательная, но как и в любой другой современной мобильной стратегии, здесь был очень сильный донат. За деньги другие игроки могли покупать более крутые корабли и лучше прокачивать любые характеристики. Тактика и стратегия уступала месту тугому кошельку. Играя без доната (или с относительно небольшим донатом) прокачка вашего аккаунта напрямую зависела от влияния рандома. Вам может повезёт и вы получите из ящика заветный корабль. А может и не получите. За N-сумму денег вы получаете корабль гарантированно. И так практически с каждым аспектом игры.

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

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

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

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

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

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

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

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

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

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

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

После недолгих поисков движков, позволяющих делать игры без программирования, выбор пал на Construct 2. Принцип его работы в том, что у нас есть сцена (где мы расставляем объекты), есть сами объекты и есть лист событий, в котором мы вручную прописываем события (состоящие из условий и действий), т.е. взаимодействие объектов друг с другом. События можно объединять в группы, можно делать подсобытия с дополнительными условиями. Объектам можно задавать свойства, поведение, переменные и т.д. По-сути, можно реализовать абсолютно любую игровую механику (в рамках 2D игры). Всё упирается в вашу фантазию и умение решать логические задачи.

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

На своей практике я так ни разу и не столкнулся с какими-либо ограничениями, когда бы я ощущал необходимость программирования. Более того, по моему глубокому убеждению, качество готовой игры зависит не от навороченности движка, а от прямоты рук разработчика. Движок — это не более чем инструмент. Игра сама себя не сделает, какой бы крутой движок вы не использовали. А конечному потребителю (игроку) вообще не важно на каком движке вы сделали игру.

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

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

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

От чего пришлось отказаться (основное):

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

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

2. Открытый мир и сложные игровые режимы. Чтобы игровой процесс был ещё более масштабным мне хотелось добавить в него т.н. «глобальный геймплей». Открытый мир, фракции, торговля, война корпораций и чтобы игрок во всём этом активно участвовал.

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

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

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

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

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

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

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

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

1. Делайте игру для себя. Это моё главное правило. Если для вас создание игр — это, прежде всего, творчество, то делайте игру такой, в которую вы бы сами с огромным удовольствием играли. Не пытайтесь угодить всем, ведь люди все разные и вкусы у всех сильно отличаются. Одни люди предпочитают мясо, другие капусту. Если вы будете делать голубцы, то вероятно, ваша игра может не понравится ни тем, ни другим. Со временем вашу игру найдут люди со схожими игровыми предпочтениями. И это будет ваша самая преданная аудитория.

2. Научитесь адекватно смотреть на свои возможности. Если вы хотите сделать убийцу World of Warcraft, то вам нужно понимать, что у вас нет такого количества опыта, времени и денег, необходимых для создания AAA-игры. Такие игры создаются годами командами в несколько десятков, а то и сотни человек. И у каждого из них есть своя профильная задача: кто-то занимается боевой анимацией, кто-то текстурирует растительность, а кто-то программирует игровую физику. Одному человеку и жизни не хватит, чтобы потянуть всё это.

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

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

Все таки не надо путать «без программирования» и «без написания кода».

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

У меня есть несколько знакомых, которые хотели с наскоку сделать игру в Construct или Game Maker’e, но очень быстро обломились, потому что думали, что там «не надо программировать». Оказалось программировать все таки надо, а вот код писать нет.

Пишу просто чтобы не вводить новичков в заблуждение. За то что поделились опытом — респект.

Более того, писать код проще и быстрее, чем соединять лоигческие бооки в интерфейсе движка )

автор — ты молодец! добавь картинок людей в игру с диалогами типа тутора и пр.
а на иконку игры — даму с бюстом от 3го размера — установки попрут. )

Орущую во весь рот даму с бюстом от 3го размера*

Отличный пост. Спасибо, что поделились опытом. Прада вот это, имхо, неверно, никогда не встречался с таким «стереотипом»

Почему-то есть стереотип, что игры без программирования обязательно используют какие-то шаблоны

Достаточно зайти на форум gamedev.ru для ознакомления. Сейчас оно, конечно, по счастью отмирает, но раньше было довольно много ада с хейтом, когда кто-то показывал свою поделку с чем-нибудь "изкоробочным". По типу: "Да у тебя даже шейдеры дефолтные, значит это не игра и ты её не делал".

Респект и окупаемости инди-разработчикам!
4.5 звезды игру это отличнейший результат.

Вы, кстати, посчитали, при каком количестве скачиваний и среднем времени в игре на скачивание наступит та самая условная окупаемость?

Когда будет что рассказать буду рад поделиться опытом и напишу отдельную статью на эту тему.

Спасибо за советы!

Что по деньгам то?

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

Сотня инсталлов, 18 оценок, все с 8 февраля. Каких то доходов серьезных не будет и на сотне тысяч инсталлов.

Ситуация которая сейчас сложилась в мобильных играх это следствие большой большой конкуренции(проблема видимости продукта), темпа реальной жизни (сессионность, ускорение таймеров), необходимости жесткой монетизации (отсюда f2p) и людской психологии( стремление быть лучше чем другие за счёт доната).
Желаю удачи автору, боюсь правда его ждёт разочарование. Уж очень мал шанс того что игра сможет получить достаточно траффика в конкуренции с 200ым клоном того же Game of War.

На скрине java игры: Revival, Первобытные войны и HTBG. Современных аналогов, к сожалению, на Андроид нет..

Попробуй серии Advance Wars и Fire Emblem, они выходили на GBA. Чтобы сейчас в них поиграть, достаточно установить на телефон эмулятор (в плеймаркете их есть) и скачать rom-файлы этих игр с любого сайта в выдаче гугла =)

На iOS игра не планируется?

На ближайшее будущее не планируется..

Автор молоток!
Где этот финансовый чувак, который хочет в геймдев?

Люблю такие истории. Рад, что тебе довелось довести дело до конца)

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

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

Да, пожалуй, мультиплеер — это единственное исключение. Средства движка хоть и позволяют сделать онлайн в игре, но защита против взлома получается слабая. Хотя, не исключаю, что я ещё не до конца во всём разобрался. Знание кода, конечно, огромный плюс. Если у человека это знание есть, то жизнь становится гораздо легче)

Интересно было прочитать пост, спасибо. Автоматический апвоут за игру на C2 🙂 Сам на нём же сижу (пилю второй проект). А так, я бы сказал, что услуги художника вам, возможно, всё же не помешают (ну или в библиотеках платных/бесплатных ассетов покопаться). Сейчас графика выглядит неплохо, но немного скучновато чтоли (на мой вкус). Самый удобный вариант был бы нанять художника и попросить его перерисовать спрайты покрасивше, так сказать. Можно даже ему дать исходники, чтобы переделанные варианты были таких же габаритов. А потом просто все спрайты заменить в движке и дело с концом. И еще, некоторая информация написана довольно мелким шрифтом. Думаю, неплохо было бы с этим что-то сделать, чтобы людЯм зрение не сажать) P.S. Как сказал один из комментаторов, это всё же программирование. Просто оно называется визуальным. Пусть в подобном движке и условно "легче" делать игры, но при этом нужно это всё заставить работать самым эффективным образом, особенно если релизиться на мобильных устройствах. P.S.S. Если нужно, могу кинуть инвайт в чат в Дискорде, где сидят довольно много разработчиков и там всегда можно получить фидбэк или совет (при условии, что вы не будете злоупотреблять этой возможностью, конечно). Там, правда, только английский в ходу, но если с этим нет проблем, то велкам)

Нанять художника — это отличная идея, но пока на это нет денег 🙂 Игра всё же нишевая, и с моей стороны было бы наивным рассчитывать на огромную популярность (а следовательно и доход). За конструктивный отзыв спасибо!

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

Впрочем, возможно, идеальным вариантом было бы совмещение обеих механик. Захотел — накликал, захотел — подождал.

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

10 программ и конструкторов для создания мобильных игр на Android и iOS

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

Реально ли создать игру без навыков программирования?

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

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

Два популярных конструктора мобильных игр с навыками программирования

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

Unity

Арбитражникам он больше знаком как in-app сеть. Однако Unity Technologies — это, прежде всего, компания по разработке видеоигр, Но кроме игр и рекламной сети, у них есть движки для разработки приложений, в том числе, и игровых. Среди игр, которые создаются на программах и конструкторах самая большая часть сделана именно на Unity.

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

10 программ и конструкторов для создания мобильных игр на Android и iOS

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

  • под Android, iOS, Windows Phone 10, Blackberry и более 25 других операционных систем;
  • рассчитанные на консоли PS4 PRO, Xbox One S;
  • с графикой на программах 3ds Max, Maya, Blender, CINEMA 4D, Softimage и почти любых других.

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

Из минусов платформы:

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

Unity наиболее подходит для разработки 3D игр, хотя и 2D получаются качественно. На этом движке разработаны:

  • Lara Croft GO;
  • Angry Birds 2;
  • Pokemon GO;
  • Alto’s Adventure;
  • Hearthstone.

Цена: Personal — бесплатно, Plus — $399, Pro — $1 800, а Enterprise — $4 000 в год.

Почему Unity попал в топ? Самый многофункциональный и популярный движок. Лучше всего подходит для абсолютного большинства игровых проектов 3D и для игр с наиболее сложным геймплеем

Defold

Кроссплатформенный движок, при помощи которого можно делать разработку на HTML5. Кстати, поэтому является одним из наиболее простых движков, требующих программирования. В нем создают 2D и 3D-игры.

10 программ и конструкторов для создания мобильных игр на Android и iOS

Работа в визуальной части редактора Defold

К плюсам движка можно отнести:

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

Минусами движка являются:

  • более ограниченные (относительно других движков) возможности по работе с объектами 3D;
  • сложноватый интерфейс, к которому необходимо привыкать.

На движке Defold разработаны игры:

  • Plague Lords
  • Craftomation 101
  • BoxRob
  • Cat Stories: New Year
  • Solitaire Towers Tournaments

Еще одно достоинство — движок абсолютно бесплатен. Сообщество призывает производить добровольные пожертвования через официальный сайт.

Почему Defold попал в топ? Является одним из наиболее популярных бесплатных движков, на котором можно создавать как 2D, так и 3D игры.

Топ конструкторов мобильных игр без навыков программирования

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

Unreal Engine

Этот движок от компании Epic Games один из наиболее старых — первую игру на нем выпустили еще в 1998 году. В рейтинге Steam он занимает второе место по популярности.

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

10 программ и конструкторов для создания мобильных игр на Android и iOS

Шутер Unreal Championship 2 на движке Unreal Engine 2X

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

  • большое количество бесплатных плагинов;
  • встроенная оптимизация игр под мобильные ОС;
  • сравнительно небольшие требования к компьютеру разработчика;

Из недостатков стоит отметить:

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

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

  • Daylight;
  • Dead Island 2;
  • Space Hulk;
  • Deathwing;
  • Fable Legends;
  • Tekken 7.

Почему Unreal Engine попал в топ? Потому что это лучшее решение среди движков для 3D-игр, которые не требуют навыков программирования и к тому же бесплатны.

Construct 3

Зарекомендовал себя как движок для простых 2D-игр и идеальное решение для тех, кто делает первые шаги в разработк игр. Хотя Construct 3 является HTML5-движком, он ориентирован именно на непрограммистов, которые не разбираются в кодировании.

Кроме простоты и доступности, Construct 3 отличается следующими достоинствами:

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

Работа через браузер одновременно является и минусом, так как для разработки требуется постоянное подключение к интернету. Другими недостатками являются:

  • неполная техническая документация;
  • ограниченность простой графикой и геймплеем.

Для создания простых незамороченных игровых приложений сложно найти более подходящий движок. На Construct 3 созданы такие игры, как:

  • Beast Attack;
  • Ignatius;
  • Lunar Mission;
  • Rescuers;
  • Artillerists Needs Your Help.

Цена: персональный тариф — $69, бизнес-тариф Startup — $92, а BUSINESS LICENSES $373 в год.

Почему Construct 3 попал в топ? Наиболее простой в освоении движок для максимально оперативной разработки (наиболее простые игры создаются за час, а наиболее сложные — за неделю). Не требователен к мощности компьютера и не требует установки.

GameMaker Studio

Его можно назвать более продвинутым аналогом предыдущего движка. Он также заточен под создание 2D игр, однако имеет более продвинутый функционал. На нем можно делать игры с большей детализацией и более сложной графикой и геймплеем. Желающие работать с программной частью могут писать код на языке GML.

10 программ и конструкторов для создания мобильных игр на Android и iOS

К плюсам движка относятся:

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

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

На этом движке разработаны такие игры, как:

  • Sudoku Scramble;
  • Bubbles the cat;
  • Downwell;
  • Crashlands;
  • Iron Snout.

Цена: единоразовый платеж в $400, чтобы получить лицензию на публикацию игр.

Почему GameMaker попал в топ? При прочих достоинствах у движка русскоязычный официальный сайт и сообщество.

BuildBox

Считается конструктором для игровых энтузиастов — миссией его создателя было предоставить возможность каждому игровому энтузиасту дать возможность разрабатывать игры. Долгое время работал только на создание 2D-игр, однако последняя версия позволяет создавать и 3D.

10 программ и конструкторов для создания мобильных игр на Android и iOS

Главной фишкой движка является возможность моделирования игры, после чего её можно очень гибко настраивать и редактировать (меняя персонажей, ландшафт, оружие и т.д.). Все это выполняется в визуальном редакторе без программирования.

Другими преимуществами являются:

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

К минусам можно отнести:

  • в бесплатной версии отсутствие интеграция с AdMob, а при монетизации игры через внутреннюю in-app сеть, сервис забирает себе 70% дохода;
  • отсутствие искусственного интеллекта,

Цена: кроме бесплатной версии, есть месячная за $20 с ограниченными возможностями и годовая за $500 с полными возможностями.

Почему BuildBox попал в топ? Он является самым самодостаточным (при этом несложным) движком — многие игры можно разработать на нем, даже не прибегая к сторонним сервисам для создания графики и других игровых элементов.

Топ бесплатных конструкторов мобильных игр

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

Panda 3D

Сейчас его можно назвать движком “на общественных началах”, хотя разработала его компания Disney, а поддержкой занимается Carnegie Mellon University. Сейчас поддержкой и развитием движка по факту занимается сообщество энтузиастов. Лицензия у проги свободная, поэтому каждый волен использовать и редактировать движок в своих целях, не выплачивая никаких отчислений.

Как явствует из названия, подходит Panda для 3D игр, причем, с обилием сложных игровых элементов и искусственным интеллектом.

К достоинствам движка относятся:

  • возможность интегрировать разработки на нем в другие движки;
  • невысокая сложность разработки, доступная новичкам;
  • абсолютная бесплатность — ни на каком этапе движок не требует оплаты.
  • Panda 3D — не конструктор игр, а framework. Поэтому для работы в нем придется кодить;
  • рендеринг графики сильно уступает современным 3D движкам вроде Unity Unreal Engine, поэтому визуал игр получается на уровне 2000-2010 годов.

На этом движке разработаны такие игры, как:

  • Toontown Online (сейчас закрылась);
  • Pirates of the Caribbean Online (закрылась);
  • Ghost Pirates of Vooju Island;
  • A Vampyre Story.

Почему Panda 3D попал в топ? Несмотря на отставание в плане графики, этот бесплатный фреймворк отлично подходит арбитражникам. Ведь зачастую игры и приложения под арбитраж не требовательны в плане графики.

LibGDX

Является лучшим бесплатным решением для профессионалов. На нем разрабатывают и 2В и 3В-игры. Он бесплатен, требует навыков программирования на Java и позволяет создавать максимально качественный геймплей.

10 программ и конструкторов для создания мобильных игр на Android и iOS

Интерфейс LibGDX

К плюсам можно отнести:

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

Минусами движка являются:

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

На LibGDX разработаны такие игры, как:

  • Paperama;
  • Construction City;
  • Shipwrecked: Pearl Cove Island;
  • Stone Pillar;
  • Lovecraft Quest.

Почему LibGDX попал в топ? Среди бесплатных движков именно он позволяет реализовать наиболее сложную игровую механику.

SpriteKit для iOS

Это не просто движок для “игр на яблочную технику” — это разработка самой компании Apple, чтобы создатели приложений могли готовить продукт, максимально адаптированный под операционные системы iOS и MacOS.SpriteKit также поддерживается в tvOS, watchOS и хорошо интегрируется с такими платформами, как GameplayKit и SceneKit.

SpriteKit отличный вариант не только для команд, но и для инди-разработчиков, потому что практически все функции движка доступны на бесплатном тарифе. Другое достоинство движка — почти полная гарантия, что созданная на нем игра будет исправно работать на платформах Apple, ведь именно эта компания и создавала движок. Кроме того, можно использовать другие API iOS (например, iAd, In-App Purchases и т. д.), не полагаясь на сторонние плагины. Игры на этом движке прощу проходят модерацию в App Store (при прочих равных условиях).

Главный минус движка — ограниченность 2D-играми (учитывая, что движок себя и позиционирует как платформа для 2D-игр на iOS минусом это можно считать лишь условно). Другой малоприятный момент — совсем без программирования не получится. Разработка игр сопряжена с работой на языке Swift 2.2 и для этого придется скачать и установить пакет программных инструментов Xcode 7.3. Кроме того, редактор игровых сцен намного проще и примитивнее, чем у аналогичных движков.

10 программ и конструкторов для создания мобильных игр на Android и iOS

Пример машинки, отрисованной в SpriteKit

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

Почему SpriteKit попал в топ? Это авторская разработка компании Apple и лучшее специализированное решение для iOS, причем, бесплатное.

Godot

Это кроссплатформенный движок для 2D и 3D-разработки. Изначально он был внутренним движком для нескольких игровых компаний. Однако впоследствии его выпустили в публичный релиз под свободной лицензией.

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

10 программ и конструкторов для создания мобильных игр на Android и iOS

К плюсам движка относятся:

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

К минусам можно отнести:

  • игры 3D все же уступают тем, которые разработаны на Unity или Unreal;
  • проблемы с адаптацией игр под консоли.

На движке Godot разработали такие игры, как:

  • El Asombroso Show Zamba;
  • Dog Mendonça & Pizza Boy;
  • Anthill;
  • Running Nose;
  • Project Carnival.

Почему Godot попал в топ? Для разработки многих игр достаточно одного этого движка и ничего более.

Чем эти платформы полезны для арбитражника?

Отлив трафика на мобильные приложения — тренд арбитража последних лет. Ведь, во-первых, с мобильными приложениями проще обходить блокировки Facebook, Google, Tik Tok и других “требовательных” рекламных сетей. Наличие игры в сторах для этих сетей знак того, что ее можно допустить к рекламе. Во-вторых, через приложения можно добывать условно бесплатный трафик с поиска в App Store и Google Play..В-третьих, мобильные прилы — универсальный инструмент: с их помощью можно монетизировать не только онлайн-игры, казино, но также и дейтинг, криптовертикаль, подписочные офферы и даже товарку.

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

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

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

Заключение

Движки для создания игровых приложений — отличное подспорье в арбитраже трафика. Создавая на них игры, можно значительно повысить возможности по монетизации трафика. Кроме того, можно сделать собственную игру, как рекламодатель оплачивая ее установки арбитражникам по модели CPI. Благо, конструкторы располагают возможностями по приему платежей и интеграции с сетями In App.

Добавить комментарий

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