Pull to refresh

Размеры экранов игры на android — как я поступил

Перед тем, как начать разрабатывать игры на андроид, я долгое время делал браузерные flash игры. Там все легко, задал размер 700*525 и все. Когда столкнулся с андроидами, то и дело натыкался на слова, — «Размер экрана на андроид — это целая наука». Да, это наука. Но мы сегодня разберем на практике один пример. Я не сказал бы что он идеален, но практика показала, что он работает,
хоть и не устойчиво. Но я им пользуюсь.

Для начала грубо берем:
— самый маленький размер экрана 480*800
— самый большой размер экрана 1300*1920

… и создаем средний размер, у меня это 720*1280:

image

Теперь у нас есть 3-и размера экрана: x1, x2, x3.

Далее нам нужно узнать, какой у нас размер экрана, на котором запущена игра (все это делаем, в самом начале игры)? Во flash на языке as3 это:
var m_stageW:int = flash.system.Capabilities.screenResolutionX;
var m_stageH:int = flash.system.Capabilities.screenResolutionY;

После узнаем размера экрана в иксах:
var m_sizeStageX:int;

if (m_stageH<= 800)
{
m_sizeStageX = 1;
}
else
if (m_stageH> 1280)
{
m_sizeStageX = 3;
}
else
{
m_sizeStageX = 2;
}

У меня 7-ми дюймовый планшет. Размер экрана 600*1024. (У меня переменная m_stageH = 1024). Значит для меня m_sizeStageX = 2; Игра будет использовать для моего планшета графику размера x2.

Что такое рабочая зона?

Рабочая зона есть только в x2, x3. Она обозначена зеленым цветом:

image

Все что находится в рабочей зелёной зоне x3 должно влазить в рабочею зелёную зону x2:

image

Все что находится в рабочей зелёной зоне x2 должно влазить в экран x1:

image

Я использовал 3-и размера графики, что бы не было потери качества. Вся графика рисовалась под самый большой размер экрана x3. А после я ручками уменьшал для всех остальных экранов с отношением:
x2 = 70%
x1 = 50%

Например, кнопка выхода в меню. На самом большом экране она имеет размер 100*100 пикселей. Значит для экрана x2 уменьшаем картинку до 70% и получаем 70*70 пикселей. Для экрана x1 получится 50*50 пикселей. И в итоге у Вас получится три кнопки. По каждой для каждого экрана.

image

Грубо говоря, Вы делаете не одну игру, а сразу три. Ведь каждый объект игры нужно сделать трижды. Но это рационально для объектов, которые нужно выделить. Которые на переднем плане, с которыми игрок взаимодействует.

Давайте разберем меню игры. Красными стрелочками я обозначил те объекты, которые я сделал для всех размеров экранов:
— название игры;
— парень с девушкой;
— кнопки меню;

Эти объекты будут супер качественные. А все остальное: небо, дом, земля, хмарки будут размыты. Потому что я буду изменять их размер под каждый экран обычным растягиванием. А при растягивании, качество картинки теряется:

image

Все объекты сцены выставляются программно, желательно от центра экрана. Или берется соотношения сторон. Например, как я выставлял кнопки меню на предыдущем рисунке? Кнопку Play я поставил по центру. Кнопку перехода на сайт (та что слева) — это левая половина экрана разделена на 2. Правая кнопка (стереть прогресс) аналогично левой.

Вывод:

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

Всем спасибо, кто дочитал до конца. Пытался вкратце описывать, не растягивать скучными буквами. До нового скила.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.