Какую процедуру выполняют игровые программисты для сохранения и возобновления игрового состояния? как файлы / сопоставления. Я хочу сохранить его для игры Tower Defense и использую игровой движок Unity3D.
unity
tower-defense
savegame
Сайед
источник
источник
Этот ответ специфичен для Unity3d .
В Unity большинство классов сериализуемы, это означает, что вы можете транслировать полные объекты Unity на диск. Следующий UnityScript-Code - это способ сериализации объекта, сохранения его на диск и загрузки его снова (после загрузки вы должны отлить объект):
источник
Для ТД я бы, наверное, сэкономил исключительно между волнами. Таким образом, все, о чем вы должны думать - это башни. Поместите несколько автоматических точек сохранения в уровни, не более 10 минут между ними, но, вероятно, предпочтительнее меньше.
Конечно, если ваши уровни достаточно короткие, вы можете просто сохранить только статус кампании.
источник
Когда я ссылаюсь на текущее состояние игры, я имею в виду моментальный снимок памяти в момент сохранения. Вы должны иметь возможность воссоздать это из данных, которые вы собираетесь хранить на жестком диске.
Проще всего сериализовать все классы, у которых есть данные, которые должны быть постоянными, и выгрузить их на жесткий диск, выполнив дамп памяти. Проблема в том, что изменение ваших классов изменит количество / типы сериализованных значений и нарушит старые сохранения. Кроме того, потому что вы сохраняете все, это увеличивает время загрузки. Более эффективно отмечать отдельные поля, которые фактически необходимы для перестройки текущего «снимка памяти» с любой системой атрибутов, которую использует ваш сериализатор / IDE. Затем восстановите «снимок памяти» из этих сохраненных данных.
Кроме того, я никогда не использовал Unity, поэтому в него может быть встроено что-то. Однако это типичный подход.
источник