XNA - WP7 - TiledLib - Сериализация и надгробие - PullRequest
2 голосов
/ 10 июня 2011

В настоящее время я пишу 2D-игру, используя платформу XNA Game Studio 4.0 для Windows Phone 7. Я достиг стадии, когда я решаю проблему забрасывания камнями игры, если пользователь захочет сохранить / загрузить илиесли они возобновят игру на более позднем этапе.

В настоящее время я использую библиотеку TiledLib для рендеринга и т. Д. Карты, а также пример управления состоянием экрана в качестве основы для моего проекта (например, событиядля надгробия правильно все на месте).Объект Map в библиотеке TiledLib имеет многомерный массив ([,]) для хранения фрагментов карты в каждом TileLayer.Моя карта имеет только один TileLayer и только 1 Texture2D с различными Rectangle исходными местоположениями в зависимости от того, что отображает плитка.Важно, чтобы я отслеживал все соответствующие исходные прямоугольники для каждой плитки, чтобы отредактированная карта могла быть возобновлена ​​так, как ее оставил игрок.

У меня довольно много проблем при попытке работатьлучший способ (или любой другой способ) достичь надгробия на игровом экране.У меня не было большого опыта с сериализацией, и это моя первая попытка надгробия для приложения Windows Phone 7.Я понимаю, что не зубчатые массивы нельзя сериализовать с помощью обычного XmlSerializer, есть ли способ обойти это?Является ли пользовательский сериализатор хорошим путем?За и против?Кто-нибудь еще имел опыт работы с TileLib и сериализацией игрового экрана?Или 2D-карта с координатами X, Y?Сколько данных слишком много данных для сериализации для захоронения?

Заранее спасибо за ответы и советы.

1 Ответ

3 голосов
/ 10 июня 2011

Я бы порекомендовал написать собственные подпрограммы сериализации с использованием BinaryReader и BinaryWriter, исходя из того, что вы можете сериализовать совершенно произвольные данные, с полным контролем над процессом и с значительно * на 1004 * большей скоростью, чем автоматическая сериализация XML.

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

...