Witam,
Jestem średnio-zaawansowanym programistą JAVY. Ale teraz do sedna problemu.
Otóż od pewnego czasu tworzę prostą grę która generuje świat z bloków w kształcie sześcianu (tak jak Minecraft).
System generowania świata już jest skończony ale nie wiem jak zapisać dany świat w pliku który będzie tworzony w danej lokalizacji. Oczywiście z możliwością ponownego odczytu w przyszłości. Myślałem o serializowaniu ale kompletnie nie wiem jak się do tego zabrać.
W miarę możliwości prosiłbym o szybką odpowiedź.
Zapisujesz gdzie jest który blok.
I teraz bonus, żeby wczytać, po prostu wczytujesz gdzie jest który blok
Jw. jeśli wszystkie bloki są sześcianami:
- tej samej wielkości to zapisujesz współrzędne xyz każdego bloku (punkt w "środku", albo jeden z rogów - zależnie od implementacji takiego obiektu sześcianu), de facto 3 liczby,
- różnej wielkości, to zapisujesz wspołrzędne i długość krawędzi.
Jakiś prosty plik z danymi, potem odczytujesz to i zaczynasz rysować planszę. To w takim skrócie.
Minecraft ma tak, że zapisywany jest ID bloku. Więc żadna serializacja a zapisane współrzędne + ID w sposób uporządkowany. Na przykład możesz zapisywać x, y, z, id dla każdego bloku. Pytanie czy rozmiar obszaru jest stały?
nie musisz zapisywać współrzędnych
jeżeli byłby to świat 2d to świat zazwyczaj zapisywany jest jako bitmapa gdzie kolor piksela może odpowiadać rzeczy która się tam znajduje - pozycji nie musisz zapisywać bo pozycja na bitmapie już ją jasno określa
chyba że świat byłby w połowie pusty to jednak lepiej zapisać faktycznie tylko te miejsca w których się coś znajduje, jeszcze bardziej optymalizując - można zapisywać ile kolejnych bloków zajmuje identyczny element
Przechowuj jakkolwiek Ci się podoba, a jak będzie małowydajne to próbuj optymalizować. Rozumiem, że to petproject więc takie optymalizowanie/kombinowanie to dobre ćwiczonko. Gdybym na szybko miał wymyślić rozwiązanie to bym zapytał wcześniej ile możliwych rodzajów sześcianów jest w grze.
A czy da się zrobić tak żeby świat był traktowany jako jeden blok i dopiero potem zapisywany?