Войти
Образовательный портал. Образование
  • Четверка монет таро значение
  • Что такое договор найма служебного жилого помещения?
  • Хлеб по технологии в духовке на дрожжах
  • Требования к главному бухгалтеру Нормативное регулирование бухгалтерского учета
  • Биография. Базаров Т. Ю., Еремин - Управление персоналом Тахир базаров управление персоналом
  • Михаил Светлов — Гренада: Стих Я хату покинул пошел воевать чтоб землю
  • Создание игр для android самостоятельно. Способы создания игры на Android

    Создание игр для android самостоятельно. Способы создания игры на Android

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

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

    • Вам необходимо продумать сценарий, возможно даже написать его, показать знакомым или семье. Ведь смысл начинать создание, если еще нет сюжета?
    • Сразу хочу отметить, что создание игры без навыков программирования довольно длительный, сложный и нудный процесс. Хотя, при знании последнего ничего особо не изменится, процесс веселее не станет. Наберитесь терпения!
    • И наконец-то, потребуется программное обеспечение, а точнее конструктор игр, возможно даже не один. Какой именно выбрать, я расскажу ниже.

    Что такое конструктор и как его правильно выбрать?

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

    Как правильно выбрать конструктор? Как ни странно, но начинать его выбор нужно ориентируясь в первую очередь на свои знания – от навыков программирования до уровня владения английским языком. Если первый пункт у вас нулевой, то рекомендую выбрать программы для новичков, они проще в использовании. Второй критерий выбора – требуемый функционал. Здесь-то нам и потребуется наш точно составленный сценарий, его нужно еще раз прочитать «от корки до корки» и понять насколько сложной будет будущая игра. Чем сложнее проект, тем больше всяких «примочек» нужно будет использовать, а значит и конструктор должен быть мощнее и профессиональнее.

    Ниже я приведу несколько примеров самых распространённых конструкторов, которые советуют профессионалы новичкам.

    Construct 2

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

    Stencyl

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

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

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

    Unity 3D

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

    Unity 3D является самым мощным конструктором для создания 3D приложений. Уровень, на который вы сможете вывести свой проект достойный (взгляните только на скриншот выше). Это не обработанное изображение, а реальный снимок экрана еще не законченной игры! Согласитесь, как для мобильной игры это очень высокий уровень.

    Но такой результат потребует уже и определенных навыков. Хоть программа и позиционируется как приложение для новичков, но она скорее больше рассчитана на любителей и профессионалов, ведь для работы с ней потребуются базовые знания программирования и 3D-моделирования. Ну и конечно же, в Unity вы сможете создать проект любой сложности и любого жанра, набор инструментов просто огромен.

    Как же пользоваться конструкторами?

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

    Когда вы сделаете «пробный» проект и точно определитесь со своим, выберете программу, то ищите в интернете видеоролики именно о конструкторе, который вы будете использовать. Например, для Unity 3D есть целая сборка видеоуроков .

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

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

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

    Теперь каждый желающий может разработать собственную игру и представить ее общественности. Все, что для этого требуется – программа для создания игр на Андроид, немного терпения, свободного времени и таланта. При помощи специальных инструментов заниматься разработкой очень легко и просто: можно создавать собственные уровни, сюжеты, героев и монстров, задавать паттерны поведения персонажей, использовать физику; можно пользоваться уже заготовленными объектами, текстурами, моделями и наборами анимации. В основном программы для создания игр на Андроид дают возможность сразу же опробовать их в режиме симуляции на компьютере, чтобы узнать, как эти игры будут работать на разных конфигурациях смартфонов и планшетов. Сейчас мы рассмотрим 2 самые известные и самые функциональные среды для создания игр под Андроид.

    Unity 3d

    Наиболее функциональным инструментом для разработки мобильных игр является движок Unity 3d. Он использовался для таких известных андроид игр, как: Dead Trigger , The Silent Age , Shattered Planet . Эта программа для создания игр на Андроид позволяет легко создавать игры любых жанров: шутеры и экшены от первого и третьего лица, гонки, RPG, стратегии, платформеры, головоломки – все что угодно. Многие разработчики создают отдельные библиотеки и наборы инструментов для Unity, выкладывая их в свободный доступ, так что пользователь, решивший эту программу для создания игр для Андроид скачать, получит доступ к различному контенту (моделям персонажей, уровням, текстурам, звукам и так далее), которые он сможет добавить в свои игры.

    Пример использования Unity 3d:



    Для неопытных пользователей разработчики программы для создания Андроид игр Unity 3d приготовили большое количество видеоуроков, поэтому освоить этот движок при должном терпении сможет каждый. Игры, разработанные при помощи этой утилиты, можно распространять в магазине Google Play, но с определенными условиями – узнать их можно, прочитав лицензионное соглашение Unity и Google Play. Таким образом, создатель игр может не только приобрести полезные навыки разработчика, но и получить прибыль, если разработанные им проекты станут успешными. Ниже я приведу видео обзор, который поможет поближе познакомиться с этим движком.

    DX Studio

    Следующая популярная программа для создания игр на Андроид, скачать которую можно совершенно бесплатно, называется DX Studio. Этот движок позволяет разрабатывать игры на платформы андроид и виндовс: для первой используется графический API OpenGL ES, а для второй – DirectX.

    При помощи этой программы для создания 3d игр на Андроид пользователь может разрабатывать достаточно качественные проекты, в которых содержатся современные шейдеры, система частиц, различные эффекты, достоверная физическая модель, лайтмапинг и динамические тени, объемный звук. Работая в этой программе, можно использовать сторонние библиотеки (в том числе из AutoCAD, 3Ds MAX) и создавать собственные объекты – возможности для пользователя обширны.
    Движок DX Studio абсолютно бесплатен для пользователей – при условии, что игры, разработанные с его помощью, распространяются на бесплатной основе. К этому движку я также прикладываю видео обзор, в котором будет показано как именно можно создавать игры:

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

    А знаете ли Вы, какие , являются лучшими?

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

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

    1. Идея или сценарий.
    2. Желание и терпение.
    3. Конструктор игр.

    И если с первыми двумя составляющими успеха более-менее всё понятно, то на третьей составляющей нужно остановиться подробнее.

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

    Речь идёт о программе, существенно упрощающей разработку игр, делая её доступной для людей, не обладающих навыками программирования. В конструкторе игр объединены интегрированная среда разработки, игровой движок и редактор уровней, который работает как визуальный редактор (WYSIWYG – англ. аббревиатура «что видишь, то и получишь»).

    Некоторые конструкторы могут ограничиваться жанром (к примеру, RPG, аркады, квесты). Другие, предоставляя возможность конструировать игры разных жанров, в то же время ограничивают фантазию начинающего разработчика 2D-играми.

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

    Как выбрать нужный конструктор

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

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

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

    Топ 5 лучших конструкторов игр

    Construct 2

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

    С учётом огромного количества вспомогательных инструментов, программу вполне смогут осилить даже начинающие юзеры.

    Для освоения работы с Construct 2 нет необходимости покупать лицензию, в бесплатной Free-версии предложен вполне достаточный инструментарий и возможность экспорта готового проекта на некоторые платформы. Однако, кодирование готового продукта на мобильные платформы и доступ к полному объёму функционала даст за 129 долларов Personal-лицензия. Если же ваше мастерство в создании игр достигло апогея, и вы уже стали получать доход от своего проекта более 5 тыс.долл., придётся раскошелиться на Business-вариант, который обойдётся в 429 долл.

    А теперь, посмотрите несколько практических видеоуроков по созданию игровых приложений с помощью Construct 2:

    Clickteam Fusion

    Clickteam Fusion – ещё один образчик отличного полноценного игрового конструктора, помогающего даже новичку создать полноценную игру. Программа предоставляет возможность экспортировать созданные приложения совершенно бесплатно в формат HTML5, а это значит, что будет возможность публиковать браузерные игры и кроме того, конвертировать их для публикации в различных мобильных маркетах, например, Google play.

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

    Платная Developer-версия программы недоступна для жителей РФ, но её лицензионный диск можно будет заказать с того же Amazon, облегчив личный бюджет в среднем на 100 долларов. Возможна русификация меню через сторонний русификатор.

    Как работать с приложением, смотрим специальный видео курс:

    Stencyl

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

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

    Наличие отличного графического редактора Scene Designer даёт возможность пользователю применить свою фантазию для рисования игровых миров.

    Оптимальный набор функций поможет создать качественные игры разных жанров, но наиболее тайловая (плиточная) графика Stencyl будет актуальна для «стрелялок» или «бродилок».

    Программа распространяется на бесплатной основе, но экспорт в десктопные форматы требует подписки, которая будет стоить 99$ на год, а лицензия для мобильных игр — 199 долл. В год.

    Смотрим ускоренный курс по работе со Stencyl:

    Game Maker

    Программа существует в платной и бесплатной версии. Бюджетный вариант позволяет создавать добротные двухмерные игры под десктоп. В то время, как платная версия даёт возможность написать довольно «навороченные» 3D-игрушки для Виндовс, iOS и Андроид. Нас же пока интересует бесплатная возможность научиться реализовывать себя в игровой индустрии, а Game Maker – тот самый вариант, который позволит создавать игры с собственным сценарием без ограничений в выборе жанра.

    Программа предлагает выбор готовых шаблонов локаций, объектов, а также, персонажей, звуков и фонов. Так что, вся творческая работа сводится к перетаскиванию в рабочую зону выбранные элементы и выбору условий – местонахождение и взаимодействие с другими объектами. Хоть знание языка программирования и не понадобится, но пользователи, которые «в теме» смогут использовать GML, чем-то схожим с JS и C++.

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

    Кого заинтересовала эта программа, предлагаем посмотреть обучающее видео:

    Unity 3D

    Unity 3D – пожалуй, лучшее, что можно предложить, для создания качественного трёхмерного проекта. В программу интегрированы полностью готовые модели, а также текстуры и скрипты. Кроме того, есть возможность добавлять и собственный контент – звук, изображения и видеозаписи.

    Игры, созданные с помощью Unity совместимы со всеми востребованными платформами от мобильных устройств на iOS или Android до SMART TV телевизионных приёмников.

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

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

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

    Серия занятий по созданию игр с помощью Unity 3D:

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

    Этот туториал предназначен в первую очередь для новичков в разработке под андроид, но может быть будет полезен и более опытным разработчикам. Тут рассказано как создать простейшую 2D игру на анроиде без использования каких-либо игровых движков. Для этого я использовал Android Studio, но можно использовать любую другую соответствующее настроенную среду разработки.

    Шаг 1. Придумываем идею игры
    Для примера возьмём довольно простую идею:

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


    Шаг 2. Создаём проект
    В Android Studio в верхнем меню выбираем File → New → New Project.

    Тут вводим название приложения, домен и путь. Нажимаем Next.

    Тут можно ввести версию андроид. Также можно выбрать андроид часы и телевизор. Но я не уверен что наше приложение на всём этом будет работать. Так что лучше введите всё как на скриншоте. Нажимаем Next.

    Тут обязательно выбираем Empty Activity. И жмём Next.

    Тут оставляем всё как есть и жмём Finish. Итак проект создан. Переходим ко третьему шагу.

    Шаг 3. Добавляем картинки

    Шаг 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 класс:

    Package com.spaceavoider.spaceavoider; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; public class MainActivity extends AppCompatActivity implements View.OnTouchListener { public static boolean isLeftPressed = false; // нажата левая кнопка public static boolean isRightPressed = false; // нажата правая кнопка @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); 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); } 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 готов! В нём инициирован ещё не созданный класс GameView. И когда нажата левая кнопка - статическая переменная isLeftPressed = true, а когда правая - isRightPressed = true. Это в общем то и всё что он делает.

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

    Шаг 6. Создаём класс GameView

    Теперь наконец-то создадим тот самый недостающий класс GameView. Итак приступим. В определение класса добавим extends SurfaceView implements Runnable. Мобильные устройства имею разные разрешения экрана. Это может быть старенький маленький телефон с разрешением 480x800, или большой планшет 1800x2560. Для того чтобы игра выглядела на всех устройствах одинаково я поделил экран на 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. Вот эти методы:

    @Override public void run() { while (gameRunning) { update(); draw(); control(); } } private void update() { if(!firstTime) { ship.update(); } } 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); // рисуем корабль surfaceHolder.unlockCanvasAndPost(canvas); // открываем canvas } } private void control() { // пауза на 17 миллисекунд try { gameThread.sleep(17); } catch (InterruptedException e) { e.printStackTrace(); } }
    Обратите внимание на инициализацию при первом запуске. Там мы вычисляем количество пикселей в юните и добавляем корабль. Корабль мы ещё не создали. Но прежде мы создадим его родительский класс.

    Шаг 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()

    @Override public void update() { // перемещаем корабль в зависимости от нажатой кнопки if(MainActivity.isLeftPressed && x >= 0){ x -= speed; } if(MainActivity.isRightPressed && x <= GameView.maxX - 5){ x += speed; } }
    На этом космический корабль готов! Всё компилируем и запускаем. На экране должен появиться космический корабль. При нажатии на кнопки он должен двигаться вправо и влево. Теперь добавляем сыплющиеся сверху астероиды. При столкновении с кораблём игра заканчивается.

    Шаг 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) { Random random = new Random(); bitmapId = R.drawable.asteroid; y=0; x = random.nextInt(GameView.maxX) - radius; size = radius*2; speed = minSpeed + (maxSpeed - minSpeed) * random.nextFloat(); init(context); }
    Астероид должен двигаться с определённой скорость вертикально вниз. Поэтому в методе update() прибавляем к координате x скорость.

    @Override public void update() { y += speed; }
    Так же нам нужен будет метод определяющий столкнулся ли астероид с кораблём.

    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().

    @Override public void run() { while (gameRunning) { update(); draw(); checkCollision(); checkIfNewAsteroid(); 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 игра готова. Компилируем, запускаем и смотрим что получилось!
    Если кто-то запутался или что-то не работает можно скачать исходник .

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

    На этом всё. Пишите отзывы, вопросы, интересующие вас темы для продолжения.

    Теги:

    Добавить метки

    Как создать игру на андроид?






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

    Движок

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

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

    Среда программирования

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

    Создание проекта

    Чтобы написать игру на андроид, как и на любую другую платформу, нужно сначала создать проект. Сделать это несложно. В случае с LibGDX для этого достаточно распаковать движок в папку и найти в нем одноименный файл. Далее понадобится нажать кнопку "Создание проекта", и вы уже окажетесь в шаге от создания проекта. Затем потребуется лишь выбрать платформу для игры и указать название проекта. В конфигурации нужно указать, где будет размещена игра в среде программирования. Движок сам создаст проект и подскажет, если вы что-то сделали не так. Далее можно будет перейти в среду программирования и начать писать игру.

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