2010-06-17 2 views
2

Я делаю игру на Java, и мне нужен хороший формат файла для хранения сохраненных данных игрока.Какой хороший формат файла для хранения сохраненных файлов проигрывателя?

Любые предложения?

Не стесняйтесь приводить примеры кода, если хотите.

EDIT: Это сервер-клиентская игра, поэтому сохраненные данные будут находиться на сервере. Кроме того, я не хочу использовать сериализацию.

+0

Каким будет типичный размер данных? Нужно ли это читать на людях? –

+0

Как насчет некоторых требований ... Сколько данных мы говорим? Много ли потоков бит (изображения, двоичные файлы и т. Д.)? Является ли переносимость проблемой? – ircmaxell

+0

Я не хочу, чтобы он был доступен для людей, и типичный размер для сохранения одного игрока будет меньше 10 КБ. –

ответ

2

XML

позволяет вам сохранять любую структуру данных, вы можете иметь в стандартном формате и вам не нужно будет написать свой собственный парсер/записи для этого

если вам нужны файлы, которые будут «закреплены «от геймеров, изменяющих свои баллы/прогресс/... (не уверены, где хранятся файлы? или это важно?), вы можете передать XML через алгоритм шифрования или зашифровать элементы данных, прежде чем помещать их в XML.

1

С момента вашей игры вы можете сами определить формат файла. Для сохранения состояния игры будет выполняться непосредственно сериализация и сохранение. Что касается игроков, которые сохранили данные (это может быть его уровень прогресса, игровой счет и т. Д.), Вы можете использовать XML.

<?xml version="1.0"?> 
<Game> 
<player id="01d"> 
    <name> 
      John 
     </name> 
     <skill> 
     Rookie 
     </skill> 
     <score> 
     122 
     </score>  
</player> 
</Game> 

Ofcourse вы можете зашифровать его, чтобы сделать его взломать доказательство

+0

Шифрование, вероятно, не принесет пользы, так как вам нужно иметь доступный ключ, который пользователь может прочитать. –

3

Все ответы до сих пор, кажется, о XML, который не является плохим форматом, но есть и другие варианты, которые могут оказаться полезно, что должно ускорить время запуска:

Json: Обычный и был дольше, чем мои следующие два предложения.

Thrift: Что использует Facebook. Должен быть быстрее, чем Json, поддерживаемый меньшим количеством языков.

Protocol Buffers: Используется компанией Google. Вероятно, самый быстрый, а также легко расширяемый.

Или просто сделайте поддержку своих классов Serializable.

+0

+1 Все это хорошие идеи, особенно делая ваш класс сериализуемым. – DJTripleThreat

2

Если, как вы говорите, информация будет сохранена на сервере, она обязательно должна находиться в базе данных. Типичный игровой протокол хранит информацию пользователя в базе данных - вытаскивает его в память при входе в систему, с ленивыми обновлениями в db для изменения объекта в памяти (сохраняет высокую производительность игры), когда они играют в игру и обновляют свои «в память "пользовательский объект состояния игры.

Не ограничивайте масштабируемость своей игры, начиная с хранения на основе файлов только потому, что это может быть немного проще.

+0

Знаете, теперь, когда вы так выразились, вы правы. База данных будет более правильной, так как это база данных (сохраненные файлы). Хм. –

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