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

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

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

Регистрация: Aug 2006
Адрес: Мюнхен
Сообщений: 509
Отправить сообщение для enepx с помощью ICQ Отправить сообщение для enepx с помощью Yahoo Отправить сообщение для enepx с помощью Skype™
По умолчанию Вопросы оптимизации игры

Привет всем,
мы создаем мультиплеер-файт игру. У меня есть пара общих вопросов по оптимизации:

1. Загрузка ресурсов (раскадрованные PNG одинакового размера по ширине и высоте). Игрок настраиваемый, т.е. состоит из разных частей, каждая из которых отдельный PNG файл с прозрачностью. Композиция частей это обычное наложение в нужном порядке, например: тело (1), волосы (2), шорты (3) и т.д. Сейчас мы имеем 12 действий игроков (действие - это набор фреймов (не флешевых ), фрейм - набор PNG файлов) по 4 части в каждом (тело, волосы, шорты, футболка), получается 908 PNG-файлов.
Я реализовал так, что все эти файлы грузятся последовательно, но хоть они небольшие, получается очень-очень долго раз в 5-10 медленне, чем один файл.
Заказчик предоставляет ресурсы в PNG файлах, все действия и части описаны в XML, который отдает сервер. Относительно этих XML я формирую пути для загрузки PNG-файлов. Понимаю, что запихать все в одну SWF-библиотеку было бы выходом, но потеряем гибкость. Что можете посоветовать по этому поводу?

2. 908 PNG файлов занимают чуть более 1 Гб в оперативной памяти
Фрейм я делаю так: Bitmap, в него я отрисовываю (draw()) DisplayObjectContainer, который содержит битмапы PNG. Думал, что это самый оптимальный способ. Но я так думаю, что эти PNG продолжают висеть в памяти, а мне нужно хранить лишь композицию этих PNG, т.е., например, вместо 4 PNG (тело, волосы, шорты, футболка) хранить одну (одетый волосатый чувак с телом). Что можете посоветовать по этому поводу тоже?

Заранее спасибо за помощь!

Добавлено через 45 минут
Еще про пункт (2):
Сейчас я делаю примерно так:
Код AS3:
var container:Sprite = new Sprite();
var element:DisplayObject;
 
for (var i:uint = 0; i < _loader.getBinariesArray().length; i++) {
	element = _loader.getBinariesArray()[i];
	container.addChild(element);
}
 
var bmpData:BitmapData = new BitmapData(GlobalSettings.CHARACTER_IMAGE_WIDTH, GlobalSettings.CHARACTER_IMAGE_HEIGHT, true, 0);
bmpData.draw(container);
bitmapData = bmpData;
Мне кажется, что у меня element, в котором PNG, хранится очень долго, они ведь мне не нужны, мне нужна лишь БитмапДата.
Вызов GarbageCollector не помогает.


Последний раз редактировалось enepx; 24.08.2009 в 09:18. Причина: добавил про прозрачность
Старый 24.08.2009, 09:20
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Не надо грузить png по одному, надо грузить либу с картинками.
И да, пока у вас в коде такие ужасные циклы, говорить о производительности не приходится.

Старый 24.08.2009, 09:25
enepx вне форума Посмотреть профиль Отправить личное сообщение для enepx Посетить домашнюю страницу enepx Найти все сообщения от enepx
  № 3  
Ответить с цитированием
enepx
 
Аватар для enepx

Регистрация: Aug 2006
Адрес: Мюнхен
Сообщений: 509
Отправить сообщение для enepx с помощью ICQ Отправить сообщение для enepx с помощью Yahoo Отправить сообщение для enepx с помощью Skype™
Про циклы - понял, спасибо.
Но я не смогу грузить либу, как можно будет пачкой загрузить оттуда 908 картинок? Это поможет в экономии памяти или только в скорости загрузки?

Старый 24.08.2009, 09:45
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Поможет и в памяти и в особенности скорости загрузки.

Старый 24.08.2009, 09:53
enepx вне форума Посмотреть профиль Отправить личное сообщение для enepx Посетить домашнюю страницу enepx Найти все сообщения от enepx
  № 5  
Ответить с цитированием
enepx
 
Аватар для enepx

Регистрация: Aug 2006
Адрес: Мюнхен
Сообщений: 509
Отправить сообщение для enepx с помощью ICQ Отправить сообщение для enepx с помощью Yahoo Отправить сообщение для enepx с помощью Skype™
Про скорость загрузки это понятно на 100%.
Про память, я сделал оптимизацию в 5(!) раз, теперь вместо 1100Мб, всего 250Мб в памяти ест. Я просто сделал BitmapData.dispose() ненужным PNG (отдельным частям игрока). Ура!

Старый 24.08.2009, 14:34
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 6  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
делайте не секвенцию png, а avi с прозрачностью. Можно выиграть неплохо в размерах.

Старый 24.08.2009, 14:40
Dezar вне форума Посмотреть профиль Отправить личное сообщение для Dezar Найти все сообщения от Dezar
  № 7  
Ответить с цитированием
Dezar

Регистрация: Jan 2008
Адрес: Питер
Сообщений: 389
Цитата:
делайте не секвенцию png, а avi с прозрачностью. Можно выиграть неплохо в размерах.
и сильно потерять в качестве(пиксели полезут).

у меня такая же беда была..я вышел из ситуации тем..что оптимизировал пнг(до импорта)
вместо 30 кб(к примеру) 1 пнг весил 5 кб.
потрея качества конечно была..НО..елезаметная...просто отсеиваются цвета,которые нам не нужны.

+ благодаря ухудшение качества..игра стала куда быстрее...

Старый 24.08.2009, 16:10
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 8  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
ИМО, самым практичным было бы наделать несколько библиотек, к примеру, разделить по персонажам. Все ПНГ относящиеся к одному персонажу - запихать в 1 ПНГ файл, а потом его же импортировать во флеш (чтобы сразу использовать уже конвертную флешевую битмапдату, а не конвертировать на ходу). Возможно, практичнее будет не 1 персонаж = 1 файл, а по движениям разбить... надо уже смотреть по обстоятельствам.
Ну и соответственно, не компилировать картинки Флексовым компилятором... у флеша и опций больше, и файлы меньшими получаются.
__________________
Hell is the possibility of sanity

Старый 24.08.2009, 16:20
enepx вне форума Посмотреть профиль Отправить личное сообщение для enepx Посетить домашнюю страницу enepx Найти все сообщения от enepx
  № 9  
Ответить с цитированием
enepx
 
Аватар для enepx

Регистрация: Aug 2006
Адрес: Мюнхен
Сообщений: 509
Отправить сообщение для enepx с помощью ICQ Отправить сообщение для enepx с помощью Yahoo Отправить сообщение для enepx с помощью Skype™
Так сгруппировать не получится, потому что понятия персонажа как такового нет, есть объекты: тело, волосы, очки, трусы и т.д. У каждого обыекта есть свой тип, например, красные трусы, синие трусы, розовые трусы и т.д. Каждый тип - это набор PNG. Можно сделать отдельную либу на каждый тип каждого объекта.
Частичное решение проблемы - это кэш браузера, после первого раза все грузится довольно быстро.
Еще придумал решение - ZIP-файл, благо либы для этого есть.

Старый 24.08.2009, 16:21
Dezar вне форума Посмотреть профиль Отправить личное сообщение для Dezar Найти все сообщения от Dezar
  № 10  
Ответить с цитированием
Dezar

Регистрация: Jan 2008
Адрес: Питер
Сообщений: 389
в таком случае если в игре будет одновременно 5 разных игроков..суть не изменится..
выше описанный вариант хорош, если играют 5 персов одной масти и одинаково одетые.так как мы будет грузить 1 флэшку, а потом ее дублировать

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

Теги
загрузка , игра , оперативная память , оптимизация

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

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


 


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


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