Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 08.06.2015, 20:20
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 1  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
По умолчанию Способ оптимизации и нагрузки на клиент

Всем еще раз привет. На этот раз задам достаточно сильно волнующий меня вопрос, касательно игровой карты.
Я нарисовал одну большую карту размером 3000х3500. Достаточно объемная вышла т.к весит около 18 мб. Также нарисовал объекты, которые раскидываются по всей карте(некоторые из них являются препятствием, что-то вроде стен, деревье и т.п. Собственно схема размещения её на сцене.
1) Создаю 2 спрайта контейнера. В первый я размещаю карту(обычным способом, типо из библиотеки выгружаю спрайт), во втором контейнере размещаю объекты. В итоге получаем игровую карту со всем вытекающем.
2) Перемещение работает таким образом, что двигаются контейнера с самой платформой.
Но последнее время меня стал волновать вопрос производительности, а именно насколько сильно я налажал в плане реализации. Чтобы снизить нагрузку на клиент, я уменьшил качество картинки в библиотеке примерно до 60%. Собственно вес карты стал примерно 5мбайт вместо прошлых 18, но при этом конечно пришлось пожертвовать качеством. У меня на уме было два варианта реализовать карту такого масштаба. Первый же, это как я сделал, второй, поделить всю карту на ячейки и программно с помощью цикла расставить их на сцене. Второй вариант мне не очень понравился, во-первых я без понятия на сколько частей делить эту карту, а от этого зависит и размер одной ячейки. А еще делал таким образом, переводил картинку в Bitmap и ставил smooth true, но судя по всему, на производительность это почти не повлияло. Мб знает кто еще какие варианты или кто подскажет советом, как же все таки платформы таких размеров будет правильнее размещать на сцене? Будь все намного проще, если бы карта изначально строилась из ячеек, но для этого понадобится достаточно солидный тайлсет, мне было гораздо удобнее рисовать её от руки, не заморачиваясь, что где-то швы дорог или текстур не будут несоответствовать реальности.

Старый 08.06.2015, 23:27
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 2  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Правильнее и правда будет разбить карту на части.

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

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

Старый 10.06.2015, 00:54
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 3  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Спасибо) Кое как, да нашел способ разбить карту на части и программно ее воссоздать. Способ оказался верняк, т.к повысил производительность почти в 3 раза)

Старый 11.06.2015, 02:38
miramax вне форума Посмотреть профиль Отправить личное сообщение для miramax Посетить домашнюю страницу miramax Найти все сообщения от miramax
  № 4  
Ответить с цитированием
miramax
 
Аватар для miramax

Регистрация: Oct 2005
Адрес: Борисоглебск
Сообщений: 1,702
Отправить сообщение для miramax с помощью ICQ Отправить сообщение для miramax с помощью AIM Отправить сообщение для miramax с помощью MSN Отправить сообщение для miramax с помощью Yahoo Отправить сообщение для miramax с помощью Skype™
Цитата:
Сообщение от Godwarlock Посмотреть сообщение
Мб знает кто еще какие варианты или кто подскажет советом, как же все таки платформы таких размеров будет правильнее размещать на сцене?
К сожалению никаких. Производительность встретится с затыком в размере перерисовываемой области в пикселах.
Если битмап фон размером 1920х1080 на экране 1920х1080 будет двигаться, плеер будет медленно перерисовывать весь дисплей лист (включая все вышестоящие компоненты), если размер перерисовываемой области мешьне - фпс будет повышаться. Можно уменьшить размер окна флешплеера - поможет. Что там за границами отрисовываемой области - производительность напрягает почти никак.
Погуглите Adobe Scout - что бы выявить узкие места. "Качество" джипега или пнг - не влияет ни на что, всё равно всё разворачивается в памяти в информацию об отдельных пикселах. И имеет значение отображаемая перерисовываемая область карты.
Попробуйте, перевести работу с объектами на карте в GPU фреймворк типа Genome2D или Starling
__________________
AS3 | www.FLAPS.ru | Русские флэшеры самые умные флэшеры в мире. ©

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:41.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 16:41.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.