• 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 ответа на этот вопрос

  • 1

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

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

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

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

Изменено пользователем sulion

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

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

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