Saglabā un ielādē spēles stāvokli ar FileAccess un JSON. Ģenerē labirintus ar BSP. Izproti Big-O.
FileAccess::open(), store_string(), get_as_text(), user:// direktorija.
JSON::stringify(), JSON::parse(), Godot Resource saglabāšana, .tres faili.
Viena atbildīgā SaveManager klase, GameState serializācija, ielāde spēles uzsākšanā.
Binary Space Partitioning - rekursīva telpu dalīšana, istabu izveide, koridoru savienošana.
Big-O notācija, O(1)/O(log n)/O(n)/O(n²) salīdzinājums, Godot Profiler izmantošana.
Roguelike ar BSP labirintu, save/load, permadeath, random loot un skaņu efektiem.
// Saglabāšana
void SaveSystem::saglabāt() {
Dictionary dati;
dati["hp"] = player->get_health();
dati["level"] = player->get_level();
dati["pos"] = player->get_position();
Ref<FileAccess> f = FileAccess::open("user://save.json", FileAccess::WRITE);
f->store_string(JSON::stringify(dati));
}
// Ielādēšana
void SaveSystem::ielādēt() {
Ref<FileAccess> f = FileAccess::open("user://save.json", FileAccess::READ);
Dictionary dati = JSON::parse_string(f->get_as_text());
player->set_health(dati["hp"]);
player->set_level(dati["level"]);
}