Использование ifstream для чтения динамических данных
-
РЕДАКТИРОВАТЬ: Я только что понял, что "правильный" ответ на этот вопрос может быть немного вперед для меня в данный момент. Я хочу сосредоточиться на добавлении материала в игру в данный момент, а не на создании лучшей системы сохранения / загрузки. Я принял ваши предложения, и вы открыли для меня множество интересных вещей, которые можно сделать в будущем. В основном маркировка сохраненных данных (возможно, с использованием XML). На данный момент я просто добавлю некоторую примитивную функцию, чтобы она работала на данном этапе разработки.
-
Мне нужна помощь, чтобы найти логичный и хороший способ сделать это. Это для игры, которую я делаю, используя C++ и SDL. Мне нужна помощь с сохранением / загрузкой. В основном, когда я сохраняю игру, есть некоторые вещи, которые всегда будут там (имя игрока, позиция, золото и т. Д.). Но есть также некоторый динамически сохраняемый контент, такой как статистика, экипированные предметы и предметы в инвентаре (в будущем законченные квесты будут сохраняться и здесь).
У меня нет проблем с сохранением этих данных, это легко. У меня проблема в том, как структурировать точки останова при чтении данных. Это пример того, как может выглядеть файл сохранения:
CharName (некоторые переменные, такие как позиции, которые всегда будут сохранены) (первый statMap выглядит как эта "строка int", извлеченная из карты) (вторая statMap, она такая же) (оборудованные элементы, один элемент разбит на три части) имя строки int Описание строки идентификатора ") (предметы в инвентаре такие же, как и в прошлом)
Я надеюсь, вы понимаете мой пример. Я хотел бы помочь понять логический способ структурировать это. Я думаю о том, чтобы, возможно, завершить каждую динамическую последовательность символом, а затем загрузить строку до этого символа в строке. Затем я разделил эту строку на несколько частей. Но это звучит как ужасное количество шагов. Не могли бы вы помочь мне?
1 ответ
Очень распространенным методом структурирования файлов данных в играх является использование заголовка и тела: в заголовке вы определяете структуру содержимого в теле, основываясь на смещениях:
Например, данные для символьной статистики начинаются со смещения 10054 и продолжаются для 2120 символов (для этой работы необходимо определить и использовать стандартный размер символов).
Затем, когда вы читаете его, вы читаете заголовок, чтобы получить структуру, а затем загружаете данные из областей, которые она указывает.