Symulator EU07 (i nie tylko) > Na warsztacie
Edytor plików scenerii ScnEdit, alpha testy
HTD:
Wracam po dłuższej przerwie spowodowanej złym stanem zdrowia, mam nadzieję, że na dobre. Wrzuciłem na GIT-a nową wersję z użyciem lexera FSM.
Co to daje?
Ano jest ze 100x szybsze i pewniejsze od przetwarzania plików scenerii za pomocą wyrażeń regularnych. Lexer (od Lexical Analyser) FSM (od Finite State Machine) to komponent używany przez wszystkie profesjonalne narzędzia korzystające z plików tekstowych napisanych wg składni jakiegoś języka.
Na wejściu przyjmuje plik tekstowy, na wyjściu zbiór binarnych tokenów, które jednoznacznie odwzorowują dane zawarte w pliku.
Gdyby MaSzyna używała podobnie zbudowanego lexera FSM, scenerie ładowałyby się kilka sekund, zamiast kilku minut ;)
Oczywiście ScnEdit nie ładuje scenerii w całości, ani nie optymalizuje procesu ładowania i przetwarzania do końca. Pozostawiłem pewien kompromis pomiędzy wydajnością programu a czytelnością kodu. Wewnątrz struktury są przetwarzane do różnych postaci, co można by ewentualnie skrócić dla jeszcze większego przyśpieszenia, ale przy czasach ładowania danych rzędu pojedynczych sekund nie jest to krytyczne.
Przetestowane na wszystkich mapach z najnowszej paczki developerskiej ;) Wszystkie mapy ładują się poprawnie i szybko.
UWAGA: Nazywanie i sortowanie torów NIE BĘDZIE DZIAŁAĆ W TEJ WERSJI! Proszę nie używać tej funkcji, bo może ona uszkodzić pliki scenerii! Problem zostanie rozwiązany razem z następną wersją.
Do poprawienia zostały jeszcze 2 pomniejsze bugi: skrzyżowania na mapie wyświetlane są innym kolorem niż drogi (nie mam pojęcia czemu), siatka mapy ma niewłaściwe przesunięcie.
Do zrobienia zostało zaznaczanie torów na mapie i wyświetlanie wskaźników.
Niestety popsuł mi się komp, więc siłą rzeczy prace pójdą opornie, bo w między czasie będę musiał oddać do do serwisu i skonfigurować nowe środowisko do pracy na starym kompie.
guest23269:
Ja również zetknąłem się ostatnio z problemem wydajności wczytywania scenerii. Na potrzeby modernizacji Krewetkowa piszę niewielki program, pomagający mi w wielu sprawach podczas edycji scenerii. Podczas uruchamiania program wczytuje do tablicy obiektów prawie całą zawartość plików scn i scm (oprócz pociągów). Jakoś nie zauważyłem, żeby ten program uruchamiał się znacznie wolniej niż inne moje aplikacje, niewczytujące żadnych plików. Rozumiem, że symulator musi jeszcze wczytać modele, tekstury itd., ale bez przesady. Symulator Krewetkowo wczytuje w pół minuty. Najbardziej niezrozumiałe jest dla mnie kilkusekundowe zawieszenie się Maszyny po wypisaniu "Loading - texture: textures/grassgreen1". Ile może zajmować wczytanie wierzchołków trójkątów z pliku tekstowego... Jak dla mnie, nie trzeba wprowadzać binarnego formatu scenerii, wystarczy zoptymalizować wczytywanie plików tekstowych. Dodam, że nie korzystam z żadnych nowoczesnych technologii. Pliki wczytuję w pętli, Double.Parse [metoda z. NET] konwertuję na liczbę, za pomocą switch sprawdzam z jakim typem obiektu mam do czynienia (tor, trójkąt itd). Proste i szybkie.
Maciej:
--- Cytat: Marcin17 w 02 Marca 2015, 16:31:35 ---Ja również zetknąłem się ostatnio z problemem wydajności wczytywania scenerii.
--- Koniec cytatu ---
Używasz paczki DDS (08.13 + ewentualne patche) czy najnowszej, tj. 15.02, która jest w wersji TGA? Wersja TGA wczytuje się dłużej, a na niektórych sceneriach długość ładowania pliku jest o wiele większa w porównaniu do tekstur w formacie DDS. Tekstury TGA ważą więcej od DDSów, więc czas ich ładowania wzrasta.
--- Cytat: Marcin17 w 02 Marca 2015, 16:31:35 ---Symulator Krewetkowo wczytuje w pół minuty. Najbardziej niezrozumiałe jest dla mnie kilkusekundowe zawieszenie się Maszyny po wypisaniu "Loading - texture: textures/grassgreen1".
--- Koniec cytatu ---
Pytanie, ile na tej scenerii jest elementów czy obiektów i jaka ta sceneria jest duża? Ja przykładowo kiedyś zacząłem coś grzebać przy jakiejś starej scenerii, która ładowała się dosłownie w 10 sekund. Tylko, że na tej scenerii nic nie było, a poza tym była bardzo krótka i dlatego tak szybko się ładowała. A co do tekstury trawy - wczytuje się dłużej, bo zajmuje większość (albo nawet całość) terenu, więc siłą rzeczy musi się dłużej ładować. To nie jest np. model, który jest ustawiony tylko w niektórych punktach na scenerii.
guest23269:
Paczka DDS 8.13. Sceneria jest niewielka, jest na niej kilkanaście rodzajów budynków, 3 tekstury drzewek, ściany lasu oraz teren [trawa]. Tory są zelektryfikowane. Rozumiem, że TGA zajmuje więcej miejsca. Jeśli jednak Maszyna wczytuje plik,w którym są tylko i wyłącznie trójkąty i tylko z jedną teksturą, gdzie nie trzeba tracić czasu na wczytywanie innych plików i jedyne, co trzeba zrobić to konwersja liczb ze String na Double oraz zapisanie tych liczb w pamięci, i to zajmuje kilka sekund, to z optymalizacją jest chyba coś nie tak. 10 sekund na scenerię, na której nic nie ma - trochę długo...
HTD:
Prędkość ładowania plików (dysku) nie ma nawet nic do rzeczy. Scenerie ładują się dokładnie identycznie wolno ze starego i wolnego dysku talerzowego jak i SSD.
Co ciekawe jeśli chodzi o FPS - to też paradoksalnie nie zależy od karty graficznej. Testowałem na 3 kartach graficznych. W miejscach gdzie jest 60FPS - jest na wszystkich kartach, nawet na najwolniejszym zintegrowanym Intelu, tam gdzie przycina do 30 tam przycina też na wszystkich 3 kartach, jakby to nie była w ogóle kwestia wydajności karty graficznej. MaSzyna ma problemy wydajnościowe, które wydają się w pewnych miejscach prawie niezależne od wydajności sprzętu. Dziwne to trochę. Poprzednia paczka chodziła dużo szybciej. Nie wiem czy to tylko kwestia TGA. Podgrałem sobie DDS-y ze starej paczki i przełączyłem w Rainsted. Nie ma większej różnicy. Może troszkę mniej tnie w krytycznych miejscach, ale tylko odrobinę.
Nawigacja
[#] Następna strona
Idź do wersji pełnej