Создание игры на Android

Представляем вам курс по созданию мобильной 2D игры на Андроид. Игра будет создана на движке Unity. В игре мы реализуем множество концепций игрового движка и познакомимся с разработкой игр на нем.
Видеоурок
Ссылки из видео:
- Скачать игру на Android ;
- Скачать игру на IOS .
Unity – это движок, на котором строится большая часть современных игр на разных платформах. Посредством движка реально создавать игры, ориентированные на запуск на компьютерах (Windows, Linux, MacOS), мобильных телефонах, планшетных компьютерах (Android, iOS) и даже игровых приставках PlayStation, Xbox, Nintendo.
Как создавать игры в Unity?
В основе Unity лежит компонентно-ориентированная концепция. По сути, любая игра состоит из массы объектов, разбавленных дополнительными компонентами. Для примера, во время создания платформера мы создаём GameObject, к нему дополнительно прикрепляем графическую составляющую, что отвечает за отображение персонажа, и управляющий компонент, он обеспечивает управление персонажем за счёт мыши, клавиатуры, джойстика или тачскрина. Движок не накладывает ограничения на количество подобных модулей. К GameObject можем добавить столько компонентов, сколько будет необходимо. Вся работа на движке строится на том самом создании GameObject и применение к ним подходящих компонентов.

Новичков может ввести в заблуждение видимая простота процесса, хотя это не так. Для создания уникальной и популярной игры придётся с нуля писать массу компонентов. Если точнее, в среде Юнити это называется скриптом. Родной язык создания скриптов – C#, но ещё частично используется JavaScript и Boo (обрезанный вариант Python). Создать собственные компоненты нелегко, можно даже сказать – это сложная процедура, напрямую завязанная на классическом программировании. Без наличия достаточного уровня знаний в программировании придётся несладко.
Поддерживаемые платформы
Многие крупные проекты предпочитают Unity из-за огромного списка платформ совместимых с движком. Готовое приложение реально запустить на любой компьютерной операционной системе, популярных мобильных платформах и SmartTV. Что уж говорить, даже браузерные игры и приложения для специфических платформ (вроде Tizen OS) преимущественно разрабатываются на Юнити.
Однако, здесь не всё так гладко. При необходимости можно писать специфические алгоритмы, основанные на низкоуровневом коде, под тот же самый Андроид нужно иметь доскональные знания Java.

То же самое справедливо и в отношении iOS. Ещё одна особенность iOS, что под неё разрабатывать возможно только с компьютера или планшета от Apple. При отсутствии Macbook или аналогичного устройства выпуск игры быстро застопорится и Unity здесь вовсе не причём, Apple сама накладывает подобное ограничение. Вывод прост: если в планах есть iOS-разработка, заранее следует подобрать подходящее устройство для сборки.
Как и где разработать игру на движке?
Длительный процесс разработки игр можем проводить как в рамках Windows, так и Mac OS X. Уже существуют версии редактора под Linux, но рассчитывать на стабильную их работу пока что не приходится. Большую часть времени по созданию игры разработчик проводит внутри редактора Unity. Ещё приходится много времени писать код скриптов, его создавать можем либо в стандартном MonoDevelop, либо в любом редакторе стороннего разработчика. Сейчас активно пользуются Visual Studio, а также Sublime Text, но только при должной настройке.
Как создать игру на андроид с использованием C++ и OpenGl ES?
У меня есть опыт в создании игр на различных движках. Сейчас захотелось углубиться в познания разработки игр без движков. Но утанул в различных высказываниях и методах разработки. Нужно именно C++ и OpenGl ES (ну под Андроид) , так как хочю получить опыт в этих направлениях. Какие ide использовать как что подключить и тп. , может статьи книги.
- Вопрос задан более трёх лет назад
- 5546 просмотров
1 комментарий
Средний 1 комментарий
alterEgoChaos @alterEgoChaos
Заколебаешься без движков делать) На одной анимации перематеришься)
Решения вопроса 1

Скачиваем Qt Creator, Android NDK. Устанавливаем. Создаем проект из темплейта.
Подключаем в хидерах и pro файле opengl. И вперед. Я использую для игр QOpenGLFramebufferObject. Ну конечно нужно немного в шейдеры, немного в вертексы и нормали. Немного в матричные преобразования, немного в освещение и текстуры. Что там еще? В общем ничего сложного. Если есть опыт болванка проекта создается буквально на коленке за пару часов. За несколько вечеров можно создать простенькую демку или игрушку.
Ответ написан более трёх лет назад
Надо уточнить, поскольку пользуется NDK, придется собирать проект под разные платфомы, если планируется распространять поделку
Ответы на вопрос 1
Можете посмотреть мои статьи про использование C++ и OpenGL ES на Android. Весь код открыт. Там не совсем игры, просто примеры, но суть такая же как в играх. Большинство компаний, по разработки игры под мобильные платформы использует или Unity3D или Cocos2D или разрабатывают свои кроссплатформенные движки на C++ (возможно на базе существующих, плюс нативные прослойки, в случае с Andoid — это NDK), среди таких компаний, например: Game Insight, Social Quantum, Playrix. Или Qt, но для игр в продакшен он скорее всего не применим, слишком тяжелый. Но, например, компания 2GIS использует его для своего мобильного приложения
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Разработка игр
- +1 ещё
Проблемы с игрой World of Tanks Blitz, что делать?
- 1 подписчик
- 23 минуты назад
- 13 просмотров
На каких языках программирования пишут мобильные игры

Изначально видеоигры создавались для персональных компьютеров, простых консолей, со временем мобильные версии стали приоритетом разработчиков. Далее расскажем, на каком языке пишут игры для мобильных устройств и рассмотрим популярные варианты.
На каком языке пишут мобильные игры
За историю развития программирования человечество создало более 700 самостоятельных и уникальных языков программирования: от реально используемых, до разработанных «for fun». Учитывая вариации (форки) каждого языка, можно насчитать до 10 000 ЯП, многие из которых не получили широкого распространения.
Рассматривая вопрос, на каком языке пишут игры для Android чаще всего, нельзя игнорировать тройку лидеров:
Выбор конкретного языка зависит от квалификации разработчика и потребностей проекта. C++ – удел опытных программистов, поскольку считается одним из наиболее сложных в освоении. Он универсален, демонстрирует быструю работу, активно поддерживается сообществом программистов, поэтому востребован специалистами.
Разработка C# учитывала недостатки предшественников: C++, Delphi, Modula, Smalltalk. Язык отлично подходит движку Unity, предлагающему набор необходимых инструментов и готовые пресеты для создания игры без глубоких знаний программирования.
Java легко освоить при наличии базовых знаний о принципах программирования и функционирования ЯП. Язык изначально лишен привязки к определенной платформе, по данной причине считается универсальным. Но некоторые движки (например, Unity) не работают с Java по причине несовместимости.
Важную роль выполняет вышеупомянутый движок – набор центральных компонентов игры (физики, механики, трехмерной графики), используемый для разработки уникальных продуктов. Использование готового движка экономит время, оставляя свободу действий в ключе расширения возможностей. Например, в середине 90-х годов Quake engine (от одноименной игры) использовали для разработки HeXen II, Laser Arena, X-Men: The Ravages of Apocalypse, некоторых других видеоигр.
Выделяют три популярных движка:
- Unity. Инди-разработчики и крупные студии создали тысячи игр с помощью данного движка. Вы получаете визуальную среду разработки, модульную систему элементов, кроссплатформенность.
- Unreal Engine. Движок от Epic Games поддерживает разработку на C++, предоставляется бесплатно. Если за квартал продукт принесет более 3000$ прибыли, издатель обязан выплатить роялти – 5% дохода. Инди-разработчики часто используют данный движок, особенно при создании тестовых версий.
- Frostbite Engine. Для разработки под iOS/Android компания EA Digital Illusions CE создала версию Go. Движок имеет большой выбор функций, инструментов, его главная фишка – разрушаемость объектов и окружающего ландшафта.
Выбор движка зависит от ваших знаний программирования. Уточните, на каком языке пишут в Unreal Engine и других вариантах ПО. Например, UE поддерживает разработку на C++, а Unity – C#, писать на других языках не получится.
Наиболее популярные языки для создания игр в GameDev
Написание функционального, эффективного игрового кода требует знания нескольких языков. Начинать однозначно стоит с HTML, CSS, JavaScript – осваивайте теорию, пробуйте создавать полноценные проекты. Осуществлять разработку серверной части помогают знания баз данных, объектно-ориентированного программирования.
Каждое направление разработки имеет свои ЯП:
- backend (разработка функциональной части ПО) – Java, PHP, Python, C#;
- frontend (интерфейс, прочие видимые части игры) – CSS, HTML, JavaScript, дополнительно изучают фреймворки React, Angular, Vue.
Программисты-универсалы ценятся, но востребованы и просто frontend-разработчики. Языки имеют различия по платформе: на Android следует учить Java, Kotlin, для iOS достаточно знания Swift.
В чём отличие языков для создания игр: основные факторы
Выбор языка программирования для новичка – нелегкая задача (вспомните о количестве существующих ЯП). Подойти к процессу следует максимально рассудительно, рассмотрев основные отличия:
- возможность синхронизации – редкий проект пишется на одном языке. Часто разработчик использует разные ЯП, например, использует для обработки информации C, создает логику на Java, frontend прорабатывает на JavaScript;
- оптимизация – некоторые языки самостоятельно собирают мусор в коде, другие требуют участия программиста для успешного результата;
- платформа – для Apple – Objective-C (в прошлом) и Swift (в настоящем), для Android – Java, Cotlin, Python и некоторые другие. При наличии планов работать лишь с одной платформой, не стоит распыляться на неподходящие языки.
Запомните, что каждый язык имеет свою цель, архитектуру, типизацию, классовость. Скажем, написать игру на PHP если и получится, то с ужасными результатами, ведь это язык веб-программирования. Сравнивайте, изучайте, анализируйте – скрупулезная подготовка помогает продуктивно работать в будущем.
Какой язык выбрать для разработки игры высокого качества
Абзацем ранее мы выяснили отсутствие универсального языка, способного решить любую задачу – это сложно реализовать. Выбор делают, исходя из поставленных целей, приоритетного жанра, платформы разработки, ряда иных факторов, мы сосредоточимся на языках для мобильного ПО.
Это динамично развивающаяся отрасль геймдева за счет доступности смартфонов и планшетов – пользователи могут играть в любое время. Индустрия представлена онлайн- и оффлайн-играми, продуктами различных жанров и масштабов, особенно популярны инди-игры с необычными концепциями.
Несмотря на визуальную простоту, длительность и сложность цикла разработки мобильных игр имеет минимум отличий от других платформ. Даже на простенькую аркаду, доведенную до абсолюта, тратится минимум полгода. Игры уровня Manor Matters, имеющие разветвленный сюжет, качественную графику, насыщенную геймплейную часть, разрабатываются годами.
Зачастую мобильные проекты собираются из C# и JavaScript, идеально работающих вместе. Спарка позволяет проектировать разнообразные жанры: головоломки, платформеры, аркады, полноценные RPG, шутеры. Выбор C# объясняют преимущества:
- широкий функционал, решающий большинство задач;
- понятная структура синтаксиса, упрощающая освоение языка;
- совместимость с движком Unity (хитом мобильного геймдева);
- наличие базовых библиотек, предзагруженных в базу.
С C# программист может создавать игры, облачные сервисы, веб-дополнения, многое другое. Среди наиболее известных мобильных тайтлов, написанных на данном языке, присутствуют Pokemon GO, Temple Run, Beholder. Особенно популярен язык у инди-разработчиков, ведь часто изучается в учебных заведениях и делает разработку бесплатной.
Где учиться программированию в геймдеве
Программирование – сложная сфера, которую можно освоить самостоятельно, но без посторонней поддержки процесс может затянуться. Есть два основных пути обучения:
- Курсы. Онлайн-сервисы и IT-школы постоянно объявляют набор в образовательные группы, которые обучают отдельным отраслям программирования. Обычно курсы ориентированы на практическую отработку полученной теории и предполагают, что ученики выпустят первый игровой продукт (хотя бы рабочий прототип) для мобильной платформы к концу обучения. В среднем курс занимает 4–6 месяцев, за которые человек получает нужные знания и навыки.
- Университеты. Высшие учебные заведения не обучают конкретно программированию для геймдева. Многие технические специальности уделяют время изучению данного предмета. Обычно специальность называется «Информационные системы и технологии», но также встречаются названия, связанные с прикладной информатикой и другими специфическими терминами.
Отрасль мобильного геймдева требует постоянного развития сотрудника. Берите дополнительные курсы, читайте литературу, штурмуйте специализированные сайты. Не помешает разбираться в визуальных эффектах, игровой концепции, основах моделирования, даже юриспруденции (особенно важно для инди-разработчиков). Множество популярных игр написано небольшими командами программистов-универсалов.
Каждый язык программирования индивидуален, делайте выбор на основе поставленных целей и задач. Рекомендуем начать с базового языка (Java или C++), позволяющего в дальнейшем перейти к другим ЯП с четким пониманием структуры и принципов написания программного обеспечения.
Разработка игр для андроид на языке С++?
Мне 13 лет и я уже интересуюсь разработкой игр на андроид. У меня уже возникли некоторые вопросы:
1. Можно ли делать простые 2д игры на андроид на языке С++?
2. (Если это все же возможно) какое программное обеспечение мне для этого необходимо.
3. И последнее, все же интересно, поддерживает ли Unity язык программирования С++?
Всем заранее спасибо за ответ!
- Вопрос задан более двух лет назад
- 791 просмотр
Комментировать
Решения вопроса 1
Евгений Шатунов @MarkusD Куратор тега C++
все время мелю чепуху 🙂
C++ не является полноценно «родным» языком для Android. Но для этой платформы можно вести разработку на C++.
Такие движки, как cocos2d-x [?], Urho 3D [?], Unreal Engine 4 [?], Godot Engine [?] и, буквально, море менее известных проектов, позволяют вести разработку игр с использованием языка C++.
Для старта своего проекта тебе потребуется среда разработки, рабочая и исходная части выбранного тобой движка и море времени чтобы читать необходимую литературу, без которой у тебя мало что получится. Требования к среде разработки у каждого движка разные, поэтому сперва стоит выбрать движок.
Если использование C++ для тебя является важным, о Unity можно забыть. Это взаимоисключающие инструменты.
И это не важно. Тот же Urho 3D позиционируется как Open Source Unity. Godot Engine обладает не меньшей свободой и гибкостью, но предлагает больше.
Ответ написан более двух лет назад

Необходимую литературу, которая сплошь на английском.
А ТС даже такую базовую информацию нагуглить не смог, так что, полагаю, это последний гвоздь в его планы.
Евгений Шатунов @MarkusD Куратор тега C++
Adamos, или это — финальный толчок к осознанию того, что для разработки игр нужно образование, в которое надо вложить свои время и усилия? 🙂
Все верно. Требуемая литература вся сплошь на английском и одним ее чтением не обойтись. Требуется еще и общение с сообществом, которое, внезапно, тоже англоговорящее. На наш геймдев надежды особой нет.

Евгений Шатунов, умение гуглить и читать может сильно сократить общение с сообществом. И наоборот 😉
Ответы на вопрос 2
Денис Загаевский @zagayevskiy Куратор тега Android
Android developer at Yandex
Делать можно, но это слишком сложно, неоправданно. Юнити не поддерживает С++. С# используй.
Ответ написан более двух лет назад
Комментировать
Нравится Комментировать
android это зоопарк железа (и не только процессоры), к сожалению красивого фреймворка именно для c++ нет, отсюда разработка даже простейшего приложения (особенно если нужен доступ к перифирии и графическому ускорителю) очень сложны, хотя разрабатывать библиотеку, выполняющую критичную к скорости часть — почему нет
зы. лучше всего на android функционал покрыт java фреймоврками, соответственно и разрабатывать лучше/легче на java а точнее под виртуальную машину dalvik virtual machine (это машина исполнения скомпилированного кода java, можно найти компиляторы из других языков но красивая поддержка только у java)
Ответ написан более двух лет назад
Денис Загаевский @zagayevskiy Куратор тега Android
Но. Как же. Котлин.
Евгений Шатунов @MarkusD Куратор тега C++
к сожалению красивого фреймворка именно для c++ нет, отсюда разработка даже простейшего приложения (особенно если нужен доступ к перифирии и графическому ускорителю) очень сложны
Периферия доступна как стандартное низкоуровневое устройство. Проблем доступа к ней нет. Для работы с сетью есть сокеты Беркли. Для работы со звуком есть OpenSL и упрощающие надстройки. Для работы с пресловутым графическим ускорителем есть Vulkan и OpenGL. Все это напрямую доступно из библиотек C/C++ и никак не касается рантайма виртуальной машины. На JNI писать нет никаких проблем при наличии достаточной прослойки для JNI.
соответственно и разрабатывать лучше/легче на java
Легче — на Kotlin. Привычнее — на Java. Это — разные вещи.
точнее под виртуальную машину dalvik virtual machine
DVM в последний раз был замечен еще в Android 4. Далее DVM был вытеснен ART. Сегодня DVM в Android, в явном виде, больше нет. DEX на современных устройствах больше не выполняется.
это машина исполнения скомпилированного кода java
Это — неправда. DEX представляет собой пакет исполняемого кода для DVM, а не JVM. DVM никогда не исполнял опкоды JVM. Иначе Oracle засудил бы Google к чертям, а не жалко пытался бы подлезть к родству между JVM и DVM через написание кода на Java.
Трансляторы других языков выполняют трансляцию кода во все тот же DEX.