понедельник, 27 августа 2012 г.

Топ 3 лучших игр для Андроид

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

1. Angry Birds
Замечательная игра о птичках и неоспоримый лидер среди мобильных игр (и не только). В которой нужно очистить уровень от зеленых свиней, используя суперспособности каждой птицы.
2. Minecraft
Еще одна гениально простая, которая на сегодняшний день уже заработала около 50$ миллионов на Google Play. В игре нету ни супер современной графики, ни интригующего сюжета, но все-таки в ней есть то, что крайне необходимо всем мобильным играм: захватывающий геймплей. Казалось бы что ничего кардинально нового уже придумать невозможно, но Minecraft доказывает, что это не так.

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

Теория и практика создания игр (часть 5)

Итак мы на финишной прямой, сейчас мы рассмотрим последние этапы создания игры:


9. Запись звука и музыки.
10. Устранение багов и лагов игры.
11. Создание релизной версии продукта.

9. Запись звука и музыки.
Как ни странно, но для меня этот этап стал самым сложным. Самое сложное это найти подходящие звуки для игры, у крупных фирм конечно есть уже готовые наборы звуков (или для них их записывают коммерческие студии), а вот простому программисту (или художнику) нужно постараться, чтобы записать все в домашних условиях. Для записи звуков нужно использовать качественный микрофон, чтобы не было шумов и щелчков. Формат звуков для Андроид - WAV. Насчет других не экспериментировал. С музыкой дела обстоят проще (хотя кому как), у меня есть небольшой опыт написания не очень сложных музыкальных композиций. У кого есть возможность (таких очень мало), лучше пишите все в живую (гитара, ударные , синтезатор, бас), у кого нету - используйте редакторы (например FL Studio), которых сейчас предостаточно. Конечно если у вас есть знакомый композитор, то попросите его написать музыку, которая будет передавать атмосферу игры (вспомните такие игры: FlatOut 2, PainKiller; какая там музыка!!! и как хорошо она вписывается в игру; хотя есть много игр в которых есть легкая незаметная мелодичная музыка, которая передает много эмоций).

Теория и практика создания игр (часть 4)

Продолжим рассмотрение этапов создания игры:

6. Программирование игровой логики (бета-версия).
7. Создание и подгонка уровней для игры.
8. Оптимизация программного кода игры.


6. Программирование игровой логики (бета-версия).
Допустим у нас уже есть хотя бы один игровой уровень определенного формата (желательно формат не менять на протяжении всей разработки, а продумать его сразу). Теперь нам нужно написать само ядро игры (движок), которое будет работать обрабатывать все элементы игры: логику, прорисовку, звуки и т.д.
Сейчас я вам приведу пример структуры ядра моей игры Gravity Booster:
1) Установка параметров системы (разрешение экрана, скорость обновления игры, загрузка CPU, параметры очистки экрана, параметры связанные с качеством физики в игре).
2) Загрузка всех медиафайлов игры (картинки, музыка, звуки и возможно уровни).
Если файлов очень много, то лучше всего этот процесс автоматизировать. Вот пример кода на App Game Kit (это моя основная среда разработки):

for i=1 to 100
    mediafile$="image/objects/"+str(i)+".png"
    if GetFileExists(mediafile$)=1
        LoadImage(i,mediafile$)
    endif
next i

Этот код можно еще упростить, если убрать проверку на существования файла.
Вот собственно и сама среда разработки (AGK):

3) Создание основного цикла игры. Он будет выглядеть примерно так:
   а) проверка на прикосновение к экрану;
   б) обработка меню;
   в) загрузка и выгрузка уровней;
   г) сохранение настроек и игрового прогресса;
   д) обработка геймплея (проверка на выигрыш и проигрыш);

Желательно писать основной цикл не сплошным кодом, а разбить его на отдельные процедуры. Пример основного цикла с Gravity Booster `a:


DO
nowtime=GetSeconds()

TouchX=Round(GetPointerX())
TouchY=Round(GetPointerY())

gosub _touch    // процедура проверки прикосновений к экрану
gosub _check_menu   //  основная процедура игры которая управляет остальными процедурами

if GetRawKeyState(27)=1 then exit
if stop_game=1 then exit
 Sync()
LOOP

Хотя основной цикл игры очень маленький, но за процедурой gosub _check_menu  скрываются около 1000 строк программного кода. В свою очередь эта процедура разбита еще на 10 меньших процедур.


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

воскресенье, 26 августа 2012 г.

Теория и практика создания игр (часть 3)

Продолжим рассмотрение этапов создания игры:

4. Разработка редактора уровней.
5. Рисование всех графических элементов.

4. Разработка редактора уровней.
В принципе этот этап можно и вообще пропустить, если ваша игра будет генерировать сама уровни или будет состоять всего из одной локации (например стрельба из лука, футбольный симулятор). Конечно можно использовать и обычный Блокнот, но написание уровней (+ их редактирование) займет много времени, особенно если уровней 50 или 100+. Также можно использовать растровый графический редактор (суть метода в том, что мы рисуем уровень, где каждый пиксель обозначает определенный объект или его отсутствие на уровне), но это уже другая история, так как работа с данными графического объекта подразумевает использование низкоуровневого языка программирования (или использование готовых кодов для определенного формата рисунка).
Дальше я приведу пример моего редактора уровней для Gravity Booster`a и самих уровней.
Вот так выглядит сам редактор уровней:
Справа сверху сама игровая область на которую мы и размещаем наши объекты. Все объекты (рисунки) загружаются с папки и размещаются в правом верхнем углу экрана. Внизу находятся разные параметры игры и объектов (от номера уровня до типа гравитации на нем). Все очень просто, но реализация такого редактора требует времени и терпения.

Дальше я приведу пример самого уровня ( как он выглядит в файле):

Теория и практика создания игр (часть 2)

Разделим процесс создания игры на несколько этапов:
  1. Создание информационной модели игры.
  2. Прорисовка базовых графических элементов.
  3. Написание альфа-геймплея игры. 
  4. Разработка редактора уровней.
  5. Рисование всех графических элементов.
  6. Программирование игровой логики (бета-версия).
  7. Создание и подгонка уровней для игры.
  8. Оптимизация программного кода игры.
  9. Запись звука и музыки.
  10. Устранение багов и лагов игры. 
  11. Создание релизной версии продукта.
Порядок некоторых этапом может меняться (кому как удобно). Если работает группа разработчиков, то конечно они все эти этапы проходят одновременно. Так как я работаю один мне удобней использовать именно этот порядок.

1. Создание информационной модели игры.
На этом этапе нужно продумать все аспекты игры: от главного героя и декораций до геймплея и реализации на конкретном языке программирования. Лучшим (но не обязательным) решением для одного человека есть использование интерпретатора (языка программирования высокого уровня). Хотя если у вас много свободного времени, есть навыки в программировании и у вас есть желание написать очень качественную игру можете использовать любой доступный (мощный) язык программирования. Но подумайте вот над чем: сколько времени займет написание движка игры на низкоуровневом языке программирования ( в интерпретаторе 1 строка на С++ 10 строк), сколько вам нужно нарисовать картинок (10, 100 или 1000 картинок) и сколько у вас терпения и нервов? Конечно при этом (использование интерпретаторов) страдает производительность игры, но современные устройства становятся мощнее с каждым днем, и если вы не будете использовать 1000 спрайтов которые динамически изменяются, то все будет хорошо. Я сначала писал на Dark Basic Profesional, потом вышел AGK (мультиплатформенный) и я начал его активно использовать.