У меня вопрос, стоит ли мне использовать текстовые файлы для сохранения игровых данных. У меня есть некоторые основные проблемы по поводу этого:
На самом деле нет способа защитить данные, и, таким образом, пользователь может все испортить, если он коснется его, и я не хочу, чтобы это произошло.
Вероятно, это не самый эффективный способ хранения моих данных (их будет много)
Я знаю, как эффективно анализировать / записывать в текстовые файлы, поэтому для прототипирования они были фантастическими. Я просто хочу заглянуть в будущее, чтобы подумать о том, чтобы переключиться на него, чтобы оно не ударило меня по лицу ближе к концу разработки.
Если я не должен использовать текстовые файлы, что я должен использовать? Мне нужно что-то совместимое с C ++.
источник
Ответы:
На данный момент, так как вы только начинаете, текстовые файлы, вероятно, в порядке. В вашем вопросе есть пара вопросов, на которые я отвечу.
Защита данных не так важна, как вы, вероятно, думаете. Если ваша игра многопользовательская, вы все равно сохраните данные на стороне сервера. Если ваша игра однопользовательская, что если игроки изменят данные? Если они что-то сломают, это действительно их вина, и они могут переустановить.
Производительность - это еще кое-что, что мы часто не планируем должным образом. Вы не должны действительно оптимизировать, пока не измерите проблему производительности. Я думаю, что вы , вероятно, количество данных, которое не что большие и что текстовые файлы будут просто отлично.
При этом лучше всего абстрагироваться от процедур сохранения и загрузки данных как можно лучше. Например, вы можете иметь базовый класс, скажем
DataWriter
, и затем предоставлять различные реализации его различных методов. Очень простой пример будет выглядеть так:Когда вы в конечном итоге профилируете свою игру и поймете, что узкое место в производительности находится в подпрограмме записи файла, вы можете предоставить другую реализацию этого класса (например, вместо записи в базу данных) с минимальными изменениями в вызывающем коде.
источник
Слово «Игровые данные» может означать много вещей, например
Для каждой категории вы можете использовать другой подход.
Например, вы можете использовать SQLite для локализации, двоичный файл для карт, текстуры, звуки и так далее.
Для настройки конфигурации вы должны использовать легко изменить XML-файлы.
Как всегда, правильный ответ - «это зависит».
Существует много парсеров xml с привязкой c ++, а также существует привязка c ++ для SQLite.
источник
Вы можете сохранить свои данные в виде двоичного двоичного объекта и передать данные обратно, когда вы получите доступ к этому файлу. Это решит обе ваши проблемы. Просто убедитесь, что код сериализации в точности совпадает с десериализацией.
Потоковая передача в двоичном двоичном объекте является относительно быстрой, а также не позволяет пользователю видеть данные и изменять их.
Вы можете достичь всего этого, используя стандартные потоки библиотеки.
источник
float
элемент к одному объект), старые сохранения становятся полностью недействительными. С этим трудно разобраться во время разработки, но если вы готовы, то во что бы то ни стало.