Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 314417 сообщений
Cообщения с меткой

игры - Самое интересное в блогах

Следующие 30  »
rss_rss_hh_new

Как оптимизировать игру с помощью полигональных атласов

Среда, 27 Июля 2016 г. 17:53 (ссылка)

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



Например, iPad 2 — всего в нем 512 Мб RAM. Однако приложению доступно только примерно 275 Мб. Когда занимаемая приложением память будет приближаться к этой границе, операционная система пришлет так называемое «Memory warning» — мягко, но настойчиво предложит освободить память. И если лимит все же будет превышен, операционная система остановит приложение. Пользователь будет думать, что ваша игра упала и побежит писать гневное письмо в саппорт.







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



Текстуры и атласы



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



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







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



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



2. Получившиеся фигуры сложной формы (те самые полигоны) нужно как можно плотнее упаковать в атлас. Здесь был использован один из вариантов алгоритма пчелиного роя, который, проводя многочисленные попытки с использованием генератора случайных чисел, пытался найти достаточно плотный вариант упаковки. Здесь потребовался компромисс другого рода — между качеством упаковки и затрачиваемым на упаковку временем.



Пройдя довольно длительный путь и совершив попытку упаковки тестового атласа примерно 100 000 раз, мы наконец добились результата:







Как видно, упаковка действительно гораздо плотнее. В зависимости от текстур, выигрыш может составлять до 1/4 их площади. Можно также сформировать отладочный вариант атласа, в котором видно разбивку текстур на треугольники.







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



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



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





Потребуется:




  • Исключить из отрисовки треугольники, которые не попадают в рисуемую часть текстуры


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




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



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



Немного технических подробностей. Время упаковки полигонального атласа сильно зависит от настройки качества упаковки. Поскольку при любом изменении набора текстур атласы надо пересобирать, это приходится делать довольно часто. Поэтому обычно у нас включен режим «минимальная плотность, максимальная скорость». В таком режиме 8 атласов размером 2048x2048 пакуются примерно 5 минут. В общих чертах процесс упаковки выглядит так:




  • текстуры разбиваются на треугольники;


  • текстуры сортируются по убыванию высоты;


  • предварительная упаковка текстур. Выбираются все текстуры по порядку и для каждой ищется свободное место в атласе;


  • производится несколько попыток более плотной переупаковки текстур. Количество попыток зависит от настроек качества;


  • если удалось улучшить первоначальную упаковку, то в атлас добавляются дополнительные текстуры.




Как правило, уже предварительная упаковка является достаточно плотной. При попытке повышения качества, время упаковки вырастает очень сильно — до нескольких часов на 1 атлас — а выигрыш может составлять 2-3 дополнительно упакованные текстуры.



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



class Drawable {
virtual int Width() const;
virtual int Height() const;
virtual bool HitTest(int x, int y) const;
virtual void Draw(SpriteBatch* batch, const FPoint& position);
}


У неё уже были функции получения размера, проверки непрозрачности пикселя для обработки кликов и отрисовки. Потребовалось только создать еще один класс PolygonalSprite, который правильно реализовывал бы эти функции с учетом разбиения текстуры на треугольники.



Также, чтобы клиентский код мог получить список треугольников текстуры и произвести с ними какие-то преобразования, в интерфейс была добавлена функция



virtual void GetGeometry(std::vector& geometry) const;


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



Сейчас полигональные атласы используются во многих наших проектах и можно считать, что они прошли испытание временем. Например, в нашем следующем free-to-play проекте Gardenscapes, мировой релиз которого состоится совсем скоро, основная часть игрового процесса происходит в принадлежащем игроку саду.



Для него нарисовано просто огромное количество разнообразных текстур, некоторые из них использованы в настоящей статье как примеры. Сейчас все эти текстуры умещаются в 8 полигональных атласов 2048x2048. А вот если бы мы упаковывали атласы обычным способом, то их получилось бы уже 11. Таким образом, мы получаем экономию оперативной памяти, в зависимости от применяемого графического формата, от 6 до 48 МБ. А гейм-дизайнеры могут предложить на четверь красивеньких текстур больше!



Об авторе: Сергей Шестаков, технический директор компании Playrix.
Original source: habrahabr.ru.

https://habrahabr.ru/post/306554/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
chirina

Кроссворды, пазлы, судоку и другие головоломки онлайн

Среда, 27 Июля 2016 г. 18:40 (ссылка)

Это цитата сообщения Liousy Оригинальное сообщение

Кроссворды, пазлы, судоку и другие головоломки онлайн




http://japonskie.ru/



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



Головоломки не только позволят вам приятно провести время, но и использовать его с пользой для мозга.



Регулярно добавляются новые.



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





http://japonskie.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
КЕЙТАС

Каков шанс выиграть в онлайн автоматах

Среда, 27 Июля 2016 г. 15:08 (ссылка)


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



Читать далее...
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Chizz_TecTeP

Монетизация Pokemon go

Среда, 27 Июля 2016 г. 13:48 (ссылка)

Говорят, что ежедневно компании-владельцы покемон го зарабатывают больше ляма в день.
Интересно, как?

Почитав на эту тему вывел два источника

1. In-app покупки
2. Сотрудничество с компаниями (рестораны, различные заведения), которые хотят, чтобы рядом с ними были покетстопы.

И всё? Лям в день? О_о

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_www_secondstreet_ru

Когда на улице дождь...

Вторник, 26 Июля 2016 г. 23:07 (ссылка)





Займите ребенка дома — сделайте классики в детской из скотча!

http://feedproxy.google.com/~r/secondstreet/posts/~3/RmjFdA15pio/kogda-na-ulice-dozhd.html

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_secondstreet_ru

Когда на улице дождь...

Вторник, 26 Июля 2016 г. 23:07 (ссылка)





Займите ребенка дома — сделайте классики в детской из скотча!

http://feedproxy.google.com/~r/secondstreet/posts/~3/RmjFdA15pio/kogda-na-ulice-dozhd.html

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
EFACHKA

Открытие онлайн казино Super Slots

Среда, 27 Июля 2016 г. 10:12 (ссылка)


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



Читать далее...
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Сплетни-Новости

Как в казино за деньгами бегать

Среда, 27 Июля 2016 г. 07:18 (ссылка)

игровые автоматы, Вулкан, казино Вулкан (203x152, 56Kb)
На форуме человек так расстрадался:
В каком казино чаще выигрывают (651x79, 38Kb)
Ну не знает, что ему прямая дорога в казино. В casino-777vulkan.com, туда за деньгами многие ходят.
Хотя Википедия, например, в одной из статей сообщает, что казино - это всего лишь место, где проводятся какие-либо развлекательные мероприятия.
Слово "казино" сейчас объявлено ругательным, и за его упоминание могут надавать по шеям... Но ведь это игра, всего-навсего игра! Проверка с помощью игровых автоматов хорошо ли к тебе сегодня относится Судьба.
А то, что сейчас посетитель, скорее всего, зайти в казино не сможет (я не смогла по ссылке, увы) - это явление временное. Компанейщина. Пока "вход ограничен", а там, глядишь, и сумеют договориться наши развлекатели со строгими морализаторами. Кто-нибудь верит, что это идет борьба за нравственность и сбережение семейного бюджета? Я - не верю ;)
Семейный бюджет расцветает только под влиянием умной ценовой политики, при усмирении аппетитов монополистов...
А проявить нездоровый азарт, если на то пошло, деньги выиграть или просадить можно любым способом, да хоть на спор, кто первый в дверь войдет, мужчина или женщина.

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

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

В казино Вулкан все красиво. Оживляется фантазия, можно дополнительно прослеживать какие именно позиции выпали в выигрыш.
Сфинксы - а вдруг это к путешествию? Мамзелька с бокалом вина, или рыцарь с мускулами - к амурам и лямурам...Особенно хорошо что там думать не надо, все в руках Фортуны.казино-1 (198x139, 39Kb)
казино (204x127, 50Kb)
Ну вот, как видите, все терзается человек на форуме, боится рискнуть деньгами:
С выигрышами 1000 долларов в месяц (651x78, 28Kb)
А ведь там можно и бесплатно в слоты играть!
Оппа! Я смогла войти! Чесслово, вот только что вошла! Попробуйте, может, и у вас получится. Похоже, что Вулкан сумел найти общий язык с запретителями ;)

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<игры - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda