Вы не вошли.

RJAY

Стажер

  • "RJAY" мужчина
  • "RJAY" создал эту тему

Сообщений: 260

Место жительства: Минск

Профессия: 3D художнк, программист

1

Суббота, 23 Март 2013, 15:57

Сохранение данных

Ну что же, я практически закончил систему развития перса. Осталось только понять как сохранить данные о текущем уровне игрока, опыте, количестве здоровья/силы и тд
Каким способом это можно сделать? Может сохраение в хмл?
[Идея] Записки путешественника
Программирование системы развития персонажа.
У всех любовь, а у меня компилируется.
Цитата великих: ...или ты из ворда компилируешь?

2

Суббота, 23 Март 2013, 16:16

скорее всего гейм токин ( CryEngine 3. Видео-урок №16.2 "Магазин. Способ 2" - YouTube на 10:50 ) может поможет ;)
"Мы верим в неимоверно светлое будущее, которое год от года становится всё тусклее. Пусть оно ускользает от нас, но это не имеет значения.. Ведь завтра мы побежим еще быстрее, протянем руки ещё дальше... И в одно прекрасное утро... ... ... ... Мы словно лодки, всё пытаемся пробиться сквозь настоящие, но нас безжалостно относит в прошлое..."

3

Суббота, 23 Март 2013, 16:22

не поможет,это для xml файлов
Нажмите сюда, чтобы узнать больше

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

4

Суббота, 23 Март 2013, 17:03

в видео он создал гейм токен с деньгами, а потом уже сохранял сумму оставшуеся после покупки, но я сам хз просто предположил =D
"Мы верим в неимоверно светлое будущее, которое год от года становится всё тусклее. Пусть оно ускользает от нас, но это не имеет значения.. Ведь завтра мы побежим еще быстрее, протянем руки ещё дальше... И в одно прекрасное утро... ... ... ... Мы словно лодки, всё пытаемся пробиться сквозь настоящие, но нас безжалостно относит в прошлое..."

RJAY

Стажер

  • "RJAY" мужчина
  • "RJAY" создал эту тему

Сообщений: 260

Место жительства: Минск

Профессия: 3D художнк, программист

5

Суббота, 23 Март 2013, 17:18

в видео он создал гейм токен с деньгами, а потом уже сохранял сумму оставшуеся после покупки, но я сам хз просто предположил =D

Обрати внимание на префикс темы :)
[Идея] Записки путешественника
Программирование системы развития персонажа.
У всех любовь, а у меня компилируется.
Цитата великих: ...или ты из ворда компилируешь?

6

Суббота, 23 Март 2013, 18:59

Конечно же через сериализацию данных.
Legacy of the Yods



RJAY

Стажер

  • "RJAY" мужчина
  • "RJAY" создал эту тему

Сообщений: 260

Место жительства: Минск

Профессия: 3D художнк, программист

7

Суббота, 23 Март 2013, 22:12

А каким образом это промсходит? Как потом данные считываются обратно(загружаются)?
[Идея] Записки путешественника
Программирование системы развития персонажа.
У всех любовь, а у меня компилируется.
Цитата великих: ...или ты из ворда компилируешь?

8

Суббота, 23 Март 2013, 22:25

Обрати внимание на функции Serialize(), FullSerialize и PostSerialize() в некоторых классах. В функцию передаётся параметр аргумент ser типа TSerialize, в который можно записать состояния всех нужных переменных. При сохранении и загрузке игры вызывается эта функция. Определить, идёт запись или загрузка, можно с помощью ser.IsReading() и ser.IsWriting(). Все данные сохраняются в группы, группы объявляются с помощью ser.BeginGroup() и ser.EndGroup(). Вот пример сериализации из Item.cpp:

Код

1
2
3
4
ser.BeginGroup("Accessory");
ser.Value("Name", name);
ser.Value("Id", id);
ser.EndGroup();
Legacy of the Yods



RJAY

Стажер

  • "RJAY" мужчина
  • "RJAY" создал эту тему

Сообщений: 260

Место жительства: Минск

Профессия: 3D художнк, программист

9

Воскресенье, 24 Март 2013, 15:08

От души!
Спасибо, сейчас буду пробовать, надеюсь все получится :)
[Идея] Записки путешественника
Программирование системы развития персонажа.
У всех любовь, а у меня компилируется.
Цитата великих: ...или ты из ворда компилируешь?

RJAY

Стажер

  • "RJAY" мужчина
  • "RJAY" создал эту тему

Сообщений: 260

Место жительства: Минск

Профессия: 3D художнк, программист

10

Воскресенье, 24 Март 2013, 18:27

А вот ещё такой вопрос..
Получается в теле функций я должен создать 2 ветки -

Код

1
2
3
4
5
6
7
8
if(ser.isWriting())
{
 то тут начинаем группу записи, и записываем
}
if(ser.isReading())
{
  то здесь я записываю данные в свои переменные? Или не обязятельно так делать? и оно как-то автоматом это делает?
}
[Идея] Записки путешественника
Программирование системы развития персонажа.
У всех любовь, а у меня компилируется.
Цитата великих: ...или ты из ворда компилируешь?

11

Воскресенье, 24 Март 2013, 19:54

В некоторых случаях не нужно. Но бывают моменты, когда при загрузке и сохранении ты не просто синхронизируешь переменную, а проводишь определённые операции с массивами и прочими данными. Представь, что каждый раз после загрузки у тебя должна выполняться функция вывода на экран сообщения. Если ты не поставишь ветки, то при сохранении игры у тебя будет будет выводиться сообщение о загрузке.
Legacy of the Yods



RJAY

Стажер

  • "RJAY" мужчина
  • "RJAY" создал эту тему

Сообщений: 260

Место жительства: Минск

Профессия: 3D художнк, программист

12

Понедельник, 25 Март 2013, 17:54

Все, понял, спасибо большое)
Все получилось)
[Идея] Записки путешественника
Программирование системы развития персонажа.
У всех любовь, а у меня компилируется.
Цитата великих: ...или ты из ворда компилируешь?

13

Пятница, 5 Апрель 2013, 13:20

Ещё есть очень важный факт. Сериализация классов записывается в XML файл. Но обычно файлы сохранений (.CSF) представляют собой бинарные сжатые файлы. Чтобы отключить сжатие данных, и писать сохранки в чистый XML, нужно прописать консольное значение:

Код

1
g_useXMLCPBinForSaveLoad 0


Тогда можно будет смотреть все данные в открытом виде, это очень полезно для дебага.
Alex626 приложил следующий файл:
  • default_Nomad.CSF.xml (41.94 kB - Скачано 78 раз - Последняя загрузка: 9 Январь 2019, 07:13)
Legacy of the Yods