Ищете улучшенные алгоритмы: сохраните состояние игры

Раньше я сериализовал состояния объектов и сохранял их в базе данных (или XML-файле) для загрузки позже, однако я понятия не имею, как некоторые игры сохраняют состояние игры в любое время без тяжелых действий по сохранению или фонового запланированного автоматического сохранения. Я использовал File.WriteAllBytes и File.ReadAllBytes в C # + unity3d, и у меня есть аналогичный опыт использования Java сериализация, но оба они отнимают много времени и требуют нескольких секунд для записи данных в файл или базу данных.

В некоторых играх по управлению городом каждый раз, когда я закрываю игру, она мгновенно закрывается, и после закрытия нет скучных сохранений и фонового процесса, как у меня в простой игре. В игре слишком много персонажей, и я заметил, что они загружаются позже всеми незначительными деталями, а также неполным смехом! Интересно, как такое количество данных сохраняется мгновенно в любое время?

Существуют ли улучшенные алгоритмы, позволяющие постоянно поддерживать в реальном времени слишком много символов?


person Ali Sheikhpour    schedule 11.07.2018    source источник
comment
Исходя из имеющегося у меня опыта, я предлагаю сделать это, выполнив всю тяжелую работу, включая использование оптимизированного проприетарного двоичного формата и максимально возможное избегание выделения памяти во время сохранения, а также небольшие оптимизации, такие как открытие файла. обрабатывать заранее и держать его.   -  person Zyl    schedule 11.07.2018
comment
XML и базы данных очень неэффективны для хранения и загрузки состояния игры на лету. Двоичная сериализация - это то, что вам нужно. Кроме того, нет причин не переложить эту работу на фоновый поток и использовать асинхронные версии упомянутых вами методов. Наряду с тем, что упомянул пользователь @Zyl, сохранение состояния игры на самом деле не должно быть медленным, если вы хорошо разбираетесь в том, какие данные вы сохраняете и как (и когда) вы их сохраняете.   -  person Kwinten    schedule 11.07.2018


Ответы (1)


В единстве вы можете использовать объекты со сценариями. Просто сохраните каждую вещь, которую можно сохранить, как только она произойдет. Таким образом, у вас не будет времени на выход.

person Loading    schedule 11.07.2018