Lista i opis zmian w EXE (w stosunku do exe z PC2010).

W paczce PC2011 znajduje się tylko "EXE 325" (wersja pliku: 1.7.530.325, rozmiar: 994 kiB), które stanowi najbardziej rozwiniętą wersję sposród exe wydanych przez Ra od czasu ostatniej paczki całościowej (tj. PC2010). EXE 325 jest najnowsze spośród wymienionych i zawiera wszystkie poprawki oraz funkcjonalności wypracowane w EXE 162, 212, 231, 291 i 325).

Zmiany w EXE 162 (w stosunku do EXE z PC2010):

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 oraz w wersji 212.

Zmiany w EXE 212 (w stosunku do EXE 162):

1. Mijanie pojazdów

Poprawione wyszukiwanie pojazdu do podłączenia sprzęgu wirtualnego. Dla samochodów i statków możliwość minięcia się z innym pojazdem, jeśli odległość poprzeczna pomiędzy nimi na to pozwala.

2. Zoptymalizowany ruch osi/wózka

Zmieniony sposób poruszania osi/wózka po torach. Zoptymalizowane wyliczanie pozycji na torze (9 mnożeń i 9 dodawań zamiast 22 mnożeń, 6 odejmowań i 9 dodawań). Azymut wyliczany z pochodnej zamiast z dwóch sąsiednich pozycji (również mniej mnożeń). Przechyłka i pochylenie wyliczane w momencie przesunięcia osi/wózka, zamiast każdorazowo, gdy było to potrzebne. Dla odcinków prostych azymut i przechyłka są wyliczane jednorazowo przy ich tworzeniu. Rezygnacja z przeliczenia dwóch dodatkowych osi, co służyło obliczeniu kąta obrotu wózka.

3. Rozprucie zwrotnicy

Zmieniona została informacja o sposobie połączenia torów. Zamiast wartości binarnej "zmiana kierunku" użyty jest numer punktu podłączenia, z rozróżnieniem torów zwrotnicy. Teraz jadąc z ostrza zwrotnica sama przestawia się (ale nie wykonuje się event przełożenia zwrotnicy), dzięki czemu zlikwidowane zostały przeskoki. Nadal występują przeskoki w przypadku przełożenia zwrotnicy pod taborem jadącym na ostrze. Patrz też punkt 22.

4. Flagi eventów

Na torach bez eventów (większość) nie są sprawdzane dodatkowe warunki wyzwolenia eventu.

5. Wózki obracane niezależnie od drutów

Wyłączenie zależności kręcenia wózkami od poszukiwania sieci trakcyjnej przez pantograf. Dotychczas włączenie poszukiwania sieci było domniemaniem większej wydajności komputera.

6. Alternatywne nazwy modeli wózków

Rozpoznawanie boogie01 oraz boogie02 jako alternatywnych nazw wózków (np. ET22).

7. Poprawione wyświetlanie napisów w Debugmode

Naciśnięcie klawisza funkcyjnego nie powoduje już wymieszania tekstów, a ich przełączenie.

8. Poprawione logowanie naciśnięć klawiszy

Logowana jest również informacja o naciśnięciu [Ctrl].

9. Zlikwidowany problem "NULL track"

W przypadku dojechania do końca toru i nie zatrzymania się, zostanie automatyczne utworzone niewidoczne przedłużenie toru, mające na celu wykolejenie taboru. W przypadku obrotnicy może to jednak spowodować jej nieprawidłową pracę. Niemniej wykolejenie taboru na obrotnicy raczej skutecznie wyłącza ją z ruchu.

10. Rozpoznawanie jedynkowych transformów

Jeśli submodel ma transform z jedynkami na przekątnej, będzie wyświetlany szybciej. Uwaga! Jeśli submodel ma być animowany eventami albo jest ruchomym elementem kabiny, należy mu wpisać "Anim: true", w przeciwnym przypadku submodel może się w ogóle nie animować albo animować w nieprawidłowy sposób!

11. Poprawione sprzęgi wirtualne

Pojazdy stojące na tym samym torze są połączone tzw. sprzęgiem wirtualnym, który pomaga wykrywać kolizje. We wcześniejszych wersjach działanie sprzęgów wirtualnych skutkowało co najmniej trzema poważnymi błędami: I. Przy połączeniach torów typu Point1-Point1 albo Point2-Point2 sprzęg wirtualny mógł być tworzony w nieodpowiednim kierunku, co powodowało podczepianie się wagonów do samych siebie i objawiało się "waleniem w mur", rozrywaniem składu albo odrzucaniem pojazdu z dużą prędkością. II. Sprzęg wirtualny mógł się podłączać po przeciwnej stronie niż powinien (tzn. do bardziej oddalonego sprzęgu najbliższego pojazdu), co powodowało zepsucie listy dwukierunkowej (jednego z kierunków) i mogło prowadzić do rozerwania składu. III. Dodatkowy pojazd aktywny, poruszający się na drugim torze zwrotnicy, przez którą przejeżdżał skład, mógł "atakować" sprzęgiem wirtualnym zastępującym sprzęgi rzeczywiste, powodując zepsucie listy dwukierunkowej (jednego z kierunków), co mogło prowadzić do rozerwania składu. Sytuacja taka ma miejsce np. w przypadku mijanki na jednotorze i dwóch AI jadących jednocześnie z przeciwnych stron.

12. Ignorowanie zbyt dużych trójkątów

Ignorowane są trójkąty w modelach, które mają rozmiar boku większy niż 2km, podobnie jak trójkąty zdegenerowane. Obecność takiego trójkąta w modelu może powodować przycinanie, a może on nawet nie być zauważalny. Informacja o znalezieniu takiego trójkąta zapisywana jest do logu wraz z podaniem nazwy submodelu (nazwa modelu jest wyświetlana wcześniej). Zbyt duże trójkąty scenerii (terenu) są dzielone na mniejsze.

13. Zmienione pauzowanie i działanie programu w tle

Aby zatrzymać symulację, należy użyć klawisza [Pause] (obsługa klawisza [Esc] została wyłączona). W trakcie pauzowania można się poruszać kamerą, jednak symulacja będzie zatrzymana i nie będą obsługiwane ani logowane naciśnięcia klawiszy. Został usunięty problem powodujący spadanie pudła z nieba albo wysuwanie się spod torów po użyciu pauzy (w tym po przełączeniu na inny program). Pauza nie działa po włączeniu komunikacji z innym programem - wpis multiplayer 1 w eu07.ini. Po umieszczeniu w eu07.ini wpisu inactivepause no symulacja będzie nadal działała po przełączeniu innego programu na wierzch, ale nie będą słyszalne dźwięki. Uwaga! Użycie klawisza [Pause] na oknie z logiem również spowoduje zatrzymanie programu, ale będzie wyglądał na zawieszony. Należy wtedy nacisnąć ten klawisz ponownie.

14. Potwierdzenie zakończenia programu

Po przyciśnięciu [F10] pojawi się prośba o potwierdzenie zakończenia programu klawiszem [Y]. Nadal można zamknąć program natychmiastowo poprzez [Alt]+[F4]. Pytanie może się również pojawiać przy przełączaniu na inne okno.

15. Radio-stop

Przyciśnięcie klawiszy [Ctrl]+[Pause/Break] spowoduje wysłanie do wszystkich pojazdów w promieniu 2km komendy Emerency_brake. Warunkiem jest jednak umieszczenie w CHK wpisu RadioStop=Yes. Żadne dźwięki nie są przy tym uruchamiane, a na obecną chwilę pojazdy nie są przystosowane do odbioru tego sygnału z radia.

16. Wyszukiwanie najbliższego pojazdu

W trybie podglądu parametrów pojazdu [F2] wyszukiwany jest pojazd najbliższy kamery. Pojazd jest widoczny w promieniu 10m od jego aktywnej osi (aktywną osią jest pierwsza od strony kierunku ruchu, ale aby nastąpiło przełączenie, obie osie muszą być na tym samym torze). Uwaga! wyszukiwanie pojazdów w miejscach o dużym zagęszczeniu torów i dróg może powodować spadek FPS.

17. Wyświetlanie komendy

W trybie informacji [F2] wyświetlana jest ostatnia wykonana komenda, zarówno przez AI jak i przez prowadzony pojazd. Nie wszystkie komendy się pojawiają, w szczególności ustawienie prędkości jest robione w inny sposób.

18. Modele wczytywane z plików binarnych

Zostało uruchomione zapisywanie modeli w plikach binarnych E3D. Pliki są tworzone automatycznie po wczytaniu T3D. Przy kolejnym uruchomieniu programu wczytanie odbywa się z wygenerowanych plików E3D, chyba że zostaną one usunięte. Format pliku E3D może się jeszcze nieznacznie zmienić do końca roku 2011 i może być konieczne usuwanie tych plików, aby wygenerowały się nowsze, poprawniejsze wersje. Nie wszystkie modele się prawidłowo konwertują, niektóre będą wymagać ręcznych poprawek.

Do paczki z EU07_212.EXE zostały dołączone pliki E3D infrastruktury z poprawionymi animacjami (przygotował Szociu).

19. Podział obiektów na typy

Podczas wczytywania scenerii obiekty są umieszczane wg typu na oddzielnych listach. Dzięki temu wyszukiwanie obiektu o określonej nazwie jest znacznie przyspieszone, co usprawnia przygotowanie scenerii do uruchomienia ("InitTracks", "InitEvents").

20. Automatyczne "banany" dla pojazdów

Dla prawidłowego przechylania pojazdu wymagane jest aby tylko jeden submodel pojazdu mial "Parent: none". Jeśli takich submodeli będzie więcej, zostanie automatycznie utworzony dodatkowy submodel ("banan"), do którego zostaną one doczepione jako potomne.

21. Naprawione globalne wyzwalacze czasowe

Dotychczas wyzwalacze (EventLauncher) ustawione na określoną godzinę działały tylko i wyłącznie wtedy, gdy były w zasięgu widoczności. Obecnie są umieszczone osobno i "renderowane" niezależnie od swojego położenia.

Po przetestowaniu okazało się, że w wersji 212 jednak to nie działa. Poprawione dopiero w 222.

22. Sygnalizacja rozprucia rozjazdu

Jeśli zostanie zdefiniowany event o nazwie złożonej z nazwy zwrotnicy oraz ciągu :forced+ albo :forced-, to zostanie on wykonany w przypadku jej rozprucia (jazdy z ostrza od przeciwnej strony, niż aktualne ustawienie). Brak definicji takiego eventu nie jest sygnalizowany.

24. Sygnalizacja zajętości/zwolnienia grupy torów

We wpisie toru można umieścić właściwość isolated (nazwa), podobnie jak velocity. Spowoduje to utworzenie obiektu odcinka izolowanego (grupy torów) o nazwie (nazwa). Alternatywnym sposobem (zgodnym wstecz) umieszczenia nazwy odcinka izolowanego jest podanie jej po znaku @ w nazwie toru. Tę samą nazwę odcinka izolowanego można wpisać w dowolnej ilości torów, co będzie oznaczać wspólny dla nich obiekt. Obiekt odcinka izolowanego dodaje do kolejki eventy (nazwa):busy albo (nazwa):free, odpowiednio w momencie wjechania pierwszej osi na dowolny tor należący do grupy i zjechania ostatniej osi. Tory przypisane do jednego odcinka izolowanego powinny być ze sobą połączone (nie powinno być między nimi torów nieprzypisanych albo przypisanych do innego), inaczej zachowanie odcinka izolowanego nie będzie zgodne z oczekiwaniami.

W przypadku niezdefiniowania tych eventów w scenerii żaden komunikat nie informuje o ich braku. Możliwe jest również utworzenie "odcinków izolowanych" dla każdego toru odrębnie, wymagana jest tylko unikalna nazwa w skali scenerii.

25. Konfiguracja konwersji modeli

W pliku "eu07.ini" można użyć parametru convertmodels z wartością liczbową. Wartość 0 wyłączy zapisywanie plików E3D, jednak nadal będą one wczytywane w pierwszej kolejności zamiast T3D. Wartości niezerowe włączają zapis. Wartość 2 włączy, a wartość 1 wyłączy optymalizację submodeli w E3D (niektóre modele nieprawidłowo się optymalizują, ale optymalizacja daje wzrost FPS o około 10%, patrz punkt 10).

26. Przygotowanie do użycia 4 wymiennych tekstur

Wyświetlanie modeli zostało przerobione tak, aby było możliwe użycie do 4 wymiennych tekstur (replacableskin). Odpowiednio zostały dostosowane pliki E3D. Na chwilę obecną nie ma możliwości podania nazw dodatkowych trzech tekstur wymiennych na poziomie wpisów w scenerii ani w modelach T3D.

27. Zmienione ustawianie samochodów na drogach

Na drodze węższej niż 3.5m samochody ustawiane są zawsze na środku. Na szerszych drogach, samochody stojące zostaną ustawione prawym kołem przy krawędzi drogi, włączając pobocze, natomiast samochody jadące - w odległości 1/4 szerokości drogi (bez pobocza) od jej osi, ale nie dalej niż 1.5m.

28. Naprawione przesunięcie w trainset

Dotychczasowe rozwiązania w tym zakresie się nie sprawdziły, składy z ujemnym przesunięciem miały problemy ze sprzęgami. Obecnie zostało to naprawione. Dodatkowo, czoło składu jest ustawiane w podanej odległości od punktu 1 wskazanego toru i nie zależy to od długości pierwszego pojazdu. Dotychczas pozycja przesunięcia określała położenie środka pierwszego pojazdu.

29. Wstawianie odwrotne pojazdów

Aby model pojazdu był obrócony w składzie o 180° względem osi pionowej, należy we wpisie pojazdu podać -1 jako odległość od poprzedniego pojazdu (zaraz przed obsadą - headdriver, nobody). Działa także w pierwszym wpisie pojazdu. Podanie ujemnej wartości przesunięcia w trainset nie ma wpływu na kierunek pojazdów. Również czoło składu będzie zawsze po stronie pierwszego pojazdu w trainset. Obsada headdriver oznacza kabinę od strony pierwszego pojazdu w trainset. Jeśli skład ma lokomotywę na końcu i ma jechać "do tyłu", należy lokomotywę aktywować eventami (wpisanie reardriver nie zapali świateł składu).

30. Reakcja AI na podanie semafora i Ms2

Jeśli AI stoi na torze, który nie jest przypisany eventem do semafora, to również zareaguje na podanie zezwolenia jazdy na semaforze, jeśli jest on przypisany do któregoś z kolejnych torów (do 500m). Ponadto, dotychczas AI przeglądalo tory w poszukiwaniu eventu jedynie z komendą SetVelocity, a obecnie uwzględniane jest również ShuntVelocity, o ile jest w trybie manewrowym. Przypisywanie tarczy do toru (z komendą SetProximityVelocity w komórce pamięci) nie jest wymagane i będzie ignorowane. Uwaga! Aby AI stało pod semaforem, tor na wysokości tego semafora powinien mieć przypisany Event1 albo Event2 (zależnie od kierunku semafora); jeśli event będzie na wcześniejszym torze, AI chwilę postoi, zatrąbi i pojedzie dalej.

31. Zatrzymywanie AI na W4

Oprócz SetVelocity oraz ShuntVelocity rozpoznawana jest także komenda PassengerStopPoint:(nazwa), która związana jest ze wskaźnikiem W4 (miejsce zatrzymania czoła lokomotywy). Nazwy kolejnych punktów zatrzymania pobierane są z rozkładu. Po zatrzymaniu nazwa punktu zmieniana jest na następną w rozkładzie. Punkty zatrzymania nie wymienione w rozkładzie są pomijane (pociąg się tam nie zatrzyma). Nazwę najbliższego punktu można wyświetlić przyciskając [F1] (na razie tylko po oddaniu sterowania AI na początku). Pociąg będzie zatrzymany przez W4 aż do godziny podanej w rozkładzie. Również działa pobieranie prędkości rozkładowej z danego fragmentu rozkładu.

W wersji 219 poprawione zatrzymanie na stacji początkowej, dla której w rozkładzie podaje się godziny identycznie jak dla stacji bez zatrzymania.

32. Poprawiona zmiana kierunku AI

AI po otrzymaniu komendy "Change_direction" (w obu trybach) lub "OutsideStation" (w trybie manewrowym) nie ogranicza się do zmiany kierunku tylko w danej lokomotywie/wagonie/członie. Znajduje pojazd z kabiną po drugiej stronie składu i tam się inicjuje (z tyłu AI się kasuje). Dzięki temu możemy dowolnie manewrować takim ET41 lub EN57 i będą one po zmianach kierunku dobrze jeździć niezależnie od liczby dokonanych rotacji. Poprawkę przygotował ZiomalCl.

33. Sygnały końca pociągu

Składy prowadzone przez AI mają kontrolowane SKP. AI po przejściu z trybu manewrowego na tryb pociągowy będzie mieć na końcu SKP. Poprawkę przygotował ZiomalCl.

34. Poprawka na reardriver w wieloczłonach

Wpisanie reardriver w inny niż pierwszy wagon/lok/człon pociągu powodowało dotychczas, że np. taki człon A ET41 z connected potrafił jechać w jedną stronę, a człon B z reardriver w drugą. Zostało to naprawione i możemy wstawiać pociągi z reardriver. Poprawkę przygotował ZiomalCl.

35. Poprawiona jazda AI

Zmiany przygotował youBy.

36. Optymalizacja FPS (stopniowanie "slowmotion")

W przypadku wykrycia FPS niższego niż 16, zostanie w pierwszej kolejności wyłączony multisampling (antyaliasing), a następnie promień renderowania scenerii zostanie ograniczony do 1.5km albo 1km. Po przyciśnięciu [F8] będzie widoczny kod trybu "slowmotion" - odpowiednio 1, 3, 7. Odwrócenie następuje po wykryciu wzrostu FPS powyżej 25.

27. Renderowanie chodników

Jeśli dla drogi poda się ujemną wysokość "pobocza", to zamiast poziomego pobocza od strony jezdni i pochylenia na zewnątrz, zostanie utworzony poziomy chodnik z krawężnikiem od strony jezdni. Pochylenie krawężnika jest stałe i wynosi 1:3.75 (dla wysokości 15cm jest odchylony o 4cm), można tylko regulować jego wysokość. Następna wartość za wysokością chodnika określa jego szerokość z lewej strony, a kolejna z prawej strony. Mapowanie jest wykonywane proporcjonalnie do powierzchni tekstury i podanej długości powtarzania (liczba między nazwami tekstur), podobnie jak nawierzchnia. Lewy chodnik jest mapowany od strony 0/64 (zależnie od szerokości) do 31/64, następnie od 31/64 do 32/64 jest lewy krawężnik, od 32/64 do 33/64 prawy krawężnik i od 33/64 jest mapowany prawy chodnik do strony 64/64 (też zależnie od szerokości).

Renderowanie chodników działa tylko w trybie Display Lists. Dla VBO zostanie przygotowana w kolejnych wersjach.

Zmiany w EXE 231 (w stosunku do EXE 212):

1. Poprawione globalne eventlaunchery

Miały działać w 212, ale się okazało, że nie działają. Błąd został wykryty zbyt późno. Tym razem zostało to naprawione i przetestowane.

2. Otwieranie drzwi EZT na przystankach

Taki bajer. EN57 po zatrzymaniu na W4 otwiera drzwi ze wskazanej strony. Wymaga to napisania rozkładu oraz odpowiedniego ponazywania W4 w scenerii, a także przypisania odczytu W4 do toru. Udostępniona została wersja scenerii TD z wstawionymi W4 dla rozkładu z Quarka.

3. Poprawione stawanie na pierwszej i ostatniej stacji

Ponieważ w rozkładzie czas dla pierwszej stacji jest zapisywany w identyczny sposób jak dla przelotu, musi być ona specjalnie traktowana, aby AI się zatrzymało. Wyjątkiem jest sytuacja, gdy nazwa początkowej stacji w relacji jest inna niż pierwsza pozycja w rozkładzie (czyli rozkład jest niepełny, dla pociągów pojawiających się na krańcu scenerii). Po dojechaniu do ostatniej stacji AI wykonuje kolejną komendę z listy. Na chwilę obecną jest to komenda Shunt, czyli przełączenie w tryb manewrowy (w tym trybie AI podjedzie pod najbliższy semafor).

4. Poprawione trapezowate drogi

Zostały wyłączone ograniczenia na dopuszczalne zmiany trapezowania, wprowadzone wraz z dodaniem tej funkcjonalności. Wcześniej różnice większe niż pięciokrotne były ignorowane.

5. Poprawione połączenie komórki pamięci z torem

Dotychczas event UpdateValues wysyłał komendę do wszystkich pojazdów znajdujących się na wskazanym torze. Zostało to zmienione na wysyłanie komendy do AI, dzięki czemu można uruchomić pociąg znajdujący się na konkretnym torze bez konieczności używania Event0. Na przykład można uruchomić nieaktywny pociąg o określonej godzinie bez użycia semafora.

6. Potwierdzanie eventów Switch

Przy współpracy z serwerem ruchu w Rainsted dotychczas potwierdzeniem przełożenia zwrotnicy był event Multiple o nazwie zakończonej plusem albo minusem. Sprawiało to problemy przy wykrywaniu stanu rozjazdów krzyżowych. Obecnie wysyłana jest informacja bezpośrednio przy zmianie stanu zwrotnicy.

Zmiany w EXE 291 (w stosunku do EXE 231):

1. Optymalizacja plików TGA

Dekompresja plików TGA odbywa się teraz w buforze pamięci, do którego plik wczytywany jest jednorazowo. Powoduje to szybsze wczytanie tekstur o około 10%. Jednak nie dla każdego pliku TGA taka dekompresja przebiega efektywnie. Aby usprawnić wczytywanie, do pliku EU07.INI został dodany parametr modifytga, który określa możliwość optymalizowania plików na dysku za pomocą flag bitowych (poszczególne wartości można sumować). Modyfikowanie plików TGA powinno być wykonywane przede wszystkim na etapie tworzenia paczki całościowej oraz dodatków. Kompresja TGA jest efektywna, gdy istnieją linie o identycznym kolorze pikseli. Dla zwiększenia efektywności dekompresji zalecane jest pozostawienie identycznych pikseli w górnej linijce tekstury.

2. AI przepisane na C++

Sterowanie pojazdami przez komputer (AI) od początku było napisane w języku Pascal, podczas gdy poruszanie pojazdów i ich modeli obsługiwał kod w C++. W efekcie pewne informacje musiały być osobno przekazywane do AI (np. współrzędne semafora), a inne nie były dostępne wcale (np. moment pełnego otwarcia/zamknięcia drzwi). Ze względu na ograniczenia w dostępie do danych z poziomu Pascala, część funkcjonalności AI została umieszczona w obsłudze pojazdu w C++ (np. wyszukiwanie sygnalizatorów na drodze ruchu). Obecnie kod AI został przepisany do C++ i zebrany w jednym module, co powinno usprawnić dalsze modyfikacje i zwiększyć możliwości (np. o generowanie sygnałów odjazdu, czy informowanie początkującego użytkownika, co w danej sytuacji wykonałoby AI).

3. Miejsce docelowe dla pojazdów

Dla wagonów jest to stacja docelowa. Informacja taka umożliwi wykonywanie automatycznych manewrów przez AI (łączenie i rozłączanie składów, obsługa górki rozrządowej). Miejsce docelowe można wpisać po słowie destination, umieszczonym przed enddynamic, podobnie jak velocity w torach. Jeśli nie zostanie to wyszczególnione we wpisie, miejsce docelowe zostanie określone po przypisaniu rozkładu jazdy.

4. Poprawione wczytywanie dźwięków

Dotychczas przed wczytaniem scenerii były wczytywane wszystkie dźwięki z katalogu sounds. Również z tego powodu dźwięki nie mogły znajdować się w innym miejscu. Obecnie dźwięki są wczytywane w momencie wystąpienia ich w scenerii albo pojeździe, dzięki czemu można je rozmieścić w podkatalogach w sounds. Również możliwe jest umieszczenie dźwięków pojazdu w jego podkatalogu (w dynamic).

5. Możliwość przejścia do innego pojazdu

Z trybu swobodnego latania (klawisz [F4]) można wejść do znajdującego się w pobliżu innego pojazdu sterowanego przez AI, pod warunkiem, że on stoi albo porusza się z niewielką prędkością. Wejście i przejęcie pojazdu następuje poprzez naciśnięcie klawisza [F5]. Może być konieczne przyciśnięcie [F4] w celu odświeżenia widoku kabiny.

6. Zmiana kierunku jazdy w rozkładzie

Jeśli w parametrach stacji w rozkładzie zostanie umieszczony znak @, AI zmieni na niej kierunek. Dla składów niebędących EZT, lokomotywa się odczepi, a następnie wykona cykl komend: jazda manewrowa, zmiana kierunku, jazda manewrowa, zmiana kierunku, podczepianie do składu. Wymagane jest jedynie podanie sygnałów manewrowych, a także przesłanie komendy zmiany kierunku, jeśli AI nie dojeżdża do W5 ani na tor z kozłem i eventem odwracającym kierunek jazdy.

7. Wpływ origin na PutValues

We wczesniejszych wersjach event PutValues umieszczony wewnątrz origin nie był prawidłowo przesuwany. Przesunięta o wektor sceneria przestawała działać prawidłowo.

8. Zabezpieczenie przed dalekimi obiektami

Symulator obsługuje obszar 500km×500km z początkiem układu na środku (±250km od środka układu współrzędnych). Dotychczas obiekty ustawione poza dopuszczalnym obszarem powodowały błąd uniemożliwiający uruchomienie, obecnie są ignorowane.

9. Przyspieszone wyświetlanie torów

Dotychczas każdy odcinek toru/drogi/rzeki był wyświetlany oddzielnie. Teraz obiekty są sortowane wg tekstur, a siatki ich są łączone w jedną. Powinno to poprawić FPS na dużych stacjach. Optymalizacja dotyczy tylko Display Lists, dla VBO nie została dopracowana.

10. Przyspieszenie InitTracks

Przy łączeniu torów wyszukiwane są one tylko w sąsiednich sektorach, a nie na całym obszarze scenerii. Przyspiesza to znacznie łączenie torów dla scenerii z dużą ich ilością (np. Wrocław).

11. Poprawione dzielenie trójkątów

Duże trójkąty terenu, jeśli wystają za bardzo poza siatkę kilometrową, są obecnie dzielone na dwa. Dzielony jest bok pomiędzy wierzchołkami najbardziej oddalonymi od krawędzi siatki kilometrowej, w punkcie przecięcia tej siatki. Operacja wykonywana jest rekurencyjnie. Powstaje mniej trójkątów niż w poprzedniej metodzie (podziału na 4 - każdy bok na pół). Znikanie trójkątów nie powinno już być zauważalne.

12. Event zmieniający widoczność

Dodany event Visible, załączający i wyłączający obiekty (np. druty trakcyjne). Składnia podobna jak Lights, ale jest tylko jedna wartość 0 albo 1. Event może służyć np. do zamiany uszkodzonej sieci trakcyjnej na naprawioną albo usuwania modeli pracowników wykonujących naprawę.

13. Kontrolki przód/tył

W kabinie można użyć oddzielnych kontrolek do sygnalizacji jazdy do przodu oraz do tyłu. W pliku MMD mają one nazwy i-forward oraz i-backward.

14. Doczepianie AI do składu

Za pomocą komendy Shunt -1 x, gdzie x<>0 jest numerem sprzęgu, można wykonać podłączenie AI do stojącego składu. AI po podłączeniu będzie kontynuować jazdę, w kierunku zależnym od znaku liczby x - dla wartości dodatnich skład będzie spychany. Aby AI po podłączeniu się zatrzymało w oczekiwaniu na dalsze rozkazy (np. podanie semafora do jazdy pociągowej), należy użyć liczby -2 jako pierwszej wartości: Shunt -2 x. Przejście w tryb manewrowy bez zmian w składzie wykonuje się komendą Shunt -1 0.

15. Ładowanie i rozładunek wagonów

Zostały dopracowane procedury załadunku i rozładunku wagonów. Naprawiony został kod wczytujący model ładunku po wykryciu ładowania oraz usuwający model, gdy ładunku nie ma. Działa to zgodnie z założeniami z poprzednich lat. Przetestować można na scenerii Quark (Dejawy Kopalnia) bez potrzeby dokonywania modyfikacji.

16. Zamienione pantografy

Dotychczas podniesienie przedniego pantografu działało na tylny. Aby wyglądało to dobrze, numery pantografów musiały być zamienione w pliku T3D lokomotywy. Na wcześniejszych paczkach będzie to działało odwrotnie, ale od PC2011 ma zostać to uporządkowane (tzn. przedni pantograf z przodu). Wcześniej podobny problem był ze światłami, które również były zamienione miejscami.

17. Zablokowane logowanie ruchu pojazdów

Jest to efekt uboczny przepisania AI do C++, w którym inaczej obsługuje się pliki. Parametry fizyczne ruchu pojazdów nie zostaną zapisane do plików DAT. Aby uzyskać taki zapis należy używać wcześniejszych wersji (np. 231), bądź czekać na nowszą wersję, w której będzie to przywrócone.

Zmiany w EXE 325 (w stosunku do EXE 291):

1. Poprawione przesyłanie komend

Naprawione działanie SHP (w poprzedniej wersji zostało przypadkiem zablokowane). Wyłączone przesyłanie komend do lokomotywy prowadzonej ręcznie.

2. Czyszczenie tabelki rozkazów

Po wykonaniu komendy Wait_for_orders tabelka rozkazów zostaje wyczyszczona i nie jest możliwe przypadkowe powtórzenie wcześniej zapisanych do niej i wykonanych już komend.

3. Poprawione atmo i light

Parametry pogody ustawią się domyślnie, nawet gdy nie będzie wpisów w scenerii.

4. Blokada klawiatury

Gdy okno nie jest aktywne (aktualnie wybrany jest inny program), eventlaunchery nie będą reagować na naciskanie klawiszy. Uwaga! Sterowanie pojazdem w takiej sytuacji nie zostanie zablokowane i np. może się zdarzyć wyłączenie lokomotywy podczas pisania tekstu w innym programie. Zalecane jest mimo wszystko użycie automatycznej pauzy inactivepause yes. Problem został rozwiązany dopiero w późniejszej wersji.

5. Poprawione AI

Sprawdza odhamowania każdego pojazdu w składzie (dotychczas tylko dwa skrajne). Jeździ na tylnym pantografie (dotychczas na przednim, ale w modelach były zamienione). Powinno działać łączenie składów (dotychczas testowane były tylko lokomotywy bez wagonów z przodu). Sprawdzenie przeszkody przeniesione na początek skanowania torów (mogły występować problemy, jeśli AI stało na torze z eventem odczytu semafora).

6. Światła bez limitu odległości

Światła przednie pojazdu ustawiane są niezależnie od odległości. Dotychczas były wyłączane, jeśli pojazd był dalej niż 400m od kamery.

7. Usuwanie pojazdów na torach skrajnych

Jeśli nazwa odcinka toru/drogi/rzeki zaczyna się od gwiazdki i odcinek ten będzie połączony z innym tylko od strony punktu 2, włączona zostanie na nim funkcja portalu. Odcinek taki bezpowrotnie usunie wszelkie pojazdy, jakie nań wjadą z sąsiedniego odcinka. Oczywiście odcinki takie nie powinny znajdować się w widocznych miejscach. Połączenie odcinka z obydwu stron wyłącza funkcję pochłaniania pojazdów. Uwaga! Wstawienie pojazdu na taki odcinek z poziomu scenerii może spowodować błąd.

8. Odporność na błędy/braki CHK

Program się nie wysypuje, jeśli nie ma pliku CHK lub zawiera on błędy. Zamiast tego wpis pojazdu zostanie zignorowany. Uwaga! Braki pojazdów mogą powodować nieprawidłowe działanie scenerii, jeśli pojazdy te są używane do wyzwalania zdarzeń (eventów) albo istotna jest długość składu.

9. Odwracanie samochodów i statków

Jeśli samochód dojedzie do końca drogi, zostanie obrócony o 180° i przestawiony na przeciwny pas ruchu. Podobnie stanie się ze statkiem, jeśli dotrze do końca kanału. Obracanie nie dotyczy taboru kolejowego - w tym przypadku tworzone są tory wykolejające (z przechyleniem).

10. Wyłączenie dźwięku prędkościomierza

Dźwięk prędkościomierza (haslera) jest wyłączany po wyjściu z kabiny do swobodnego latania - klawisz [F4]. Poprawkę przygotował Szociu.

11. Uruchomione hamulce hydrauliczne

Dotychczas hamulce samochodów nie funkcjonowały prawidłowo, przez co nie były one w stanie zatrzymać się przed przejazdem. Poprawkę przygotował youBy.

12. Optymalizacja wszystkich plików TGA

Możliwe jest uruchomienie optymalizacji wszystkich tekstur TGA, znalezionych w folderze z Symulatorem. Należy wywołać EU07.EXE z parametrem -modifytga, albo umieścić w EU07.INI wpis modifytga -1 (nie zalecane, ponieważ uniemożliwia uruchomienie symulacji).

13. Teren w E3D

Możliwe jest zapisanie trójkątów terenu z nieprzezroczystymi teksturami do pliku E3D (jako model). Trójkąty są grupowane obszarowo w kilometry kwadratowe. Jeśli któryś trójkąt zbyt mocno wystaje poza kwadrat kilometrowy, zostanie podzielony na mniejsze na granicy kwadratu. Teren z pliku E3D wstawia się identycznie jak modele do scenerii, jedynie zamiast model i endmodel należy użyć terrain i endterrain (nie jest możliwe definiowanie świateł ani wymiennej tekstury - nie będzie to funkcjonować). Jeśli plik o nazwie umieszczonej we wpisie nie istnieje, zostanie on utworzony po przetworzeniu trójkątów scenerii. Jeśli plik zostanie znaleziony, wszelkie następujące trójkąty z nieprzezroczystą teksturą zostaną zignorowane.

Tworząc scenerię najlepiej jest przenieść wszystkie trójkąty tworzące teren do jednego pliku SCM. Po wygenerowaniu pliku E3D dla terenu, wpis include dla terenu należy zakomentować, aby nie opóźniał niepotrzebnie wczytania scenerii. Paczka Całościowa 2011 nie ma terenu zapisanego w E3D, będzie to realizowane później.

14. Dodatkowe ustawienia

W pliku scenerii można pomiędzy config oraz endconfig wpisać specyficzne dla danej scenerii ustawienia, o składni identycznej jak w EU07.INI. Nie wszystkie zadziałają, ponieważ niektóre są używane tylko na początku (nazwa scenerii, rozmiar okna). Należy korzystać z tej możliwości z rozwagą i nie ustawać parametrów, które utrudniły by korzystanie użytkownikowi.

15. Zmiana osi obrotu przechyłki toru

Dotychczas oś obrotu znajdowała się na środku toru, na wysokości podstawy szyny (powierzchni podsypki). Oś obrotu została przeniesiona na wewnętrzną szynę łuku, co odpowiada praktyce konstruowania przechyłki. Zmiana ta może mieć wpływ na przejazdy umieszczone na łuku i jest wprowadzona w celu budowania realistycznych przejazdów i jednoznacznego określenia sposobu ułożenia toru na łuku. Jednocześnie podczas wczytywania do współrzędnej pionowej toru dodawana jest domyślna wysokość szyny równa 0.18m. Dzięki temu możliwe będzie używanie szyn o różnej wysokości, gdyż trajektoria ruchu znajduje się na poziomie główki szyny. Wcześniej wartość 0.18m była dodawana każdorazowo przy odczycie pozycji pojazdu na torze. Uwaga! Jeśli sceneria ma błędy w postaci niezgodności przechyłki na połączonych ze sobą odcinkach, może to prowadzić do nieprzejezdności i wykolejenia taboru (wcześniej taka sytuacja była akceptowana).

16. Łagodne cienie

Dotychczas zmiana cienia (np. na torach z parametrem tunnel) odbywała się skokowo, zależnie od położenia aktywnej osi pojazdu. Zostało to zmienione na płynne przejście, proporcjonalne do położenia początku odcinka toru pomiędzy osiami/wózkami. Zmiana cienia może wyglądać nieprawidłowo, jeśli dokonywana będzie z użyciem odcinków krótszych niż rozstaw osi. Uwaga! Pojazdy wstawione z poziomu scenerii na odcinki o własności środowiska innej niż flat mogą "świecić" aż do zjechania z tego odcinka (później się będą zachowywać prawidłowo).

17. Zmiana definicji kąta światła

Dotychczas kąty światła FreeSpotLight był traktowane jako kąty promienia (stożek światła był dwukrotnie większy). Ponieważ w programach graficznych używa się kąta średnicy (zwykle maksymalny kąt dla stożka to 160°), taka interpretacja została przyjęta. Zgodnie z nową definicją dla kąta 180° stożek światła staje się płaszczyzną (światło na płaskim murze), a światło niczym nie zasłonięte to kąt 360°.

18. Zmiany Huntera

Wiele zmian w funkcjonowaniu sterowania wprowadził Hunter. Należy się z nimi zapoznać, aby nie zgłaszać, że np. lokomotywa nie daje się uruchomić w dotychczasowy sposób. Zmiany te obejmują:

19. Likwidacja obwódek

Zmieniony sposób wyświetlania przeźroczystości w trójkątach terenu na zaproponowany przez QueuedEU (usunięcie obwódek na drzewach itd.). Domyślnie przeźroczystości wyświetlane są nową metodą. Niestety średnio sprawdza się ona w przypadku małych obiektów, np. trawy, dlatego jest możliwość wyświetlenia trójkątów po staremu, jeśli w nazwie ich tekstury znajdzie się symbol "@" (podobnie działa "#"). Zalecane jest też stosowanie tego w przypadku płotów i rzek, tzn. kiedy pod teksturą rzeki mamy teren z nałożoną teksturą dna. Poprawkę przygotował Szociu we współpracy z QueuedEU.

Uwaga autorska

Od czasu powstania wersji 325 minęły już prawie 2 miesiące i wiele rzeczy zostało poprawionych albo zrobionych inaczej. Niemniej jednak nowsza wersja nie może być umieszczona w Paczce Całościowej 2011, ponieważ trzeba by ponownie przetestować działanie wszystkich scenerii, co by zajęło kolejne tygodnie. Nowa Paczka Całościowa ma przede wszystkim zawierać scenerie dostosowane do lepiej działającego AI. Drugim priorytetem są pliki modeli w formacie E3D, które są wczytywane znacznie szybciej, ale wymagają pewnych ręcznych poprawek dla prawidłowego działania.

Ra, 2012-05-12




Powyższy opis został sporządzony na potrzeby Paczki Całościowej 2011 na podstawie informacji o EXE 162, 212, 231, 291 i 325, które są umieszczone na stronie http://rainsted.com/pl.
Autor opisu zmian w EXE: Ra.