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

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

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
По умолчанию Объектный пул.

Как я себе представляю, что такое пул.
Пул - это массив объектов, которые заранее инициализируются, и если неизвестно, сколько из них может понадобиться, при нехватке инициализируются ещё.
Объекты в пуле хранятся для отсутствия необходимости в создании новых объектов на лету в работе программы.
Это позволяет экономить производительность за счёт заранее забронированной памяти.
Как правило, свойства объекта сбрасываются на свойства по умолчанию, при условии, что затем нужны свойства по-умолчанию, и не сбрасываются, если в последствии они устанавливаются в нужные.

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

Почему я считаю, что это не пул?
Я уже описал, как я представляю себе пул. Я считаю, что объект из пула должен доставаться либо чистым, либо его свойства должны быть перезаписаны перед использованием. Но то, что представлено больше похоже на обычную базу данных с доставанием значений по ключам.

//Объясните же мне, почему я неправ и что же на самом деле пул.
__________________
There is no thing in this world that is not simple.

Старый 03.10.2015, 14:53
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 2  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Это не пул.

И да, пул (в моем понимании) не столько (не только?) резервирует память, сколько экономит время на выполнение конструктора, т.е. на создание объекта, и, как следствие, время, которое GC откусит на уборку уже отработанных объектов.
__________________
Поймай яблоко 2!

Старый 03.10.2015, 15:03
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 3  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Тот, кто работает над проектом называет это "объектный пул", при этом вытаскивая не первый попавшийся объект, а ищет объект с нужными координатами, чтобы получить его другие значения.
Этот "тот кто работает над проектом" я. Он мне уже весь мозг взорвал пытаясь доказать, что у меня не пул объектов а просто массив или что-то в этом роде.
Суть такая: есть класс ObstaclePool с набором статических методов. При запуске локации туда передается XML инструкция для создания объектов, которая сгенерирована редактором локаций. Этот пул создает необходимые объекты. Но не просто так в том количестве, в котором они прописаны в XML, а с максимальной экономией памяти. То есть если 2 объекта одного типа не могут одновременно быть отображены на экране, то и нет смысла создавать два объекта. Будет исползоваться один и тот же, просто его значения будут меняться в соответствии с теми значениями, которые заданы для его координат. Все эти настройки координат хранятся в спецаильной обертке ObjectWrapper
Код AS3:
internal class ObstacleWrapper {
 
 
	public var obstacle:	Obstacle	= null;
	public var isDestroyed:	Boolean		= false;
	public var posX:		int			= 0; 
	public var posY:		int			= 0; 
	public var health:		int			= 0; 
 
	public function ObstacleWrapper() {
 
	}
}
И в пулл помещаются эти обертки, с созданными объектами. Дополнительно у этого класса-пула есть методы для удобного поиска объекта, который нужно добавить на указанные координаты (переместился экран так, что объект скрылся, удаляем его из дисплей листа, вернулся - снова добавляем). Но суть всего этого класса заключается в том, чтобы не создавать все эти обертки и объекты заново при рестарте локации (при проигрыше или по требованию игрока), а просто ресетнуть значения у тех, что уже были созданы и хранятся в пуле

Но Захар мне упорно пытается доказать, что значения должны быть сброшены на значения по умолчанию при извлечении объекта из пула. А если этого не происходит, то это совсем не пул)

Старый 03.10.2015, 15:03
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 4  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
https://ru.wikipedia.org/wiki/%D0%9E...BF%D1%83%D0%BB
Гугл пестрит определениями того, что есть объектный пул.

Старый 03.10.2015, 15:07
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 5  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от udaaff Посмотреть сообщение
https://ru.wikipedia.org/wiki/%D0%9E...BF%D1%83%D0%BB
Гугл пестрит определениями того, что есть объектный пул.
Я ему это уже скидывал)

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Именно, это просто массив данных об объектах, или "карта объектов", которая хранит не только позицию, а и другие свойства объекта, повреждение и т.д.
__________________
There is no thing in this world that is not simple.

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

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
caseyryan, почему ты считаешь, что это именно объектный пул, а не объектный массив?

Старый 03.10.2015, 15:14
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 8  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Ну тогда у тебя целый завод, а не пул там у тебя все, и пул в том числе.
__________________
Поймай яблоко 2!

Старый 03.10.2015, 15:17
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 9  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
caseyryan, почему ты считаешь, что это именно объектный пул, а не объектный массив?
Это игра слов "объектный пул", "объектный массив", можно назвать "объектный набор" или "коллекция объектов".
Главное что определению пула это соответствует. Объекты создаются один раз при запуске, а потом используются во всем процессе игры одни и те же
Цитата:
Ну тогда у тебя целый завод, а не пул там у тебя все, и пул в том числе.
Да! Ты здесь первый кто это сразу просек. Как я уже написал, там для удобства добавлены методы поиска объекта.
Но основная задача - все-таки пул

Старый 03.10.2015, 15:19
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 10  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
Сообщение от Zebestov Посмотреть сообщение
Ну тогда у тебя целый завод, а не пул там у тебя все, и пул в том числе.
Больше напоминает объектную клоаку
Цитата:
Если объекты после возвращения в пул оказываются в неправильном или неопределённом состоянии, такая конструкция называется объектной клоакой

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

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

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


 


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


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