![]() |
|
Модераторы: javastic, AntonSaburov |
![]()
|
|
| darkvivi |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 24.9.2008 Репутация: 1 Всего: 1 |
Для написания игры мне требуется много массивов и много ячек в каждом из массивов. Если я делаю их слишком много, то игра выдаёт Out of memory. Как сохранить память? (а если я делаю методы, это сохраняет память? т.е. не пишу в update(), а создаю собственный метод и ссылаюсь на него). Как лучше всего создавать большие массивы для сохранения памяти??
Спасибо |
|||
|
||||
| Skynin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 1.7.2007 Где: Харьков Репутация: 2 Всего: 10 |
Если память занята - то она занята.
Большие массивы лучше не создавать, а оптимизировать алгоритмы работы, и когда нужны будут - маленькие по занимаемой памяти массивы. Хитростей оптимизации много - можно поучиться по книжке "Алгоритмы. Построение и анализ" Т. Кормен, Ч. Лейзер В самом крайнем случае можно сохранять массив в RMS а работать только с нужной частью. Тогда, правда, оптимизировать придется еще мудреней, потому что чтение/запись в RMS ну очень медленная. фразы - а если я делаю методы, это сохраняет память? т.е. не пишу в update(), а создаю собственный метод и ссылаюсь на него - не понял. |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Если для хранения значений достаточно short или byte - используйте их вместо int.
Вместо двух- или трёхмерного массива можно использовать линейный и написать метод доступа. Если в массиве много нулей, его нужно как-то запаковать. |
|||
|
||||
| darkvivi |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 24.9.2008 Репутация: 1 Всего: 1 |
Short или byte? Сейчас попробую. А как быть со Sprite[]?
Это сообщение отредактировал(а) darkvivi - 17.6.2009, 16:14 |
|||
|
||||
| Skynin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 1.7.2007 Где: Харьков Репутация: 2 Всего: 10 |
Уменьшать размер объектов класса Sprite. Если Sprite - это класс хранящий кадр-картинку, то может заменить скажем 8 Sprite на один FrameSprite8 - в котором будет хранится первоначальная картинка, а остальные кадры - изменения к ней, (или к предыдущей картинке) Выгружать спрайты из памяти, если не видны. и т.д. |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Не пользуйся Game Builder из NetBeans или т.п. (или делай свой), Game Builder все данные сохраняет в массивах, инициализируемых в коде класса, а значит все эти массивы будут загружены в память, даже если они не нужны.
Картинки для спрайтов - в одном PNG, а нужный спрайт можно когда нужно создать из Image. Но для экономии памяти можно спрайтами не пользоваться. |
|||
|
||||
| darkvivi |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 24.9.2008 Репутация: 1 Всего: 1 |
А чем лучше пользоваться?
|
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Читай Любавин С.А. - Программирование игр для сотовых телефонов на J2ME.
Кстати, Game Builder'ом можно воспользоваться для того чтобы отредактировать игровое поле, посмотреть как движутся спрайты. Но итоговую программу создавать в другом проекте. Сгенерированные Game Builder'ом массивы преобразовать в двоичные файлы ресурсов и включить в новый проект. |
|||
|
||||
![]()
|
FAQ раздела лежит здесь! |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |