|
Duże pliki zapisu z edytora map |
| Autor |
Wiadomość |
wisnia_pc
Sierżant
 
Główny edytor: 
Pojedynki: nie
Pomógł: 5 razy Posty: 128
2356 Prestiż
|
Wysłany: 06-05-2017, 16:51
|
|
|
| problem rozwiązany okazało się ze mam błąd w kodzie, który zapisywał w pętli wartość do wszystkich komórek, miałem system zabezpieczeń map, który powodował błąd. Teraz mapa 20kx20k z 3k obiektów zajmuje 16 MB, jak dam kompresje systemową to jest 500kb. Mapa wczytuje się szybko zaledwie trwa to 1-2s |
_________________ Prawdopodobnie najbardziej zaawansowany RTS jaki powstaje w klikach.
 |
|
|
|
 |
Minty
Stwórczyni omc dr fizyki
 
Główny edytor: 
Drugi edytor: 
Pojedynki: być może
Pomogła: 259 razy Posty: 3447
33795 Prestiż
|
Wysłany: 06-05-2017, 16:51
|
|
|
| 3k obiektów. to 9k zmiennych w układzie x,y,wartość. W porównaniu do 400 milionów zmiennych, które się zapiszą, gdy położysz jeden obiekt na ostatniej pozycji (20k,20k). 9k zmiennych powinno zająć 36 kB. Bez kompresji. Jak w ogóle wczytujesz toto? Puszczasz pętlę po 400 milionach elementów? W ogóle 16 MB sugeruje 4 miliony, czyli mapę 2k*2k. |
|
|
|
 |
wisnia_pc
Sierżant
 
Główny edytor: 
Pojedynki: nie
Pomógł: 5 razy Posty: 128
2356 Prestiż
|
|
|
|
 |
msg
Pupogłowy ~~~~~~~~~~~

Główny edytor: 
Drugi edytor: 
Pomógł: 76 razy Posty: 1412
40082 Prestiż
|
Wysłany: 06-05-2017, 16:51
|
|
|
Wysłałeś 2x ten sam obrazek Ale wygląda na dokładnie to, czego chcieliśmy ci powiedzieć, żebyś uniknął , czyli zapisywanie w pozycji arraya zgodnej z X i Y obiektu. Zrób z tego LISTĘ obiektów zapisanych w arrayu, gdzie kolejne kolumny to będzie ID_obiektu, X, Y, typ obiektu (dżewo czy cuś), kierunek, inne cuda, a kolejne wiersze to kolejne obiekty. |
_________________
|
|
|
|
 |
wisnia_pc
Sierżant
 
Główny edytor: 
Pojedynki: nie
Pomógł: 5 razy Posty: 128
2356 Prestiż
|
Wysłany: 06-05-2017, 16:51
|
|
|
| no tak tylko jak to przerobić może jakiś przykład prosty |
_________________ Prawdopodobnie najbardziej zaawansowany RTS jaki powstaje w klikach.
 |
|
|
|
 |
msg
Pupogłowy ~~~~~~~~~~~

Główny edytor: 
Drugi edytor: 
Pomógł: 76 razy Posty: 1412
40082 Prestiż
|
Wysłany: 06-05-2017, 16:51
|
|
|
Przykład? Zrób od nowa te zdarzenie
Pomagaliśmy dokładnie z tym Herriosowi ostatnio, zagadaj, może ma jakieś materiały, które wykorzystywał wtedy. |
_________________
|
|
|
|
 |
Minty
Stwórczyni omc dr fizyki
 
Główny edytor: 
Drugi edytor: 
Pojedynki: być może
Pomogła: 259 razy Posty: 3447
33795 Prestiż
|
Wysłany: 06-05-2017, 16:51
|
|
|
msg, ID niepotrzebny, bo to po prostu pozycja w arrayu.
wisnia_pc, jak to przerobić? Proste... robisz dokładnie to, co masz, ale do "kierunek", "kolor" itp. dodajesz elementy "pozycjax" i "pozycjay". Zamiast zapisywać na elemencie o pozycji x,y - zapisujesz na pozycji n, i wtedy ustawiasz n=n+1. Odczyt - zamiast lecieć pętlą po pozycji x,y w arrayu po prostu czytasz kolejne elementy o pozycji LoopIndex. Potrzebujesz też dodatkowego zdarzenia, gdy typ=0 › przerwij pętlę. W tym przykładzie oznacza to brak obiektu, koniec listy.
Jako, że masz 3 wymiary: x, y oraz v (wymiar parametrów obiektu), a ten ostatni ma jakieś 11 elementów (?), to ostatecznie potrzebujesz tablicy x, v; x o wymiarze dowolnym, bo sam będzie się kurczył, a v o wymiarze 11+2 (stare parametry + pozycja x oraz y).
Adresowanie się uprości i w sumie wszystko powinno być szybsze, mniejsze, prostsze.
Zakładam 11 elementów wymiaru v, bo http://i.imgur.com/laACzWP.png - chyba, że to jakiś znacznik "tu jest coś zapisane", którego nie używasz, bo używasz widzę parametru "kolor" (tak jak ja opisałam z parametrem "typ" - nie ma różnicy). Nie ma po co zapisywać na v(10), skoro wiesz na 100%, że v(0) > 0 oznacza, że coś tam jest. |
|
|
|
 |
wisnia_pc
Sierżant
 
Główny edytor: 
Pojedynki: nie
Pomógł: 5 razy Posty: 128
2356 Prestiż
|
Wysłany: 06-05-2017, 16:51
|
|
|
| tak teraz po usunięciu akcji v(10) jest mniejszy plik o połowę |
_________________ Prawdopodobnie najbardziej zaawansowany RTS jaki powstaje w klikach.
 |
|
|
|
 |
Minty
Stwórczyni omc dr fizyki
 
Główny edytor: 
Drugi edytor: 
Pojedynki: być może
Pomogła: 259 razy Posty: 3447
33795 Prestiż
|
Wysłany: 06-05-2017, 16:51
|
|
|
Nom. Bo z 11 wymiarów robi się 5.
Policzysz dokładnie rozmiar pliku i wyjdzie 5/11 pierwotnego, prawda? |
|
|
|
 |
wisnia_pc
Sierżant
 
Główny edytor: 
Pojedynki: nie
Pomógł: 5 razy Posty: 128
2356 Prestiż
|
Wysłany: 06-05-2017, 16:51
|
|
|
| czyli każda dodatkowa opcja to większy plik |
_________________ Prawdopodobnie najbardziej zaawansowany RTS jaki powstaje w klikach.
 |
|
|
|
 |
Minty
Stwórczyni omc dr fizyki
 
Główny edytor: 
Drugi edytor: 
Pojedynki: być może
Pomogła: 259 razy Posty: 3447
33795 Prestiż
|
Wysłany: 06-05-2017, 16:51
|
|
|
Każda zapisana opcja, tak. Że zapisałeś v(10), to zapisuje też pomiędzy tym a v(4).
Jedyny problem, to że przy tym rozwiązaniu, które bardzo polecamy, nie ma takiej prostej obsługi duplikatów. To można rozwiązać, jeśli w sumie tego potrzebujesz, już w edytorze.
Chyba najlepsza opcja, to przy kładzeniu obiektu w edytorze puszczasz pętlę jak wczytywanie, ale sprawdza po prostu, czy istnieje już obiekt zapisany na pozycji, gdzie kładziesz. Wtedy nie musisz martwić się o przypadkowy zapis 2 obiektów w 1 miejscu, bo nawet ich nie położysz. |
|
|
|
 |
wisnia_pc
Sierżant
 
Główny edytor: 
Pojedynki: nie
Pomógł: 5 razy Posty: 128
2356 Prestiż
|
Wysłany: 06-05-2017, 16:52
|
|
|
| ok pokombinuje i dam znac co wyszło. ja nie mam pojęcia jak zapisywać do listy w array muszę poszukać |
|
|
|
 |
Minty
Stwórczyni omc dr fizyki
 
Główny edytor: 
Drugi edytor: 
Pojedynki: być może
Pomogła: 259 razy Posty: 3447
33795 Prestiż
|
Wysłany: 06-05-2017, 16:52
|
|
|
No zamiast współrzędnych x,y,v podajesz x,v. Array 2D zamiast 3D.
W ogóle dziwię się, czemu nie założysz z tym tematu, byłoby prościej i w ogóle. |
|
|
|
 |
wisnia_pc
Sierżant
 
Główny edytor: 
Pojedynki: nie
Pomógł: 5 razy Posty: 128
2356 Prestiż
|
Wysłany: 07-05-2017, 13:41
|
|
|
Mój edytor opiera się na tym przykładzie Link jak to przerobić na listę, żeby można było zachować w liście Array kilka wartości dodatkowych oprócz pozycji XY też kolor, kształt, kierunek itp. Teraz jest to tablica 3D.
Postanowiłem zrezygnować z dodatkowej wartości kolor, która jest a raczej była potrzebna do przechowywania parametru koloru tekstury. Nawet gdy tekstura była w standardowym kolorze to i tak był zapis w array, przy czym nawet jak postawiłem inny obiekt jak tekstury to i tak wartość musiała być przypisana co zwiększało znacznie rozmiar pliku. Teraz rozmiar mapy 20k x 20k z 3k obiektami zajmuje 4Mb, więc nie jest tragicznie. Co nie zmienia faktu że muszę dodać kolory tekstur inną metodą oczywiście już wiem jak to zrobić. Ale chętnie bym poznał zapis do listy jak ktoś coś wykombinuje. |
_________________ Prawdopodobnie najbardziej zaawansowany RTS jaki powstaje w klikach.
 |
|
|
|
 |
Minty
Stwórczyni omc dr fizyki
 
Główny edytor: 
Drugi edytor: 
Pojedynki: być może
Pomogła: 259 razy Posty: 3447
33795 Prestiż
|
Wysłany: 08-05-2017, 16:12
|
|
|
| Zapis do listy to zapis do przestrzeni 3D, jak teraz masz, tylko jedna współrzędna jest ucięta. Są tylko rowki i pozbywasz się kolumn. Naprawdę, większość już masz. |
|
|
|
 |
|
|