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

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

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2010, 00:38   #1
ZotaC
Форумчанин
 
Аватар для ZotaC
 
Регистрация: 25.06.2009
Сообщений: 163
По умолчанию Ресурсы в игре

Здравствуйте. Возник такой вопрос. Во всех играх, которые я делал, все ресурсы находились в отдельных папках (Images - изображения, Sounds - звуки и т.д.). Но я замечал, что во всех более серьезных играх ресурсы как-то прячутся в файлы типа архивов. Хотелось бы узнать, как это делается, и как это сделать, например, в Delphi.
ZotaC вне форума Ответить с цитированием
Старый 02.05.2010, 14:42   #2
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

1) Смотря какая игра, если игра навороченая,то придумываются свои форматы.
2) У моделий и текстур свое расширение, у скриптов и конфигов тоже самое.
3)Архив это же и есть список файлов (Моделий,текстур и.т.д) может подерживать жатие.
VintProg вне форума Ответить с цитированием
Старый 02.05.2010, 14:52   #3
ZotaC
Форумчанин
 
Аватар для ZotaC
 
Регистрация: 25.06.2009
Сообщений: 163
По умолчанию

Тогда вопрос: как создавать свои форматы? Как упрятать в один архив (придуманный мною) картинки, видео, текстовые файлы и т.д. и как к этим файлам потом обращаться?
ZotaC вне форума Ответить с цитированием
Старый 02.05.2010, 15:22   #4
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

ZotaC
Вот так:
1)Допустим наш архив называется *.LFS Сперва описываем :
Код:
Type
 TLFS_Header = Packed Record
  FileName : array[0..31] of char; //Имя файла (Допустим текстуры)
  SizeFile   : Integer;                  //Размер файла
  OffSet    : Integer;                  //Смещение файла
end;
2) Придумав это этими блоками надо както хранить файлы внутри архива.
3) : Допустим такая структура:

-------------------------------
------------LFS ---------------
-------------------------------
СПИСОК 1
Weapon.tex
size: 5000 kb
offset 0
-------------------------------
СПИСОК 2
Uzi.model
size: 3000 kb
offset 5000
---------------------------------
САМИ ФАЙЛЫ BIN (Двоичные файлы)
---------------------------------
01010101010101010101010101010
01010101010101010101010101010
01010101010101010101010101010
01010101010101010101010101010
01010101010101010101010101010
01010101010101010101010101010
01010101010101010101010101010

4) Теперь зная содержания файла, считываем списки,
зная смешение имя файла и размер загружаем его
5) Таких структур архивов можно придумать кучу главное фантазия и опыт в программировании!
VintProg вне форума Ответить с цитированием
Старый 03.05.2010, 14:33   #5
ZotaC
Форумчанин
 
Аватар для ZotaC
 
Регистрация: 25.06.2009
Сообщений: 163
По умолчанию

То есть, я так понимаю, что файл LFS - нетипизированный файл, да? В него, в самое начало, записываются все данные о тех файлах, которые в нем хранятся, а далее с помощью процедуры BlockWrite записываются все символы из этих файлов в LFS, в том порядке, в котором они были указаны? Просто копируются символы?

И еще один вопрос. Как производить чтение из такого файла. Допустим, у меня там хранятся картинка и звук. Для того, чтобы нарисовать эту картинку в программе или воспроизвести там звук, надо сначала эти файлы сохранить на диск. А как это сделать, при условии, что пользователь не должен их там найти?
ZotaC вне форума Ответить с цитированием
Старый 04.05.2010, 17:39   #6
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Не сохраняй на диск, используй streams. С ООП и потоками это достаточно просто реализуется, в аттаче пример наследника TFileStream с зачатками архиватора. Запись TItemHeader можно расширить до отдельного класса, тогда вместо
Код:
Archive.AddFromFile 
Archive.Delete
будет что-нибудь "в delphi-стиле" вроде
Код:
Archive.Files.Add 
Archive.Files[Find('file.jpg')].Delete,
прикрутить сжатие, например zlib, обработчики ошибок, контрольные суммы, шифрование...

Вложения
Тип файла: rar Archive sample.rar (238.3 Кб, 28 просмотров)
пыщь
JTG вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ресурсы JeyKip Win Api 2 11.04.2010 10:26
Ресурсы к игре Xanex Gamedev - cоздание игр: Unity, OpenGL, DirectX 7 19.10.2009 17:23
Ресурсы VladimirVB Win Api 3 23.08.2009 12:47
Ресурсы W0LF Общие вопросы Delphi 1 01.08.2009 13:36
Ресурсы, зачем нужны ресурсы Hallo Обсуждение статей 0 12.12.2006 21:30