Operacje na pliku.

Ogólne pytania na temat Unity3D

Operacje na pliku.

Postprzez TreektusPL » 16 Kwi 2019, 20:17

Tworzę obecnie grę, w której mam zamiar zrobić dość sporą liczbę poziomów (na początek planuje 200 poziomów). Gra jest dość prosta i tworzenie nowej sceny dla każdego nowego poziomu według mnie nie ma żadnego sensu. Lepszym według mnie rozwiązaniem będzie stworzyć odpowiedni skrypt wczytujący dane z odpowiedniego pliku np. pliku txt.

Jeden poziom mniej więcej zajmuję 200 linijek w pliku konfiguracyjnym, więc przychodzę z paroma pytaniami.

1. Czy każdy poziom rozbić na nowy plik, czy zrobić jeden plik do wielu poziomów? Który sposób będzie bardziej wydajny i który sposób sprawi, że gra będzie mniej ważyła?
2. Jakie rozszerzenie najlepiej powinien mieć ten plik?
3. Czy jest możliwość, by skrypt zaczął sprawdzać dane z pliku, załóżmy od 1000 linijki?
TreektusPL
 
Posty: 36
Rejestracja: 23 Wrz 2018, 20:16
Has thanked: 0 time
Been thanked: 0 time

Re: Operacje na pliku.

Postprzez Ether_141 » 16 Kwi 2019, 22:10

Ja polecałbym Ci, abyś skorzystał z dobrodziejstwa uniwersalnego języka znaczników jakim jest XML. Stwórz sobie jakąś strukturę poziomu i zapisuj to do pliku .xml. Biblioteka System.Xml umożliwia operowanie na tych plikach. Prosta obsługa, uniwersalność, wiele możliwości. To będzie chyba najłatwiejsze i najprostsze do zaimplementowania rozwiązanie. Akurat tydzień temu robiłem grę tower defence, gdzie każdy poziom był wczytywany z pliku .xml.
Awatar użytkownika
Ether_141
 
Posty: 421
Rejestracja: 29 Sie 2015, 11:47
Has thanked: 0 time
Been thanked: 0 time

Re: Operacje na pliku.

Postprzez Wichur » 17 Kwi 2019, 05:01

Można też użyć Json'a, też w prosty sposób można stworzyć strukturę ;)
Awatar użytkownika
Wichur
 
Posty: 122
Rejestracja: 19 Gru 2017, 10:33
Miejscowość: Pruszcz Gdański
Has thanked: 0 time
Been thanked: 0 time

Re: Operacje na pliku.

Postprzez Hostur » 17 Kwi 2019, 08:46

Jeśli to nie mobilka, to użyj protobuf-net do serializacji swoich struktur i zapisuj je w pliku binarnym.
W przypadku jsona i xmla zastanów się wcześniej czy chcesz pozwolić na modyfikację plików zapisu, jeśli nie to albo je szyfruj przed zapisem albo zapisuj sume kontrolną w playerprefsach i sprawdzaj przy odczycie
Hostur
 
Posty: 699
Rejestracja: 05 Sie 2015, 07:36
Has thanked: 0 time
Been thanked: 0 time

Re: Operacje na pliku.

Postprzez TreektusPL » 17 Kwi 2019, 10:00

Będzie to gra mobilna więc pewnie użyję pliku xml.
Zostaje jeszcze kwestia czy szyfrować te dane. W tych danych będzie przechowywana struktura danego poziomu i rozmieszczenie poszczególnych obiektów. Gracz, jeśli połapie się, o co chodzi w tym pliku i jak on działa będzie mógł sobie edytować poziomy, lecz chyba nie ma żadnego sensu to robić, jak nie będę wprowadzał żadnych rankingów graczy. Gracz po prostu tylko sobie będzie mógł zniszczyć przyjemność z gry.
TreektusPL
 
Posty: 36
Rejestracja: 23 Wrz 2018, 20:16
Has thanked: 0 time
Been thanked: 0 time

Re: Operacje na pliku.

Postprzez Ether_141 » 17 Kwi 2019, 11:55

Wielu graczom, grzebanie i zabawa w takich plikach gry sprawia wiele frajdy, a jeśli ktoś nie chce to nie musi nawet wchodzić do folderu z grą. A jeśli chcesz zakodować ten plik to możesz użyć np. kodowanie Base64.
https://stackoverflow.com/questions/178 ... 4-encoding
Awatar użytkownika
Ether_141
 
Posty: 421
Rejestracja: 29 Sie 2015, 11:47
Has thanked: 0 time
Been thanked: 0 time

Re: Operacje na pliku.

Postprzez TreektusPL » 18 Kwi 2019, 21:11

Nigdy jeszcze nie miałem styczności z zakodowywaniem jakiegoś pliku. Sprawdzałem i testowałem kodowanie base64 i wszystko działa. Oryginalny fragment tekstu jest zamieniany według tego kodowania. Następnie zobaczyłem, że w prosty sposób można przywrócić oryginalny tekst, pozmieniać odpowiednie wartości i znowu przekonwertować plik na te kodowania. Dość chyba słaby sposób na szyfrowanie danych, ale zawsze to coś.
TreektusPL
 
Posty: 36
Rejestracja: 23 Wrz 2018, 20:16
Has thanked: 0 time
Been thanked: 0 time

Re: Operacje na pliku.

Postprzez Ether_141 » 18 Kwi 2019, 21:39

To nie są hasła klientów międzynarodowego banku. Jak sam zauważyłeś jest to prosty sposób na zakodowanie danych. W C# jet biblioteka System.Security.Cryptography. Poczytaj, może znajdziesz bardziej złożony algorytm do kodowania, albo użyj czegoś innego, np. sumy kontrolnej jak wspomniał Hostur.
Awatar użytkownika
Ether_141
 
Posty: 421
Rejestracja: 29 Sie 2015, 11:47
Has thanked: 0 time
Been thanked: 0 time

Re: Operacje na pliku.

Postprzez Hostur » 19 Kwi 2019, 09:22

Treektus, tak szczerze, na nic Ci się to nie przyda w tej grze ale to nie o to chodzi.
Forum jest po to żeby dzielić się wiedzą i to staramy się robić. Nie szyfruj tego pliku dlatego, że to ma teraz znaczenie ale dlatego, że to Ci się przyda kiedyś, w pracy, w prywatnym projekcie, na studiach. Nie rób tego idealnie a adekwatnie do Twojej gry. Nie ma znaczenia jak ktoś to zmodyfikuje ale niech jakość Twojego kodu rośnie z każdym projektem jaki robisz.
https://stackoverflow.com/questions/105 ... for-a-file

Jak ktoś będzie chciał to i tak to zmodyfikuje w runtime ale przynajmniej z tej perspektywy projekt nie będzie wyglądać jak zaliczenie na studiach.
Hostur
 
Posty: 699
Rejestracja: 05 Sie 2015, 07:36
Has thanked: 0 time
Been thanked: 0 time


Wróć do Wsparcie Unity

Kto jest na forum

Użytkownicy przeglądający to forum: Bing [Bot] oraz 1 gość