Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2012, 11:59   #11
Nikk[UA]
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 41
По умолчанию

Есть куча текстовых файлов (примерно 10 000). Каждый файл весит около 200кб. Структура файла:

Цитата:
1 255 255 255 255
1 255 255 255 255
1 255 255 255 255
1 255 255 255 255
1 255 255 255 255
1 255 255 255 255
.....
где 1 - ид пикселя в мире(нужно для определения поведения с игроком), 255 255 255 - RGB и последнее 255 - альфа канал


Программа подгружает только тот файл, часть которого должна отрисовываться.


Все файлы весят почти 700мб, а в zip архиве 2мб

Разница на глаза
Nikk[UA] вне форума Ответить с цитированием
Старый 20.06.2012, 12:03   #12
Nikk[UA]
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 41
По умолчанию

Фишка моей игры в том, что все пиксели динамичны, и игрок может их ломать\строить. Одним словом такая вот песочница
Nikk[UA] вне форума Ответить с цитированием
Старый 20.06.2012, 14:09   #13
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Вам уже не 1 раз говорено - сделайте бинарный файл, а не текстовый
тогда каждая строка вместо 19 байт будет 5 байт.
Плюс чтение будет в разы быстрее.
Ну и конечно можно посоветовать сделать блоки
блок описываете размерами (для упрощения можно только 1-мерные блоки брать, т.е. просто набор, 1мерная цепочка), в нем все одинаковые пиксели, записывать данные 1 пикселя.
потом в программе это дело "разжимать", т.е. зная размеры блока массив пикселей заполнять одинаковыми значениями этого пикселя.

Ну а в свете данной в этой теме информации - не проще хранить пнг - рисунок ??? )) всё те же ргба пиксели, да и сжатие есть, плюс сразу видно как выглядит кусочек мира
phomm вне форума Ответить с цитированием
Старый 20.06.2012, 15:03   #14
Nikk[UA]
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 41
По умолчанию

Попробую бинарным
Nikk[UA] вне форума Ответить с цитированием
Старый 20.06.2012, 18:44   #15
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

phomm все правильно сказал, но есть и еще идеи:
- какой смысл хранить пиксели с "фоновыми" значениями? Мне кажется, лучше хранить только те, что отличаются от "фоновых". А чтобы обеспечить скорость поиска, использовать древовидную структуру.
Судя по всему, у Вас 10000 файлов по 10000 пикселей. Итого - 100 млн. Переход на бинарное представление, конечно, поможет Вам уместиться в полгигабайта, и, возможно, это все будет прекрасно помещаться в памяти и достаточно быстро работать. Но полгига дискового пространства + немалое время на загрузку...
Каков процент пикселей, которые имеют значения, отличающиеся от "фоновых"?
s-andriano вне форума Ответить с цитированием
Старый 21.06.2012, 00:15   #16
Nikk[UA]
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 41
По умолчанию

я паралельно работаю над генератором мира, потому уже небольшие бугорки есть. Примерно 50% земли и 50% прозрачного воздуха

так же смог сжать файл до 4 мб без архива, только с одной бинаркой и сократил немного мир. 6000х6000
Nikk[UA] вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Код распаковки ZIP-архива стал выдавать ошибку Maxx Microsoft Office Excel 1 23.10.2014 07:35
Чтение из ZIP-файла "на лету" (и ещё BASS/BASSMOD) Wanderer_r Мультимедиа в Delphi 3 20.03.2010 21:14
Чтение, чтение и еще раз чтение Alex Cones Общие вопросы Delphi 3 07.06.2009 15:28
Можно ли открыть на чтение файл.txt из архива rar или zip. slips Общие вопросы Delphi 6 06.02.2009 23:51
Zip Witaliy PHP 1 11.07.2008 17:33