Symulator/MaSzyna/EU07.EXE 162
Plik wykonywalny symulatora EU07.EXE 1.3.130.162 jest ostatnią wersją dla czwartego etapu moich prac nad nim.
Pierwszy etap miał na celu wprowadzenie prostych ulepszeń (głównie graficznych: wizualizacja przechyłek, animacja zwrotnic, działająca obrotnica, trapezowate drogi) i zakończył się wydaniem wersji 1.2.44.71 w styczniu 2011 roku.
Celem drugiego etapu była likwidacja "odwiecznych" błędów, jak nadmiarowa animacja, tryb podglądu [F4] zaczynany w przypadkowym miejscu, a także nowych jak znikające trójkąty na kartach Intel i całkowita niemożność uruchomienia na kartach ATI w przypadku użycia tekstur DDS. Etap zakończył się częściowym sukcesem, gdyż po przerobieniu wyświetlania na VBO pojawił się problem z nieprawidłowym oświetleniem modeli. Efekty prac nie zostały opublikowane, a ja postanowiłem wrócić do wersji 1.2.44.71 i przenieść do niej niektóre ważniejsze z opracowanych poprawek, zachowując dotychczasowy sposób wyświetlania (bez VBO).
Jednocześnie rozpocząłem trzeci etap prac, mający na celu zwiększenie wydajności poprzez optymalizację wyświetlania modeli oraz scenerii. Do testów została uruchomiona komunikacja Symulatora z innym programem (wersje 1.3). Etap ten zakończył się wydaniem wersji 1.2.77.113, a następnie poprawionej 1.3.81.120 w lutym 2011 roku. Mimo wcześniejszego założenia, praktycznie wszystkie wypracowane poprawki zostały przeniesione. Nadal pozostał jednak problem znikających trójkątów na kartach Intel, którego pozbycie się wymagało użycia VBO.
W czwartym etapie prac powróciłem do szukania przyczyny nieprawidłowego działania VBO, ale tym razem pozostawiając dotychczasowy sposób wyświetlania jako alternatywę. Jednocześnie wprowadziłem dalsze optymalizacje i poprawki błędów (w tym automatyczne skalowanie tekstur TGA, tolerancję na braki plików T3D i zagubioną niegdyś możliwość wyłączenia sieci trakcyjnej na sceneriach). Wprowadziłem także możliwość animacji zegarów dworcowych i obracania modeli w trzech osiach. Do testów została uruchomiona zmiana światła w ciągu dnia (pozorny ruch Słońca). Zmiany zostały wydane w kwietniu 2011 razem z Paczką Całościową 2010 (wersja 1.3.108.145) oraz w poprawce do niej (1.3.110.148).
Zestawienie zmian w EU07.EXE 1.3.130.162 względem wersji 1.3.108.145:
Spis treści
- 1 1. Usunięcie poszukiwania pliku ładunku
- 2 2. Skalowanie tekstur DDS
- 3 3. Wypróbowanie różnych rozszerzeń tekstur
- 4 4. Antyaliasing (multisampling)
- 5 5. Poprawione wykrywanie braku BMP
- 6 6. Alternatywny font do napisów
- 7 7. Animacja światła w ciągu doby
- 8 8. Wyświetlanie informacji z rozkładu
- 9 9. Parametry rozmywania również dla DDS
- 10 10. Obcinanie znaków po ":" w nazwie tekstury
- 11 11. Logowanie naciskanych klawiszy
- 12 12. Animacja sky dla submodelu
- 13 13. Logowanie błędnego fragmentu scenerii
- 14 14. Zapamiętywanie kamer
- 15 15. Kiwanie na wietrze
- 16 16. Klawisze funkcyjne jako włącz/wyłącz
- 17 17. Przyspieszone liczenie normalnych modeli
- 18 18. Obiekt Type: Stars w T3D
- 19 19. Logowanie błędów na sprzęgach
- 20 Uwaga autorska
1. Usunięcie poszukiwania pliku ładunku
Dotychczas plik T3D ładunku był poszukiwany przy każdym renderowaniu pojazdu (o ile wcześniej się nie wczytał), obciążając niepotrzebnie procesor. Dotyczyło to również ładunków nie mających modeli, jak pantstate i passengers. Mechanizm ten teoretycznie umożliwiał "załadowanie" próżnego wagonu dowolnym ładunkiem w trakcie symulacji, w praktyce nie było to w ogóle wykorzystywane. Wprowadzone w wersji 1.3.110.148.
2. Skalowanie tekstur DDS
Dotychczas skalowane były tylko tekstury TGA (do rozmiaru akceptowanego przez kartę graficzną, bądź podaną w pliku INI). Poprawkę dla tekstur DDS przygotował ShaXbee.
3. Wypróbowanie różnych rozszerzeń tekstur
Zmienione zostało znaczenie parametru defaultext z pliku INI. Obecnie określa on kolejność szukania plików tekstur przy braku rozszerzenia. Dla wartości tga kolejność jest następująca: TGA, DDS, TEX, BMP, natomiast dla innych jest DDS, TGA, TEX, BMP. Wczytany zostanie pierwszy znaleziony plik dla danej nazwy. Dla zwiększenia prędkości wczytywania wyszukiwanie wykonywane jest najpierw wśród wczytanych tekstur, a dopiero potem na dysku.
4. Antyaliasing (multisampling)
OpenGL od wersji 1.3 umożliwia renderowanie obrazu do okna o znacznie większych rozmiarach, którego zawartość jest następnie skalowana do rozmiaru użytkowego. Dzięki temu ostre krawędzie stają się bardziej płynne i nie jest widoczne schodkowanie pikseli. Oczywiście odbywa się to kosztem FPS. Jeśli jednak FPS jest wystarczająco duży (>20), można sobie na to pozwolić. Tryb antyaliasingu można wybrać w pliku INI, umieszczając wpis multisampling n, gdzie n jest liczbą z przedziału 0÷4. Dla wartości 0 multisampling zostanie wyłączony, dla 4 — kolor każdego piksela ekranu będzie określany jako średnia z 16 pikseli wyrenderowanych (o ile karta to umożliwia — w przeciwnym razie wartość jest automatycznie zmniejszana). Domyślną wartością jest 2 (nawet przy braku wpisu), co oznacza uśrednianie z 4 pikseli. Informacja o włączonym trybie zapisywana jest do log.txt. W przypadku znacznego spadku FPS należy ustawić mniejszą wartość, ewentualnie poeksperymentować z różnymi rozdzielczościami na pełnym ekranie (fullscreen yes).
- W wersji 212 wprowadzone zostało dodatkowo wyłączanie multisamplingu jeśli FPS jest mniejszy niż 16. Pozwala to poprawić jakość obrazu np. na szlaku, natomiast na dużych stacjach poprawi się płynność kosztem jakości grafiki.
5. Poprawione wykrywanie braku BMP
Dotychczas brak tekstur BMP mógł nie być sygnalizowany w logu ("OK", mimo że pliku nie było). Zostało to naprawione.
6. Alternatywny font do napisów
Na niektórych (starszych) kartach graficznych mogło się zdarzyć, że nie były wyświetlane napisy dwuwymiarowe (2D - te trzy linie tektu u góry ekranu). Obecnie można to obejść, umieszczając w pliku INI wpis glutfont yes. Wymaga to obecności w systemie biblioteki GLUT32.DLL, która jest dynamicznie linkowana (w przypadku jej braku zostanie zapisana informacja w logu, a napisy zostaną przełączone na standardowe). Jeśli napisy wyświetlają się bezproblemowo, nie ma potrzeby korzystania z tej opcji (glutfont no albo brak takiego wpisu).
7. Animacja światła w ciągu doby
Po umieszczeniu w pliku INI wpisu movelight n parametry światła z wpisu light scenerii zostaną zastąpione dynamicznym wyliczaniem kierunku i jasności światła. Liczba n jest numerem dnia w roku, a dla wartości 0 dzień zostanie wyliczony z daty systemowej. Aby wyłączyć ruch światła należy usunąć wpis albo podać -1. Uzyskany efekt zależy też od stanu parametru doubleambient. Dla wartości yes wpisem light można ustawić parametry światła ambient w środku nocy, w przeciwnym razie będzie dosyć ciemno. Opcja wymaga jeszcze dopracowania (przejścia światła podczas wschodu/zachodu, zmiany koloru, minimalna jasność w nocy). Jeśli niebo (model T3D) będzie w nocy świecić, trzeba w pliku T3D zmienić własność Selfillum: na false.
8. Wyświetlanie informacji z rozkładu
Po naciśnięciu klawisza [F1], oprócz aktualnej godziny, wyświetlana jest także relacja. W kolejnych wersjach mogą być tam dodane dodatkowe informacje, na przykład nazwa najbliższej stacji i godzina odjazdu z niej.
9. Parametry rozmywania również dla DDS
Dotychczas rozmywanie dla grup tekstur (podsypki, szyny, pojazdy, pozostałe) można było ustawić jedynie dla tekstur TGA. Teraz działa to również dla DDS (zauważalny jest wzrost FPS i poprawa jakości grafiki).
10. Obcinanie znaków po ":" w nazwie tekstury
Wpisy tekstur w scenerii zostały rozszerzone o możliwość dopisania dodatkowych informacji po dwukropku umieszczonym zaraz za nazwą tekstury. Dla zachowania zgodności wstecz i nie psucia dotychczasowej składni przy wczytywaniu tekstury wszystkie znaki od dwukropka włącznie są obecnie ignorowane. Rozszerzenie to może w przyszłości służyć np. do zapisania nazwy profilu szyny we wpisie toru, co pozwoli generować np. mniejsze szyny dla kolei wąskotorowej albo szyny rowkowe dla tramwajów.
11. Logowanie naciskanych klawiszy
Naciśnięcia większości klawiszy są zapisywane w logu, aby łatwiej było wykryć błędy obsługi.
12. Animacja sky dla submodelu
Do uruchomionych wcześniej animacji submodeli została dodana animacja symulująca pozorny ruch nieba. Oś OY submodelu ustawiana jest w kierunku niebieskiego bieguna północnego (licząc od horyzontu pod kątem równym szerokości geograficznej, domyślnie 52°N), a płaszczyzna OXZ jest obracana identycznie jak przy animacji hours24, co odpowiada ruchowi dobowemu. O północy oś OZ skierowana jest w górę, a OX na wschód. Animacja służy głównie do poruszania modelem nocnego nieba. Uwaga! Ta animacja nie nadaje się do poruszania modelem Słońca, ponieważ dodatkowo trzeba uwzględnić jego deklinację zależną od pory roku (movelight, patrz punkt 7).
13. Logowanie błędnego fragmentu scenerii
Po wykryciu błędu składni kolejne 50 słów z pliku scenerii jest kopiowane do logu, aby można było łatwiej ustalić przyczynę. Dotychczas pojawiał się jedynie lakoniczny komunikat typu "Scene parse error near node".
14. Zapamiętywanie kamer
W trybie swobodnego latania (klawisz [F4]) przyciśnięcie klawisza z cyfrą (z górnej linii klawiatury) zapamiętuje pozycję kamery, o ile nie była ona wcześniej ustawiona. Kolejne naciśnięcia będą przenosić do tego miejsca (zmiana nie będzie już możliwa). Pozycja kamery jest również zapisywana w logu, aby można było ją skopiować do scenerii.
- W wersji 212 zmieniona została jednostka dla kątów na stopnie, bo tu zapisywały się i wczytywały w radianach.
15. Kiwanie na wietrze
Jako kolejna animacja submodeli została dodana animacja wind. Ma ona symulować ruchy roślinności powodowane przez wiatr. Docelowo wiatr będzie wyliczany dynamicznie, obecnie jest to prosta funkcja okresowa.
16. Klawisze funkcyjne jako włącz/wyłącz
Klawisze funkcyjne służące do pokazywania dodatkowych informacji za pomocą tekstu działają teraz jako włącz/wyłącz. Nie jest konieczne ich ciągłe przytrzymywanie, aby tekst się wyświetlał.
17. Przyspieszone liczenie normalnych modeli
Liczenie wektorów normalnych dla modeli T3D zostało przyspieszone. Jeżeli wektor normalny dla danego wierzchołka trójkąta został policzony z uwzględnieniem nachylenia płaszczyzny sąsiednich trójkątów, to dla tych trójkątów nie będzie już liczony ponownie.
18. Obiekt Type: Stars w T3D
Obiekt taki zachowuje się jak wielopunktowy FreeSpotLight bez możliwości ustalenia kierunku świecenia, za to każdy punkt może świecić innym kolorem. Pierwotnie powstał do obsługi modelu nocnego nieba, ale może także służyć jako oświetlenie wież, światła obrysowe samochodów ciężarowych lub samolotów, czy latarnie w odległej miejscowości. Obiekt można dowolnie animować (Anim:, eventy), załączać gdy się ściemnia (Selfillum: z liczbą), jak również załączać eventem lights. Obiekt nie jest wyświetlany w trybie VBO, będzie to naprawione w przyszłych wersjach.
19. Logowanie błędów na sprzęgach
Dodane zostało logowanie przypadków znalezienia przez pojazd niepodłączony pojazdu z podłączonym sprzęgiem na swojej drodze ruchu. Informacja zaczyna się od "! Coupler error on ", a dalej są podane nazwy pojazdów.
- Obserwacje z pracy tej wersji posłużyły do naprawienia ruchu pojazdów w wersji 212.
Uwaga autorska
Wersja została udostępniona w dniu 2011-05-09. Głównym celem kolejnego etapu prac było zapisywanie modeli w plikach binarnych, co powinno znacznie skrócić czas ich wczytywania. Zostało to zrealizowane w nowszej wersji 212, która zawiera wymienione funkcjonalności i dalsze poprawki.
Ra
MaSzyna - wersje | |
---|---|
Wersje 2005-2009 | 699kB • Mega Pack (KURS90, 717kB) • Dizelpack (735kB) |
Wersje z 2011 | 71 • 113 • 120 • 145 • 162 (PC2010) • 212 • 231 • 291 |
Wersje z 2012 | 325 (PC2011) • 355 • 372 • 390 • SPKS@390 |
Wersje z 2013 | 394 (01.13) • Kurs 2013 • 408 • SPKS@408 (08.13) • 414 |
Wersje z 2014 | 424 • 435 • 441 • 450 • 457 |
Wersje z 2015 | 464 (15.02) • 469 (15.04) |
Wersje robocze | SPKS • warsztat |