Witam serdecznie
W ramach edukacji własnej napisałem sobie grę animowaną (nie jakąś wyszukaną, świat dwuwymiarowy) przy użyciu biblioteki graficznej SDL2.
Ta gra to takie "Mario własnej roboty" - no jest ludzik sterowany klawiaturą, biega sobie po kilku różnie wyglądających poziomach, zbiera różne bonusy, zabija NPC, robi średnio-zaawansowane questy, wszystko na czas.
Starałem się napisać w miarę ładny kod <jak na swoje umiejętności>, przy okazji tworzenia gry czytałem sobie o dobrych praktykach pisania w C++, jednak mam problem z wczytywaniem elementów świata (co w sumie już nie zależy od języka programowania, w czym innym też bym nie wiedział jak obiekty przechowywać, a do kategorii C++ dałem, bo nie znalazłem lepszej).
U mnie zrobione jest to na razie "ręcznie" - po prostu jest sobie funkcja, która ładuje do kilku vectorów znajdujących się w klasie World odpowiednie obiekty, każdy obiekt ma swoją pozycję itd. (tak, zapisywałem pozycje wszystkich obiektów w kodzie)
Dla jednego poziomu trzeba często załadować nawet kilka tysięcy obiektów, trzymanie tego po prostu w kodzie wygląda tragicznie
Przykład kawałka funkcji ładującej elementy świata dla trzeciego levela: (jakby ktoś nie ogarnął jaki syf zrobiłem)
void LevelManager::setThirdLevel(World &world)
{
//wyczyszczenie vectorow, które zawierają elementy poprzedniego poziomu
world.blocks.clear();
world.platforms.clear();
world.monsters.clear();
world.bonusElements.clear();
//i tak jeszcze kilka razy
//dodanie bloczków, po których się skacze
world.blocks.push_back(Block(Position(140, 20));
world.blocks.push_back(Block(Position(296, 304));
world.blocks.push_back(Block(Position(312, 176));
world.blocks.push_back(Block(Position(572, 400));
world.blocks.push_back(Block(Position(720, 272));
world.blocks.push_back(Block(Position(1032, 143));
world.blocks.push_back(Block(Position(1164, 47));
world.blocks.push_back(Block(Position(1268, 432));
world.blocks.push_back(Block(Position(1520, 322));
world.blocks.push_back(Block(Position(2000, 13));
world.blocks.push_back(Block(Position(2321, 437));
world.blocks.push_back(Block(Position(2555, 200));
//i tak jeszcze kilkaset razy
//dodawanie bonusów //x40
//dodawanie npc //x100
//dodawanie różnych dekoracji //x75
//dodawanie wielu innych rzeczy ....
}
Zastanawiam się, jak zrobić to profesjonalnie? Zapisać obiekty do oddzielnych plików (jakich?) i po prostu jakoś je wczytywać?
Jeśli tak, to chyba potrzebuję jakiejś serializacji obiektów?
Może jest na forum ktoś, kto robi/robił gry i podpowie jak nie robić takiego warzywa
EDIT: nie wiedziałem jaki tag dać