• Что можно приготовить из кальмаров: быстро и вкусно

    Этот урок начинает серию статей, посвященных написанию аркадных игр для Android. За основу был взят цикл, который написал и опубликовалв своем блоге Tamas Jano . Материал ориентирован, прежде всего, на начинающих программистов, которые хотят попробовать свои силы в создании игр для Android. Я ставлю перед собой цель создать у нас на сайте максимально понятный и доступный учебник для молодой русскоязычной аудитории, поэтому очень надеюсь на вашу критику, вопросы и комментарии. Опубликованный в этом цикле материал будет постоянно перерабатываться с учетом ваших вопросов, пожеланий и замечаний. Надеюсь, что вместе мы сможем успешно осуществить этот небольшой эксперимент.

    Александр Ледков

    Идея и архитектура

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

    Смоделируем игровую ситуацию. Наш персонаж находится в центре экрана. Роботы каждую 1/10 секунды приближаются к нему. каждую десятую секунду мы проверяем также не произошло ли касание экрана. Если произошло - двигаем наш персонаж в необходимом направлении или делаем выстрел. если выстрел сделан, каждый тик (1/10 секунды) мы проверяем столкновение пули с врагами. Если пуля попала в робота - то и робот и пуля взрываются, если нет - роботы и пуля перемещаются на новые позиции (робот перемещается на 5 пикселей за тик, а пуля - на 50 пикселей). Мы также проверяем не поймал ли робот нашего героя. Если поймал - игра заканчивается.

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

    1. Модуль управления . Здесь считываются координаты касания экрана.
    2. Игровой движок . Здесь мы должны обновить состояние игровых объектов, то есть вычислить их новые координаты, проверить здоровье, столкновения и тому подобное.
    3. Аудио модуль .
    4. Графический модуль . Здесь на основании текущего состояния формируется и выводится на экран новый кадр.

    Давайте более детально рассмотрим наши модули.

    Модуль управления

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

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

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

    Давайте рассмотрим взаимодействие модуля управления и игрового движка. На представленном выше рисунке показан круг-контроллер. Светлое зеленое пятно символизирует область касания. Модуль управления сообщает игровому движку координаты касания (dx и dy - расстояния в пикселях от центра круга). На основании этих координат игровой движок вычисляет направление и скорость движения нашего героя. Например, если dx>0, наш персонаж движется вправо, eсли dy>0 - в верх.

    Аудио модуль

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

    Графический модуль

    Этот модуль отвечает за вывод игровой ситуации на экран телефона. В Android существует несколько способов формирования изображения на экране. Можно рисовать прямо на canvas, полученный от View или использовать отдельный графический буффер и вы, а затем передавать его View, а можно воспользоваться возможностями библиотеки OpenGL. Полезно при разработке игры постоянно измерять FPS - число кадров в секунду, которые выдает ваш графический движок. Величина в 30 FPS означает, что за одну секунду наша программа успевает 30 раз обновить экран. Забегая вперед скажу, что для мобильного устройства 30 FPS более чем достойный показатель.

    Создаем проект-заготовку для будущей Android игры

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

    Создайте новый проект. В поле Project Name введитеDroidz . В качестве целевой платформы выберите Android 2.2 или выше. В Package Name - "ru.mobilab.gamesample ". Не забудьте поставить галочку около Create Activity. В качестве имени главной activity введитеDroidzActivity .

    Откройте файл src/ru.mobilab.gamesample/DroidzActivity.java

    import android.app.Activity;
    import android.os.Bundle;

    public class DroidzActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    }
    }

    Метод onCreate вызывается при создании activity во время запуска приложения. Этот метод можно рассматривать, как точу входа в программу. Класс R.java автоматически генерируется Eclipse и содержит в себе ссылки на ресурсы. Каждый раз, когда вы изменяете ресурсы в Eclipse класс R пересобирается.

    Главный игровой цикл

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

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

    Давайте откроем файл DroidzActivity.java. В конструкторе класса вы увидите строчку

    SetContentView(R.layout.main);

    эта строка выбирает текущий объект View для Activity. Давайте создадим новый объект для View. Наиболее простым способом получения View - создать собственный класс на основании SurfaceView. В нашем классе мы реализуем интерфейс SurfaceHolder.Callback, чтобы ускорить доступ к изменениям поверхности, например когда она уничтожается при изменении ориентации устройства.

    MainGamePanel.java

    package ru.mobilab.gamesample;






    SurfaceHolder.Callback {


    super(context);
    // Добавляем этот класс, как содержащий функцию обратного
    // вызова для взаимодействия с событиями
    // делаем GamePanel focusable, чтобы она могла обрабатывать сообщения
    setFocusable(true);
    }

    @Override
    }

    @Override
    }

    @Override
    }

    @Override

    }

    @Override
    }
    }

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

    GetHolder().addCallback(this);

    Устанавливает текущий класс (MainGamePanel) как обработчик событий от поверхности.

    SetFocusable(true);

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

    Давайте создадим поток, внутри которого собственно и будет реализован наш игровой цикл. Разделение игры на несколько параллельно выполняющихся потоков - общепринятая в современном геймдеве практика. Создадим для нашего потока класс MainThread.java

    Package ru.mobilab.gamesample;

    public class MainThread extends Thread {

    //флаг, указывающий на то, что игра запущена.

    Private boolean running;
    public void setRunning(boolean running) {
    this.running = running;
    }

    @Override
    public void run() {
    while (running) {
    // обновить состояние игровых объектов
    // вывести графику на экран
    }
    }
    }

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

    После того, как мы создали класс потока, его нужно запустить. Давайте запускать его при загрузке экрана. Изменим класс MainGamePanel

    Package ru.mobilab.gamesample;

    import android.content.Context;
    import android.graphics.Canvas;
    import android.view.MotionEvent;
    import android.view.SurfaceHolder;
    import android.view.SurfaceView;

    public class MainGamePanel extends SurfaceView implements
    SurfaceHolder.Callback {

    Private MainThread thread;

    Public MainGamePanel(Context context) {
    super(context);
    getHolder().addCallback(this);

    // создаем поток для игрового цикла
    thread = new MainThread();

    SetFocusable(true);
    }

    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
    }

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
    thread.setRunning(true);
    thread.start();
    }

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
    //посылаем потоку команду на закрытие и дожидаемся,
    //пока поток не будет закрыт.
    boolean retry = true;
    while (retry) {
    try {
    thread.join();
    retry = false;
    } catch (InterruptedException e) {
    // пытаемся снова остановить поток thread
    }
    }
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
    return super.onTouchEvent(event);
    }

    @Override
    protected void onDraw(Canvas canvas) {
    }
    }

    Мы объявили объект thread

    Private MainThread thread;

    и создали его в конструкторе

    Thread = new MainThread();

    в методе surfaceCreated мы установили флаг running в значение true и запустили поток. К этому времени объект thread уже благополучно создан и можем без опасений запускать его.

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

    Добавляем взаимодействие с экраном

    Чтобы показать, как в Android обработать касания, напишем небольшой пример. Будем выходить из программы, когда пользователь коснется нижней части экрана. Если касание произошло где-то выше - будем просто выводить в лог соответствующие координаты. Добавим в класс MainThread следующие строки:

    Private SurfaceHolder surfaceHolder;
    private MainGamePanel gamePanel;

    public MainThread(SurfaceHolder surfaceHolder, MainGamePanel gamePanel) {
    super();
    this.surfaceHolder = surfaceHolder;
    this.gamePanel = gamePanel;
    }

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

    Измените строку в классе MainGamePanel, добабвив в конструктор вновь объявленные параметры

    Thread = new MainThread(getHolder(), this);

    Мы передаем текущий обработчик и панель в новый конструктор. Это позволит нам иметь к ней доступ из потока. В gamePanel мы создадим метод update и будем переключать его из потока, но пока оставим все как есть.

    Логирование

    Ниже мы напишем вспомогательный код, осуществляющий логирование - запись специальных отладочных строк с текстом, отражающих состояние нашей программы, в специальный файл, который потом можно просмотреть и попытаться понять, что происходило в программе. добавим константу TAG в класс MainThread. Каждый класс будет у нас иметь собственную константу с именем TAG, которая будет содержать название соответствующего класса. Бы будем использовать Android logging framework, чтобы вести логирование, в рамках этой библиотеки каждый лог должен иметь два параметра. Первый параметр определяет место, откуда записан лог. Именно для этих целей мы и создали константу TAG. Второй параметр - собственно сообщение, которое мы хотим записать в лог. Использование имен классов в качестве первого параметра - довольно распространенная в среде java программистов практика.

    Чтобы посмотреть записанные в процессе выполнения программы логи нужно выбрать меню
    Windows -> Show View -> Other…
    а затем в открывшемся диалоге
    Android -> LogCat
    В открывшемся окне можно не только просматривать логи, но и осуществлять фильтрацию и поиск.

    Вернемся к нашему коду. Внесем изменения в MainThread.java

    Package ru. mobilab. gamesample; import android. util. Log ; import android. view. SurfaceHolder; public class MainThreadextends Thread{ private static final String TAG= MainThread. class . getSimpleName() ; private SurfaceHolder surfaceHolder; private MainGamePanel gamePanel; private boolean running; public void setRunning(boolean running) { this. running= running; } public MainThread(SurfaceHolder surfaceHolder, MainGamePanel gamePanel) { super() ; this. surfaceHolder= surfaceHolder; this. gamePanel= gamePanel; } @ Override public void run() { long tickCount= 0L; Log . d(TAG, "Starting game loop" ) ; while (running) { tickCount++; // здесь будет обновляться состояние игры // и формироваться кадр для вывода на экран } Log . d(TAG, "Game loop executed " + tickCount+ " times" ) ; } }

    Как видите, мы определили TAG и вызвали внутри метода run команду Log, которая делает соответствующую запись в лог файле. Мы выводим в лог значение переменной tickCount, которая фактически является счетчиком игрового цикла и показывает сколько раз успел выполниться игровой цикл за время работы программы

    Перейдем к файлу MainGamePanel.java и найдем метод onTouchEvent, который является обработчиком касаний экрана.

    public boolean onTouchEvent(MotionEvent event) { if (event. getAction() == MotionEvent. ACTION_DOWN) { if (event. getY() > getHeight() - 50 ) { thread. setRunning(false ) ; ((Activity) getContext() ) . finish() ; } else { Log . d(TAG, "Coords: x=" + event. getX() + ",y=" + event. getY() ) ; } } return super. onTouchEvent(event) ; }

    Сначала мы проверяем произошло ли событие касания экрана (MotionEvent.ACTION_DOWN). Если произошло, проверяем координату y и если она находится в нижней части экрана (50 пикселей снизу), мы посылаем потоку команду на завершение (установив переменную running в false), а затем вызываем метод finish() для главной Activity, который закрывает всю нашу программу.

    Замечание. Начало системы координат у экрана находится в левом верхнем углу. Ось y направлена вниз, ось x - вправо. Ширину и высоту экрана можно получить с помощью методов getWidth() и getHeight() соответственно.

    Изменим DroidzActivity.java, добавив команды записи в лог

    Package ru. mobilab. gamesample; import android. app. Activity; import android. os. Bundle; import android. util. Log ; import android. view. Window; import android. view. WindowManager; public class DroidzActivityextends Activity{ /** Вызывается при создании activity. */ private static final String TAG= DroidzActivity. class . getSimpleName() ; @ Override public void onCreate(Bundle savedInstanceState) { super. onCreate(savedInstanceState) ; // запрос на отключение строки заголовка requestWindowFeature(Window. FEATURE_NO_TITLE) ; // перевод приложения в полноэкранный режим getWindow() . setFlags(WindowManager. LayoutParams. FLAG_FULLSCREEN, WindowManager. LayoutParams. FLAG_FULLSCREEN) ; // устанавливаем MainGamePanel как View setContentView(new MainGamePanel(this) ) ; Log . d(TAG, "View added" ) ; } @ Override protected void onDestroy() { Log . d(TAG, "Destroying..." ) ; super. onDestroy() ; } @ Override protected void onStop() { Log . d(TAG, "Stopping..." ) ; super. onStop() ; } }

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

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

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

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

    Перевод и адаптация:Александр Ледков

    Приветствую всех читателей моего блога! Сегодня я хочу поговорить о таком интересном деле, как создание игр для ОС 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 абсолютно бесплатен для пользователей – при условии, что игры, разработанные с его помощью, распространяются на бесплатной основе. К этому движку я также прикладываю видео обзор, в котором будет показано как именно можно создавать игры:

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

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

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

    Как создать игру на телефон онлайн?

    Для начала определимся, какого плана игру вы хотите создать. Одно дело, если вам нужна простенькая игрушка типа обычной платформенной "стрелялки" или несложных гонок, и совсем другое, если вы планируете какой-нибудь оригинальный симулятор или менеджер. В первом случае можно даже обойтись и без специальных знаний, так как имеются специальные конструкторы игр для мобильных телефонов, в которых может создавать типовые игры любой желающий. Во втором случае вам для начала придется выучить Java - язык программирования, на котором пишутся практически все приложения для мобильных телефонов. Причем, изучить его придется досконально, и разбираться в нем нужно на профессиональном уровне. Если у вас есть такое желание, то в соответствующей главе мы опишем проблемы, с которыми сталкивается любой начинающий (и не только) программист игр для мобильных устройств. А начнем мы с самого простого - с конструкторов.

    Конструкторы игр - свобода в ограниченном пространстве

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

    Трудности, с которыми придется столкнуться

    Прежде всего, как мы уже говорили, вам нужно освоить на приемлемом уровне язык Java - это необходимый минимум для создания любого приложения для мобильных устройств. Без знания родного языка вы не сможете общаться, без знания Java – писать игры. Допустим, вы изучили основные конструкции этого языка. Самые главные трудности, с которыми вам придется столкнуться при создании игры, будет учет аппаратных возможностей мобильных устройств, а также отладка игры на данных мобильных устройствах. Поскольку одно дело "прогонять" игру в специальной программе на компьютере, и совсем другое - попробовать поиграть в нее на мобильном устройстве. Поверьте - здесь остро возникнет вопрос экономии ресурсов, особенно если речь зайдет о 3D-играх. Ну и, конечно, чтобы создать не просто поделку для своих нужд, а игру продаваемую, нужно учитывать и запросы пользователей, то есть играть в игру должно быть интересно, иначе она никому не будет нужна. Я уж не говорю о том, чтобы создать игру на телефон онлайн - с возможностью играть по сети. Речь в статье идет об игре в обычном режиме, так называемой, автономной игре.

    Этапы создания автономной игры

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

    Как только базовая модель готова, приступаем ко второму этапу - реализации игры. Этот этап представляет собой графическое наполнение модели. Надо сказать, что этап реализации нередко отнимает гораздо больше времени, чем создание основы или движка. И вот, после долгих мучений, мы получаем, наконец, готовую модель игры. Думаете, все? Как бы ни так! Теперь мы многократно тестируем модель и выявляем, что работает не так, а затем правим это в программном коде. Возможно, вы захотите что-то убрать, что-то добавить, что-то поменять. В этом и заключается третий этап - оптимизация игры. Желание создать оригинальную игру у вас еще не отпало? Что ж, тогда желаю удачи!

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






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

    Движок

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

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

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

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

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

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

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

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

    Идея

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

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

    Список особенностей

    Так как создавать игры на "Андроид" невозможно без их детальной проработки, на данном этапе придется продолжить работу в и описать особенности, которые будут в игре. Приведем пример: серия God of War - это слэшер. Оружие главного героя - кнут. Во время боя можно делать длинные красивые комбо-атаки. Каждый уровень завершается схваткой с боссом.

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

    Диздок

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

    • Объектной модели и функциональности сущностей.
    • Функциональных спецификаций.
    • Контента игры.
    • Интерфейса.
    • По необходимости может быть добавлена база знаний.
    • Объектная модель.

    Объектная модель

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

    Под функциональностью следует понимать:

    • Можно ли надеть\снять\купить\продать\улучшить.
    • Останется ли в инвентаре после смерти.
    • Потеряет ли прочность с течением времени либо при каком-нибудь действии.
    • Повышает ли характеристики персонажа или группы.
    • Имеет ли набор особых свойств.

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

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

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

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

    Контент

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

    Интерфейс

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

    Выбор движка или конструктора

    Еще один шаг, который придется выполнить до того, как создавать игры на "Андроид", - выбрать Давно прошли те времена, когда всё необходимо было делать с нуля. Сегодня, взяв готовый конструктор, можно выполнить все работы, написав минимум кода.

    Выбор движка стоит делать, основываясь на некоторых его особенностях:

    • Условия использования.
    • Возможности.
    • Цена.
    • Поддержка разработчиками.
    • Задокументированность.
    • Размер комьюнити.
    • Простота.
    • Расширяемость.

    Условия использования : возможно, один раз купив конструктор, вы не станете его полноправным владельцем. Бывает, что при коммерческом успехе игры приходится выплачивать процент от прибылей разработчикам движка. Главное - перед тем как создавать игры на "Андроид", ознакомьтесь с продукта, выбранного для реализации.

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

    Поддержка : в первую очередь, важно выяснить, имеет ли продукт развитие? Исправляются ли ошибки от версии к версии? Обрастает ли он новым функционалом и инструментарием? Движок, который быстро развивается, имеет преимущество перед движком, замороженным несколько лет назад.

    Комьюнити : каково число тех, кто использует конструктор? Если пользователей большое количество, найти документацию, уроки, мастер-классы, примеры не является проблемой. Если же пользователей сравнительно мало, эта информация может быть доступна не в том объеме, который позволит вам сделать что-то конкурентоспособное.

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

    UDK

    Unreal Development Kit - не самый простой в освоении игровой движок, но зато один из самых мощных. Его используют не только начинающие разработчики, но и крупные корпорации. Если вы ищете ответ на вопрос: "Как создать 3Д-игру и какой движок для этого выбрать?" - вам стоит изучить возможности UDK.

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

    Torque 2D/3D

    Torque - один из самых популярных конструкторов игр для мобильных платформ. Обладает всем необходимым набором редакторов и средств отладки. При разработке программисты уделили большое внимание удобству и старались сделать все утилиты наиболее простыми и доступными.

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

    Для написания скриптов в Torque встроен язык Torque Script. Свойства каждого объекта могут быть определены заранее. Также в конструктор встроен набор Box2D, который занимается физическими расчетами.

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

    Изучение

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

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

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

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