Перейти к содержанию
Fire Monkey от А до Я
  • 0

Как хранить картинки?


sulion

Вопрос

TLDR: Откуда из файлов игры лучше загружать большое количество картинок?

 

Доброе утро, коллеги!

Я собираюсь приступить к написанию спрайтовой игры (в основном под Windows, в перспективе возможна сильно урезанная версия для Android)

Соответственно, подбираю три вещи:

1. Как хранить спрайты в файлах игры

2. Как хранить спрайты в памяти

3. Как их отображать

 

В прошлых игрушках файлики лежали кучей в поддиректориях, и оттуда подбирались TImage.Bitmap.LoadFromFile

Спасибо Fire Monkey даже такое "топорное" решение выдавало честные 20 fps. Cейчас хочется сделать "как полагается"

 

Спрайт имеет размеры в пределах 800х600 (разный у разных персонажей), фоны от 960х540 до около 4000х540 (для платформерных мини-игр)

Спрайтов у каждого персонажа 7200, персонажей 9  - с фонами и иконками под 100 000 картинок

Спрайты персонажа разбиты по смыслу на анимации (7200 = 30 анимаций * 8 направлений * 30 кадров), то есть когда показывает анимацию то нужно только её тридцать кадров

Одновременно на экране могут быть от одного персонажа (масштаб 1-2), до тридцати (масштаб 0,05-0,25)

 

Спасибо за обстоятельные материалы по TImageList -  как понял, лучше много картинок хранить в нём.

Если использовать объект TImageList - то скажется ли на производительности если использовать не один объект а дюжину - по одному на персонажа?

Также интересует производительность TGlyph при быстрой смене ссылки на отображаемый спрайт (нужно минимум 10 fps)

 

И - какие есть варианты откуда загружать эту графику?

Желательно без создания временных файлов во время загрузки (отпадает TZipFile)

Например, удастся ли мне сохранить и при следующем запуске загрузить объект TImageList со всем содержимым?

 

Дело для меня новое, раньше писал только маленькие игрушки для друзей, сейчас хочется сделать по уму что-то похожее на нормальную игру (хотя и с открытым кодом)

Заранее спасибо за советы!

Изменено пользователем sulion
Ссылка на комментарий

Рекомендуемые сообщения

  • 1

всегда лучше копировать куски из одной большой картинки, чем иметь много маленьких, поэтому ImageList самое то

при этом нужно помнить про разумные ограничения по размеру этой "большой". поэтому даже если по одному листу на персонажа, никакой разницы не будет

хранить так и так придется в файле, загружая при старте

хранение в памяти самый сложный вопрос

нужно чтобы все под рукой, и одновременно не переборщить с памятью. на мобилах ее немного. поэтому тут никто вам не ответит. крутите туда -сюда

Ссылка на комментарий
  • 0

Krapotkin, спасибо большое за советы!

Кажется, картинка сложилась. Дальше разберусь (или прибегу снова :) )

PS По хранению на диске выбрал Zip-архив - посмотрел, архивы с ресурсами это довольно распространённое решение у игроделов

Изменено пользователем sulion
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...