![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 25.06.2009
Сообщений: 163
|
![]()
Скажите пожалуйста, как использовать нетипизированные файлы в игре? Дело в том, что у меня массив уровня динамичен, а также, динамичны еще некоторые переменные, загружаемые из файла. Плюс ко всему, загружается из файла у меня несколько массивов: один из них - с текстурами, другой - с проходимостью и т.д. И таких массивов не 2, а чуть больше, поэтому хранить их все в текстовом файле было бы глупо (я так поdoomал), потому что скорость считывания заметно снизится, ведь придется проходить по одному и тому же циклу несколько раз (массивы в текстовом файле, ведь, будут храниться друг за другом).
Поэтому нужно какое-то другое решение. Кто-то подсказал мне про использование нетипизированных файлов, а как ими пользоваться, я нигде не нашел. Вернее, нашел парочку примеров, но суть их так и не познал. Поэтому, если кто знает суть, то скажите, пожалуйста. |
![]() |
![]() |
![]() |
#2 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Скажите, сколько времени проходит между считыванием и сохранением данных в один и тот же файл?
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 25.06.2009
Сообщений: 163
|
![]()
Я не уверен, что правильно понял вопрос, но вот считывание данных из файла происходит в начале игры, а в самой игре данные туда не записываются. Запись происходит в редакторе (как и считывание, впрочем, тоже)
|
![]() |
![]() |
![]() |
#4 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Соседняя тема "Чтение и запись карты", ...посмотрите, может это ищется.
Почему спросил про время? ...как правило даже в игре, все манипуляции с данными происходят в оперативной памяти, сохраняются они в некоторый ответственный момент, например, при получении важных параметров, уровня, новых предметов и пр. Это идет отдельной процедурой, в которой по порядку записываются данные в кодированном виде, ...чаще всего типа Byte. Выглядит запись как последовательность символов, все в одну строчку. Аналогично со считыванием, вначале открывается файл, затем посредством циклов считываются байты данных, ...где какой определить не сложно если имеется четкий шаблон.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 25.06.2009
Сообщений: 163
|
![]() Цитата:
Как бы то ни было, поразбирался с нетипизированными файлами на пустом проекте и вот, что получилось: Код:
Последний раз редактировалось ZotaC; 25.01.2010 в 02:36. |
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
Господи...с этими нетипизированными файлами..
поищите примеры на основе TFileStream там только изменить команды...а принципы те же. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#7 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
ZotaC, у меня тоже динамические массивы, только не Array [0..10, 0..10] of Char, а самые настоящие динамические PChar или array of array of Byte, вот уж где неизвестен размер, но это не мешает мне сохранять в File Of Byte так как мне вздумается. Файл без заголовка - ущербная куча байт, ...пересмотрите момент сохранения и загрузки, возможно вы пока не понимаете все прелести данного метода.
Записывая код: Код:
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 25.06.2009
Сообщений: 163
|
![]()
Beermonza, приведенный выше код - всего лишь попытка разобраться с нетипизированными файлами, то есть никакого отношения к игре он не имеет. А в самой игре у меня массивы тоже самые настоящие и динамические - Array of Array of Char. Карты там могут быть как маленькие, так и большие, то есть, если я захочу, то могу (без вмешательства в код) ставить и карту 3х3, и 200х200.
Почему же все утверждают, что здесь нужны нетипизированные файлы, если достаточно, как вы говорите, простого File of Byte? И, если это не принципиально, какой файл использовать, то тогда каков принцип сохранения в File of Byte? |
![]() |
![]() |
![]() |
#9 | |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]() Цитата:
Сохранение как и считывание идет либо до, либо после игры, где мгновенной работы не требуется, посему все последовательно, байт за байтом. Напишите по порядку какие типы данных сохраняются/загружаются в/из файла. Проанализируйте, и увидите статичный шаблон, "правило", по которому файл карты может открывать только ваша программа.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
|
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 25.06.2009
Сообщений: 163
|
![]()
Ладно, вот я решил взять File of Byte. Тогда такой вопрос: массив карты у меня типа Char, и при чтении из файла он выдает ошибку: 'Incompatible types: 'Byte' and 'Char''. Тогда у меня возникает предположение, что в этот файл он после каждой записи пишет еще и какой-то разделитель. Так ли это? И если так, то можно ли использовать тип Integer в массиве (при том, что количество текстур у меня превышает 10 штук)?
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
НЕТИПИЗИРОВАННЫЕ Файлы | Doholyan | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 01.08.2009 23:26 |
типизированные и нетипизированные файлы | andrey4623 | Общие вопросы Delphi | 1 | 28.12.2007 19:09 |
ПОМОГИТЕ!! Типизированные и нетипизированные файлы. | Zebo | Помощь студентам | 1 | 08.06.2007 09:35 |