2013-03-04 4 views
1

Я около 20% в свою первую игру и задавался вопросом, какой лучший способ хранить локальные данные. Мне нужно хранить статистику позиции, такую ​​как уровни, урон за уровень и т. Д., В форме базы данных. Считается ли хорошей практикой хранить такие данные в «локальной» базе данных и затем запрашивать с использованием SQL? Или есть другой способ? Я работаю в .NET 4 и XNA 4Хранение данных для игр

Спасибо!

+1

[Этот вопрос на GameDev] (http://gamedev.stackexchange.com/questions/7952/how-to-choose-how-to-store-data) похож, может быть, вы можете найти его полезным (единственное разница в том, что он не ориентирован на конкретную структуру). –

+1

Если у вас нет очень специфических требований к производительности, и вам нужно запрашивать данные по произвольным атрибутам, использование встроенной базы данных и SQL или EF - достаточно хороший подход общего назначения. (Предполагая, что XNA позволит вам получить простой старый дескриптор файла.) – millimoose

ответ

2

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

Существует множество способов хранения данных. Обычно я вижу, что бинарные файлы являются наиболее распространенными в играх. Если вы хотите использовать SQL без использования реального сервера базы данных, я бы рекомендовал посмотреть на базы данных , таких как SQLite, SQL Server Compact Edition или Firebird (есть и другие). Эти данные хранятся в одном файле, но вы можете запросить их с помощью SQL.

+0

Но разрешено ли пользователю редактировать встроенную базу данных? Это мой самый большой страх. Я не возражаю, если пользователь обманывает, взломав память (в конце концов, это будет однопользовательская игра), но я не хочу, чтобы это было так же просто, как открытие файла базы данных. – TheGateKeeper

+1

Вы можете защитить его паролем. Я сделал это как с SQL Compact, так и с Firebird в прошлом. – Gigi

+0

Я решил использовать SQLLite, мы увидим, как это происходит. Спасибо за помощь! – TheGateKeeper

3

Стандартный подход - фактически использовать встроенную поддержку XNA для хранилища на основе файлов Title и User. Пожалуйста, ознакомьтесь с this overview для лучших практик хранения MSFT XNA.

+0

Хотя хороший совет, пользовательское хранилище решает проблему хранения данных, а не как управлять им. – millimoose

1

Сериализация. Если вы хотите читать файлы, выберите XML/JSON serializer. Если вам нужна производительность: протобуф или ручная двоичная сериализация.

+0

Сериализация, возможно, лучше для savegames, которые выписываются партиями, что может и не быть тем, что пытается сделать OP. (Увидев, что он упоминает некоторые статистические данные, которые, возможно, нужно постоянно обновлять по всему игровому процессу.) – millimoose

Смежные вопросы