Создание игр для мобильных устройств может быть не только интересным, но и весьма прибыльным занятием, которое способно обеспечить весьма ощутимый заработок для разработчика. У человека, интересующегося темой создания игр на Android в голове возникает множество вопросов и еще больше — сомнений в своих силах, ведь, для разработки игр нужны определенные знания, навыки и умения: в первую очередь, нужно знать языки программирования.
Из-за своих опасений и сомнений, люди чаще всего отказываются от реализации своих идей, а зря, ведь создание игр на Android не обязательно должно быть сложным. В современном мире множество процессов автоматизируется, чтобы облегчить жизнь человеку. Для примера, этот сайт создан с помощью системы управления содержимым, а если проще – то с помощью программы-конструктора. И для его запуска в работу не потребовались знания HTML, CSS, JS и PHP.
Для разработки игр также есть специализированные движки, которые помогут упростить множество задач. И в этой статье мы рассмотрим лучшие программы для создания игр на Android.
Как создать игру на телефоне за 20 минут?
Движки для создания игр на Android
Лучшие движки для создания игр на Android
Unity 3D – программа для создания игр и приложений
Unity 3D – межплатформенная среда разработки компьютерных игр. Программа позволяет создавать игры и приложения под множество платформ: компьютеры, игровые консоли, мобильные устройства, а также под более чем 20 популярных операционных систем: Android, Windows, Mac OS, IOS и др. Визуальная среда разработки, модульная система компонентов и межплатформенная поддержка делает создание игр простым и удобным.
В Unity 3D доступен большой набор инструментов, с помощью которых можно создавать свои собственные игры любых жанров: шутеры, экшены, RPG, гонки, стратегии, симуляторы и др.
На Unity 3D созданы тысячи игр и приложений. Она пользуется огромное популярностью среди разработчиков. В качестве примера того, какие игры можно создать для Android с помощью Unity 3D, можно привести Dead Trigger и Tyrant Unleashed.
Если планируете постигать азы игростроения, то стоит сделать свой выбор именно в пользу Unity 3D. Эта программа идеально подходит для создания игр на Android.
Некоторые разработчики выкладывают в открытый доступ библиотеки и наборы инструментов для Unity, так что пользователь может абсолютно бесплатно получить доступ к полезному контенту: моделям персонажей, ландшафтам, текстурам, звукам и прочему.
Скачать программу для создания игр на Android можно по ссылке:
Game Maker – программа для создания игр
Game Maker – движок для создания игр на Android и других OS, который будет крайне полезен новичкам, постигающим игростроение с нуля, так как поможет разобраться с основами, которые в дальнейшем пригодятся при работе в сфере разработки игр.
Game Maker представляет из себя визуальный конструктор игр, где разработчик конструирует события и реакции в редакторе, а не с помощью языков программирования. То есть можно создать полноценную игру для Android без знания языка программирования. Но и возможность добавления кода также присутствует, что делает данный движок гибким, а значит он подойдет и для более продвинутых пользователей.
Game Maker отлично подходит для создания пиксельных 2D игр на Android.
Скачать программу для создания игр на Android на русском языке можно по ссылке:
Unreal Engine 4 — программа для создания игр
Unreal Engine 4 – мощная бесплатная платформа для создания 3D и 2D игр. Отлично подходит как для разработки игр на ПК, так и для мобильных устройств: телефонов, планшетов под управлением Android и IOS. Имеет локализацию на русском языке.
На основе предыдущей версии движка — Unreal Engine 3 были созданы такие игры, как: Batman: Arkham City, Mass Effect, Mortal Kombat.
Видео-обзор основных возможностей:
Скачать программу для создания игр на Android на русском языке можно по ссылке:
Как самому создать игру на Android с нуля
Мы рассмотрели краткий обзор программ, в которых можно создать игры на Android, но где же взять знания для комфортного использования данного софта?
Конечно же на популярном видеохостинге Youtube!
Уроки Unity3D №1 Уроки Unity3D №2 |
Уроки Game Maker №1 Уроки Game Maker №2 |
Уроки Unreal Engine 4 №1 Уроки Unreal Engine 4 №2 |
Приложения для создания игр на Android
В предыдущей части статьи мы рассмотрели мощные инструменты для разработки игр. А теперь разберем несколько интересных приложений для создания простых игр на Android.
Struckd 3D – трехмерный игровой конструктор с функцией drag-and-drop, с помощью которого можно создавать целые миры без знаний программирования.
Нарисуй Свою Игру – интересное Андроид приложение, которое позволяет сканировать нарисованные на бумаге чертеж и превращать его в игру.
Не нашли ответ? Тогда воспользуйтесь формой поиска:
Источник: urfix.ru
Способы создания игры на Android
Для операционной системы Android выпускается большое количество игр практически каждый день. Их производством занимаются не только крупные компании. Сложности проектов бывают разные, поэтому для их создания требуются специальные навыки и наличие дополнительного программного обеспечения. Самостоятельно работать над приложением можно, однако следует приложить большие усилия и изучить определенные материалы.
Создаем игру на Android
Всего мы выделили три доступных метода, которые подойдут обычному пользователю для создания игры. Они имеют разный уровень сложности, поэтому сначала мы расскажем о самом простом, а в конце затронем трудный, однако наиболее обширный способ, позволяющий разрабатывать приложения любого жанра и масштабности.
Способ 1: Онлайн-сервисы
На просторах интернета находится множество вспомогательных сервисов, где присутствуют заранее созданные шаблоны игр по жанрам. Пользователю же нужно только добавить изображения, настроить персонажей, мир и дополнительные опции. Осуществляется такой метод без каких-либо знаний в области разработки и программирования. Давайте разберем процесс на примере сайта AppsGeyser:
- Перейдите на главную страницу сервиса по ссылке выше или через поиск в любом удобном браузере.
- Нажмите на кнопку «Создать».
- Выберите жанр проекта, который хотите сделать. Мы рассмотрим обычный раннер.











На этом процесс создания завершен. Игра доступна к скачиванию и работает корректно, если все изображения и дополнительные опции были заданы верно. Делитесь ею с друзьями через Плей Маркет или отправляйте в виде файла.
Способ 2: Программы для создания игр
Существует ряд программ, позволяющий создавать игры с помощью встроенных инструментов и применения скриптов, написанных на поддерживаемых языках программирования. Конечно, качественное приложение получится только в том случае, если все элементы были тщательно проработаны, а для этого потребуется навык написания кодов. Однако в интернете находится большое количество полезных шаблонов — примените их и вам останется только отредактировать некоторые параметры. Со списком такого софта знакомьтесь в другой нашей статье.
Туториал: Создание простейшей 2D игры на андроид
Этот туториал предназначен в первую очередь для новичков в разработке под андроид, но может быть будет полезен и более опытным разработчикам. Тут рассказано как создать простейшую 2D игру на анроиде без использования каких-либо игровых движков. Для этого я использовал Android Studio, но можно использовать любую другую соответствующее настроенную среду разработки.
Шаг 1. Придумываем идею игры
Для примера возьмём довольно простую идею:
Внизу экрана — космический корабль. Он может двигаться влево и вправо по нажатию соответствующих кнопок. Сверху вертикально вниз движутся астероиды. Они появляются по всей ширине экрана и двигаются с разной скоростью. Корабль должен уворачиваться от метеоритов как можно дольше.
Если метеорит попадает в него — игра окончена.
Шаг 2. Создаём проект
В Android Studio в верхнем меню выбираем File → New → New Project.
Тут вводим название приложения, домен и путь. Нажимаем Next.
Тут можно ввести версию андроид. Также можно выбрать андроид часы и телевизор. Но я не уверен что наше приложение на всём этом будет работать. Так что лучше введите всё как на скриншоте. Нажимаем Next.
Тут обязательно выбираем Empty Activity. И жмём Next.
Тут оставляем всё как есть и жмём Finish. Итак проект создан. Переходим ко третьему шагу.
Шаг 3. Добавляем картинки
Скачиваем архив с картинками и распаковываем его.
Находим папку drawable и копируем туда картинки.
Позже они нам понадобятся.
Шаг 4. Создаём layout
Находим activity_main.xml, открываем вкладку Text и вставляем туда это:
На вкладке Design видно как наш layout будет выглядеть.
Сверху поле в котором будет сама игра, а снизу кнопки управления Left и Right. Про layout можно написать отдельную статью, и не одну. Я не буду на этом подробно останавливаться. Про это можно почитать тут.
Шаг 5. Редактируем MainActivity класс
В первую очередь в определение класса добавляем implements View.OnTouchListener. Определение класса теперь будет таким:
public class MainActivity extends AppCompatActivity implements View.OnTouchListener
Добавим в класс нужные нам статические переменные (переменные класса):
public static boolean isLeftPressed = false; // нажата левая кнопка public static boolean isRightPressed = false; // нажата правая кнопка
В процедуру protected void onCreate(Bundle savedInstanceState) добавляем строки:
GameView gameView = new GameView(this); // создаём gameView LinearLayout gameLayout = (LinearLayout) findViewById(R.id.gameLayout); // находим gameLayout gameLayout.addView(gameView); // и добавляем в него gameView Button leftButton = (Button) findViewById(R.id.leftButton); // находим кнопки Button rightButton = (Button) findViewById(R.id.rightButton); leftButton.setOnTouchListener(this); // и добавляем этот класс как слушателя (при нажатии сработает onTouch) rightButton.setOnTouchListener(this);
Классы LinearLayout, Button и т.д. подсвечены красным потому что ещё не добавлены в Import.
Чтобы добавить в Import и убрать красную подсветку нужно для каждого нажать Alt+Enter.
GameView будет подсвечено красным потому-что этого класса ещё нет. Мы создадим его позже.
Теперь добавляем процедуру:
public boolean onTouch(View button, MotionEvent motion) < switch(button.getId()) < // определяем какая кнопка case R.id.leftButton: switch (motion.getAction()) < // определяем нажата или отпущена case MotionEvent.ACTION_DOWN: isLeftPressed = true; break; case MotionEvent.ACTION_UP: isLeftPressed = false; break; >break; case R.id.rightButton: switch (motion.getAction()) < // определяем нажата или отпущена case MotionEvent.ACTION_DOWN: isRightPressed = true; break; case MotionEvent.ACTION_UP: isRightPressed = false; break; >break; > return true; >
Если кто-то запутался ― вот так в результате должен выглядеть MainActivity класс:
Итак, класс MainActivity готов! В нём инициирован ещё не созданный класс GameView. И когда нажата левая кнопка — статическая переменная isLeftPressed = true, а когда правая — isRightPressed = true. Это в общем то и всё что он делает.
Для начала сделаем чтобы на экране отображался космический корабль, и чтобы он двигался по нажатию управляющих кнопок. Астероиды оставим на потом.
Шаг 6. Создаём класс GameView
Теперь наконец-то создадим тот самый недостающий класс GameView. Итак приступим. В определение класса добавим extends SurfaceView implements Runnable. Мобильные устройства имею разные разрешения экрана. Это может быть старенький маленький телефон с разрешением 480×800, или большой планшет 1800×2560.
Для того чтобы игра выглядела на всех устройствах одинаково я поделил экран на 20 частей по горизонтали и 28 по вертикали. Полученную единицу измерения я назвал юнит. Можно выбрать и другие числа. Главное чтобы отношение между ними примерно сохранялось, иначе изображение будет вытянутым или сжатым.
public static int maxX = 20; // размер по горизонтали public static int maxY = 28; // размер по вертикали public static float unitW = 0; // пикселей в юните по горизонтали public static float unitH = 0; // пикселей в юните по вертикали
unitW и unitW мы вычислим позже. Также нам понадобятся и другие переменные:
private boolean firstTime = true; private boolean gameRunning = true; private Ship ship; private Thread gameThread = null; private Paint paint; private Canvas canvas; private SurfaceHolder surfaceHolder;
Конструктор будет таким:
public GameView(Context context) < super(context); //инициализируем обьекты для рисования surfaceHolder = getHolder(); paint = new Paint(); // инициализируем поток gameThread = new Thread(this); gameThread.start(); >
Метод run() будет содержать бесконечный цикл. В начале цикла выполняется метод update()
который будет вычислять новые координаты корабля. Потом метод draw() рисует корабль на экране. И в конце метод control() сделает паузу на 17 миллисекунд. Через 17 миллисекунд run() запустится снова. И так до пока переменная gameRunning == true. Вот эти методы:
Обратите внимание на инициализацию при первом запуске. Там мы вычисляем количество пикселей в юните и добавляем корабль. Корабль мы ещё не создали. Но прежде мы создадим его родительский класс.
Шаг 7. Создаём класс SpaceBody
Он будет родительским для класса Ship (космический корабль) и Asteroid (астероид). В нём будут содержаться все переменные и методы общие для этих двух классов. Добавляем переменные:
protected float x; // координаты protected float y; protected float size; // размер protected float speed; // скорость protected int bitmapId; // id картинки protected Bitmap bitmap; // картинка
void init(Context context) < // сжимаем картинку до нужных размеров Bitmap cBitmap = BitmapFactory.decodeResource(context.getResources(), bitmapId); bitmap = Bitmap.createScaledBitmap( cBitmap, (int)(size * GameView.unitW), (int)(size * GameView.unitH), false); cBitmap.recycle(); >void update() < // тут будут вычисляться новые координаты >void drow(Paint paint, Canvas canvas)< // рисуем картинку canvas.drawBitmap(bitmap, x*GameView.unitW, y*GameView.unitH, paint); >
Шаг 8. Создаём класс Ship
Теперь создадим класс Ship (космический корабль). Он наследует класс SpaceBody поэтому в определение класа добавим extends SpaceBody.
public Ship(Context context) < bitmapId = R.drawable.ship; // определяем начальные параметры size = 5; x=7; y=GameView.maxY — size — 1; speed = (float) 0.2; init(context); // инициализируем корабль >
и переопределим метод update()
На этом космический корабль готов! Всё компилируем и запускаем. На экране должен появиться космический корабль. При нажатии на кнопки он должен двигаться вправо и влево. Теперь добавляем сыплющиеся сверху астероиды.
При столкновении с кораблём игра заканчивается.
Шаг 9. Создаём класс Asteroid
Добавим класс Asteroid (астероид). Он тоже наследует класс SpaceBody поэтому в определение класса добавим extends SpaceBody.
Добавим нужные нам переменные:
private int radius = 2; // радиус private float minSpeed = (float) 0.1; // минимальная скорость private float maxSpeed = (float) 0.5; // максимальная скорость
Астероид должен появляться в случайной точке вверху экрана и лететь вниз с случайной скоростью. Для этого x и speed задаются при помощи генератора случайных чисел в его конструкторе.
public Asteroid(Context context)
Астероид должен двигаться с определённой скорость вертикально вниз. Поэтому в методе update() прибавляем к координате x скорость.
Так же нам нужен будет метод определяющий столкнулся ли астероид с кораблём.
public boolean isCollision(float shipX, float shipY, float shipSize) < return !(((x+size) < shipX)||(x >(shipX+shipSize))||((y+size) < shipY)||(y >(shipY+shipSize))); >
Рассмотрим его поподробнее. Для простоты считаем корабль и астероид квадратами. Тут я пошёл от противного. То есть определяю когда квадраты НЕ пересекаются.
((x+size) < shipX) — корабль слева от астероида.
(x > (shipX+shipSize)) — корабль справа от астероида.
((y+size) < shipY) — корабль сверху астероида.
(y > (shipY+shipSize)) — корабль снизу астероида.
Между этими четырьмя выражениями стоит || (или). То есть если хоть одно выражение правдиво (а это значит что квадраты НЕ пересекаются) — результирующие тоже правдиво.
Всё это выражение я инвертирую знаком!. В результате метод возвращает true когда квадраты пересекаются. Что нам и надо.
Про определение пересечения более сложных фигур можно почитать тут.
Шаг 10. Добавляем астероиды в GameView
В GameView добавляем переменные:
private ArrayList asteroids = new ArrayList<>(); // тут будут харанится астероиды private final int ASTEROID_INTERVAL = 50; // время через которое появляются астероиды (в итерациях) private int currentTime = 0;
также добавляем 2 метода:
private void checkCollision() < // перебираем все астероиды и проверяем не касается ли один из них корабля for (Asteroid asteroid : asteroids) < if(asteroid.isCollision(ship.x, ship.y, ship.size))< // игрок проиграл gameRunning = false; // останавливаем игру // TODO добавить анимацию взрыва >> > private void checkIfNewAsteroid()< // каждые 50 итераций добавляем новый астероид if(currentTime >= ASTEROID_INTERVAL)< Asteroid asteroid = new Asteroid(getContext()); asteroids.add(asteroid); currentTime = 0; >else < currentTime ++; >>
И в методе run() добавляем вызовы этих методов перед вызовоом control().
Далее в методе update() добавляем цикл который перебирает все астероиды и вызывает у них метод update().
private void update() < if(!firstTime) < ship.update(); for (Asteroid asteroid : asteroids) < asteroid.update(); >> >
Такой же цикл добавляем и в метод draw().
private void draw() < if (surfaceHolder.getSurface().isValid()) < //проверяем валидный ли surface if(firstTime)< // инициализация при первом запуске firstTime = false; unitW = surfaceHolder.getSurfaceFrame().width()/maxX; // вычисляем число пикселей в юните unitH = surfaceHolder.getSurfaceFrame().height()/maxY; ship = new Ship(getContext()); // добавляем корабль >canvas = surfaceHolder.lockCanvas(); // закрываем canvas canvas.drawColor(Color.BLACK); // заполняем фон чёрным ship.drow(paint, canvas); // рисуем корабль for(Asteroid asteroid: asteroids) < // рисуем астероиды asteroid.drow(paint, canvas); >surfaceHolder.unlockCanvasAndPost(canvas); // открываем canvas > >
Вот и всё! Простейшая 2D игра готова. Компилируем, запускаем и смотрим что получилось!
Если кто-то запутался или что-то не работает можно скачать исходник.
Игра, конечно, примитивна. Но её можно усовершенствовать, добавив новые функции. В первую очередь следует реализовать удаление вылетевших за пределы экрана астероидов. Можно сделать чтобы корабль мог стрелять в астероиды, чтобы игра постепенно ускорялась, добавить таймер, таблицу рекордов и прочее. Если это будет вам интересно — напишу продолжение, где всё это опишу.
На этом всё. Пишите отзывы, вопросы, интересующие вас темы для продолжения.
- Разработка игр
- Разработка под Android
Источник: habr.com