|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.07.2009, 16:43 | #11 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
array of Txxx = array of dword, всего лишь массив указателей, из 1 000 000 элементов, например, займёт около 4 мегабайт, т.е. в принципе нет особой разницы зарезервируешь ли ты сразу это место или в процессе работы (если число объектов заведомо меньше какого-то числа) потому что этот объём памяти намного меньше, чем память необходимая для хранения собственно объектов. Но хранить всё в массиве (как статическом, так и динамическом) - по-индусски, т.к. при освобождении объекта на его месте в массиве останется nil, и нужно либо сдвигать всё влево, чтоб не оставалось дырок, либо тут же заполнять их новыми объектами. Лучше делать списками, тем более в делфи для этого есть класс TList - так при освобождении объекта предыдущий элемент сцепится со следующим.
Если объект больше не нужен (убит, улетел за экран и не вернётся...) - тут же вызывать метод "самоубийства" TActor.dead, который "вырежет" себя из списка и уничтожит Код:
пыщь
|
28.07.2009, 17:13 | #12 | |
Участник клуба
Регистрация: 06.03.2009
Сообщений: 1,346
|
Цитата:
|
|
28.07.2009, 23:06 | #13 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Можно подумать в списках оно по волшебству сдвигается ) Те же массивы, только внутреннее устройство скрыто. Согласен насчет того, что незачем изобретать велосипед.
А вообще в играх (в серьезных) надо делать не как удобнее, а как лучше/быстрее/оптимальнее, тогда будет хорошая игра. Я к примеру не раз читал о "вреде" ООП.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
28.07.2009, 23:27 | #14 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Ну да, я просто пошел более простым путём:
ActorList.Add(self); ActorList.Delete(ActorList.IndexOf( self)); Глядя на непропорционально растущие размеры/требования игрушек, не скажешь, что кто-то пытается делать лучше/быстрее/оптимальнее, тот же XNA, который сейчас активно пиарят - кругом классы, классы, классы.
пыщь
|
29.07.2009, 07:32 | #15 |
not
Участник клуба
Регистрация: 27.06.2009
Сообщений: 1,399
|
А максимально сколько можно выделить память под объекты,
и еще вопрос как получить размер занимаиймой памяти динамического массива,пытаюс получить а он мне выдает указатель 4-байта Код:
|
29.07.2009, 15:26 | #16 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
А я не утруждаю себя созданием алгоритмов сдвига, ...достаточно пометить, что данная запись не используется, оставив ее ресурсы в памяти. Поскольку тип объекта универсален, то следующий объект создается в ближайшей неиспользуемой записи банальным затиранием старой информации новой, или если все записи подряд используются, то в новой, ...разумеется все при работе с динамическим массивом.
VintProg, не заморачивайся с подсчетами, есть в винде Диспетчер задач -> Процессы, в нем четко прописаны все ресурсы. По поводу динамического массива. Сначала задай размер, потом проверяй.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
30.07.2009, 17:24 | #17 | ||
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Цитата:
Кстати если использовать вместо записей классы, можно реально освобождать память отдельных элементов - объектов класса, не изменяя размерности массива, непосредственно элемент массива будет 4 байта занимать и являться указателем. Цитата:
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог Последний раз редактировалось mutabor; 30.07.2009 в 17:29. |
||
30.07.2009, 21:18 | #18 | |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Цитата:
Если будет переход на следующую карту, например, то массив освободится, и забьется другими ресурсами. А статика - это удел редактора карт, там все ресурсы нужны сразу, чтобы выбирать объекты.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
MapX создание объектов | Google[Bot] | Компоненты Delphi | 7 | 27.01.2012 08:33 |
Динамическое создание объектов | Костян Пират | Общие вопросы Delphi | 12 | 24.05.2011 18:39 |
Создание/уничтожение объектов | nimf | Общие вопросы Delphi | 10 | 14.04.2008 10:54 |
Динамическое создание объектов | LepihinMS | Общие вопросы Delphi | 18 | 05.07.2007 23:31 |
Создание новых объектов | Washington | Общие вопросы Delphi | 1 | 10.03.2007 21:57 |