STARSIM - DEVLOG #4 - Сохранение/Загрузка игры + небольшой апдейт

Итак, о системе сохранения/загрузки. В принципе, она очень проста. Она использует BinaryFormatter и содержит всего 5 строк.

STARSIM - DEVLOG #4 - Сохранение/Загрузка игры + небольшой апдейт

Необходимо убедиться, что все подклассы и поля имеют метку [Serializable].

STARSIM - DEVLOG #4 - Сохранение/Загрузка игры + небольшой апдейт

И не все классы могут быть сериализуемыми.

Загрузка игры? Вот фрагмент кода:

STARSIM - DEVLOG #4 - Сохранение/Загрузка игры + небольшой апдейт

Все еще очень просто. Также будьте готовы к зависаниям при загрузке/сохранении. Например, в StarSim файлы сохранений достигают 8 мегабайт. И это приводит к зависанию игры на 1-2 секунды при загрузке/сохранении.

В игре я реализовал дополнительную систему для загрузки. Она показывает прогресс игрока в файле сохранения (скриншот, район галактики, Имя, дата, текущий счет), если нажать на него перед загрузкой (как в Рейнджерах, да).

STARSIM - DEVLOG #4 - Сохранение/Загрузка игры + небольшой апдейт

Как я это сделал? Просто загружаю файл сохранения с помощью BinaryFormatter и показываю сохраненные данные? Нет. Я действительно пытался сделать это, но безуспешно. Это потому что, как я уже говорил, файлы сохранения слишком велики. На их десериализацию уходит несколько секунд. Поэтому я сделал проще и просто создал ДВА файла сохранения. Один - собственно файл сохранения, а другой - просто для отображения информации на экране загрузки.

Система сохранения/загрузки - не единственное, над чем я работал последние две недели.

Теперь игроки могут покупать карты секторов галактики на планетах. Это действие откроет новый регион на карте галактики.

Военная станция: финансирование освободительной миссии. Теперь вы можете финансировать военную операцию по освобождению захваченной звездной системы.

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

Пиратская станция: пластическая операция (изменить внешность). Игрок может посетить пиратскую станцию, чтобы изменить свое лицо и расу. Это поможет вам в случае охоты со стороны правительства.

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

Научная станция: прокачать оборудование. На научной станции вы также можете модернизировать свое оборудование. За небольшую плату инженеры улучшат ваш двигатель, оружие или другое оборудование.

Изменение разрешения экрана и оконного режима. Теперь можно изменить разрешение экрана и переключиться в оконный режим.

Создал двух боссов конца игры. Теперь можно завершить игру. Ура.

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

Износ оборудования. Теперь все оборудование изнашивается во время работы. Например, оружие - при стрельбе, захват - при захвате предметов, радар - постоянно.

Добавлена возможность ремонтировать оборудование на планете/станции за деньги.

Спасибо за внимание и до следующего раза.

88
5 комментариев

Комментарий недоступен

Ответить
Автор

Все верно. При сериализации файлов для показа информации о сохранении - на экране выбора сохранения для загрузки - я реализовал асинхронный вариант. Используя "await Task.Run"

А вот при уже непосредственной загрузке - просто показываю "Loading" и сериализую синхронно. Так надежнее и быстрее. Хотя возможно в будущем тоже переделаю на асинхронный вариант.

1
Ответить

Я использую что то похожее. Только у меня сериализуется в json.

Ответить
Автор

Как раз на днях переделывал сериализацию на json. В процессе оказалось, что JSON сериализатор (встроенный в Unity) не умеет сериализировать Dictionary. Пришлось откатывать все назад.

Ответить