Symulator/MaSzyna/EN57.EXE warsztat

Z Rainsted
Skocz do: nawigacji, wyszukiwania

EN57.EXE jest przeglądarką scenerii do MaSzyny, ułatwiającą poprawianie błędów.

Rozpoznawanie profilu podsypki ze starym mapowaniem (470)

Dotychczas rozpoznawanie profilu podsypki ze starym mapowaniem było realizowane po długości powtarzania tekstury równej 4m. Dołożony został warunek, że na zewnątrz szyny jest 0.5m, bo tylko dla takiego przypadku stare tekstury będą sensownie wyglądać. Nie ma natomiast wpływu wysokość podsypki ani szerokość pochylenia (profil 0.2 0.5 1.1 jest sukcesywnie zmieniany na 0.2 0.5 1.3 albo 0.6 0.5 1.3). Osobną sprawą są tekstury na rozstaw szyn inny niż normalny i na razie nie ma to rozwiązania.

Pomijanie wysyłania zajętości torów zaizolowanych (470)

Tory z przypisanym odcinkiem izolowanym niepotrzebnie wysyłają odrębnie zajętość i zwolnienie, zamula to tylko transmisję. W razie potrzeby o zajętość konkretnego odcinka toru zawsze można zapytać.

Rozpoznawanie łuków pionowych (470)

Ponieważ krzywymi Béziera trzeciego stopnia nie da się zrobić łuków pionowych na łukach w planie w taki sposób, żeby promienie tych łuków różniły się (co wynika ze związku promienia z długością wektorów kontrolnych), wprowadzona została własność odcinka vradius [m] do podawania promienia łuku pionowego. Dzięki temu będzie można skorygować trajektorię ruchu w taki sposób, żeby łuki pionowe faktycznie łagodziły załom dużo większym promieniem niż promień łuku w planie.

473: Dodane zostało ustawianie promienia łuku pionowego w odcinku, a także wstępna przymiarka do rozróżniania pewnych typów krzywych. Łuki okręgu w planie (w tym z pochyleniem — linia spiralna), łuki pionowe, łuki w planie z łukiem pionowym oraz krzywe przejściowe będą obsługiwane jako wyjątki od ogólnych krzywych Béziera. Jest to również krok w kierunku wczytywania scenerii z RSF, gdzie jest gotowa informacja o charakterze krzywej.

Odwrócone TGA (470)

W ostatnim czasie zamanifestował się problem z teksturami TGA odbitymi w pionie. Dodane więc zostało prymitywne odwracanie po wczytaniu w przypadku wykrycia takiej tekstury.

472: Po głębszym zastanowieniu i rozważeniu wszystkich opcji w zakresie ustalania punktu zerowego tekstur odwracanie TGA zostało usunięte w kolejnej wersji. Nieco przy okazji uruchomione jest wczytywanie tekstur z plików JPG i PNG (bez sprawdzania rozmiarów). Nie jest przeprowadzana kompresja do DXT3, więc takie tekstury będą zajmować równie dużo pamięci, jak wczytane z TGA.

Logowanie komórek przy zamykaniu (470)

Po wyjściu z symulacji do log.txt zapisywana jest zawartość wszystkich komórek pamięci. Przy okazji zostały naprawione nazwy i wartości początkowe automatycznie generowanych komórek dla odcinków izolowanych.

Podgląd komórek pamięci (470)

Po użyciu [F2][F2][F2] wyświetlana jest lista komórek pamięci z okolicznych sektorów. Najpierw w sektorze są przeglądane tory w celu znalezienia odcinków izolowanych, potem dodawane są pozostałe komórki, jeśli nie zostały dodane jako odcinki izolowane. Analizowane jest 9 sektorów najbliższych kamerze. Dzięki temu komórki odcinków izolowanych nie muszą mieć współrzędnych, dodadzą się do listy jeśli tylko tor z izolacją będzie blisko kamery.

472: Dla lepszej czytelności nazw komórek pamięci (sygnalizatory, odcinki izolowane), na ekranie podglądu oraz w logu będą zachowane wielkie litery. Jednocześnie (przynajmniej na razie) do drzewka wyszukiwania będzie dodawana nazwa małymi literami.

477: Wyświetlane są również komórki pamięci używane do zliczania pojazdów na blokadzie liniowej (eventy AddValues jako EventAll1 albo EventAll2). Eventy takie mogą być również użyte do sterowania przejazdem (dodawanie zbliżających się i odejmowanie tych, które przejazd minęły).

Orientowanie się w rozkładzie (471)

Po przypisaniu rozkładu pociąg ma ustawioną flagę analizy W4. Pierwsza napotkana nazwa W4 powinna być wyszukiwana w pozycjach rozkładu. Jeśli zostanie znaleziona, rozkład powinien zostać przewinięty do tej pozycji, a flaga zdjęta. W przypadku nieznalezienia w rozkładzie, W4 jest ignorowany, a podobnej analizie podlega kolejna znaleziona nazwa W4.

Poprawka na tworzenie zasilaczy (472)

Automatyczne tworzenie brakujących zasilaczy zostało zrobione prowizorycznie, podobnie jak logowanie problemów z przeciążeniem. Problematyczne okazało się przeciążenie automatycznie utworzonych zasilaczy. Zostało to naprawione.

Grupowanie odcinków izolowanych (472)

Dodając wpis area grupa iz1 iz2 iz3 ... endarea gdzie pierwsza nazwa jest nazwą grupy, a pozostałe nazwami odcinków izolowanych, można uzyskać odcinek izolowany, który będzie zajęty w przypadku zajęcia któregoś ze składowych. Pozwala to zaizolować pojedyncze rozjazdy na potrzeby SCS, a jednocześnie zgrupować je na potrzeby sterowania na poziomie eventów (quarkowego). Ze względu na to, że odcinek izolowany ma połączenie tylko z jednym obiektem grupującym, nie jest możliwe dodanie go do wielu grup.

Lampka napięcia na nastawniku hamulca (472)

Dla typu EZT na wyjście 34 PoKeys wyprowadzona jest lampka napięcia na nastawniku hamulca zamiast lampki ogrzewania.

Przygotowanie nowych trybów kamery (472)

Oprócz dotychczasowych trybów kamery: ruchu z pojazdem i rozglądania się w scenerii, wprowadzone będą dwa nowe tryby. Trzeci będzie polegał na przywiązaniu kamery do toru, dzięki czemu w łatwy sposób będzie można oglądać scenerię wzdłuż toru, zachowując wektor odległości poziomej i pionowej od najbliższego toru. Czwarty tryb przeznaczony będzie do regulacji parametrów obrazu typu skalowanie osi.

Wczytywanie tekstur JPG oraz PNG (472)

W związku z analizą tematu odwróconych tekstur TGA zostało dodane wczytywanie tekstur z innych formatów, w szczególności JPG oraz PNG (z początkiem u góry, podobnie jak DDS). Przede wszystkim ma to na celu ułatwienie podglądu modeli z teksturami w takich formatach bez konieczności tworzenia TGA i odbijania w pionie.

Domyślna tablica kierunkowa (472)

Przy wczytywaniu modelu pojazdu sprawdzana jest dostępność domyślnej tekstury wyświetlacza (o nazwie nowhere). Dotychczas model do czasu podania rozkładu albo przy braku odpowiedniej tablicy kierunkowej mógł być wyświetlany bez tekstury, przez co tablica była biała.

Eventy wyzwalane przez główne AI (472)

W przypadku gdy w składzie znajduje się nieaktywne AI (np. jazda jako pasażer), pojazdy z takim AI niepotrzebnie wyzwalały eventy związane z obsadą. Obecnie jest to wyłączone zgodnie z rozwiązaniem zaproponowanym przez kolegę Stele. Jednak należy jeszcze przemyśleć np. kwestię aktywacji SHP w czynnej lokomotywie ciągniętej przez inną.

Naprawione podjeżdżanie pod odległy W4 (473)

Zmiany w obsłudze W4 (wprowadzenie długości peronu) doprowadziły do błędnego działania w przypadku, gdy pociąg po uruchomieniu scenerii stał daleko od W4. Obecnie dodany został wymóg, że czoło składu nie może być dalej niż 400m od W4. Ma to również konsekwencje w sytuacji, kiedy EZT zmienia kierunek jazdy przy peronie (przeciwległy W4 może być daleko).

Przyspieszone wczytywanie drzew i traw (474)

Przetwarzanie wpisów drzew i traw zostało znacznie przerobione. Przykładowo, czas wczytania scenariusza "linia61_osobowy2", który dołącza wszystkie fragmenty scenerii skrócił się z 3.5 minuty do 2 minut (skrócenie o około 45% pierwotnego czasu). Na innych sceneriach też jest zauważalne skrócenie czasu wczytywania.

Dźwięki odjazdu z "sounds" (475)

Przy wprowadzaniu rozkładów w sceneriach wydawało się korzystne umieszczanie przypisanych im dźwięków odjazdów bezpośrednio w miejscu umieszczenia rozkładu. Jest to dobre dla scenerii fikcyjnych, w których raz zrobione rozkłady pozostają bez zmian. Jednak dla scenerii realistycznych mogą istnieć pociągi o tych samych numerach, dla których w różnych okresach są różne pliki rozkładów. Rozkłady te wygodniej umieszczać w specjalnych katalogach z fragmentem daty w nazwie. W efekcie powstają rozkłady np. dla 16113 dla różnych okresów i bez sensu by było nagranie odjazdu powielać w każdym podkatalogu z rozkładem. Dlatego w drugiej kolejności nagrania odjazdów szukane są w sounds/.

Domyślna długość peronu (476)

Dotychczas był wymóg zatrzymania do 50m od W4, aby zatrzymanie zostało zaliczone. Wymóg ten został złagodzony poprzez wprowadzenie obsługi podanej długości peronu (pociąg musi się zmieścić w długości peronu, chyba że jest dłuższy, wtedy musi podjechać na mniej niż 50m od W4). Ponieważ jednak nie wszystkie scenerie mają wpisane długości peronu, zostało dodane domyślne wpisywanie długości 300m (w ten parametr, gdzie jest strona otwarcia drzwi). Ponieważ długości peronów są w szerokim zakresie, trudno ustalić najbardziej optymalną wartość domyślną. Są perony od 180m do 500m — te krótsze nie powinny zaliczać stanięcia przed peronem, a te dłuższe powinny akceptować zatrzymanie nawet w dużej odległości od W4. Wobec tego brak podanej długości peronu w W4 został uznany jako błąd w scenerii i jest logowany w errors.txt.

Poprawione skanowanie sygnałów (476)

W przypadku gdy dwa sygnały były blisko siebie (np. W4 i semafor) oraz gdy odpowiadające im tory zapisywały się do tabelki skanowania (np. z uwagi na łuk), liczenie odległości od drugiego sygnału nie działało prawidłowo — aż do minięcia pierwszego sygnału drugi był widziany jako bardzo odległy. Obecnie przeliczanie odległości działa poprawnie, jednak tabelka skanowania wygląda na nieposortowaną. Najbliższe testy pokażą, czy sortowanie tabelki jest konieczne, czy nie ma większego znaczenia.

Pomijanie W4 w trybie Connect (476)

W trybie jazdy z gotowością łączenia się do innego taboru (np. po komendzie Shunt -3 -3) AI będzie ignorować wszelkie wskaźniki W4. Zatrzymanie się na przystanku bądź zaliczanie posterunków nie ma w takim przypadku żadnego uzasadnienia. Pociąg powinien widzieć W4 dopiero po skompletowaniu składu. Problem pojawił się w Częstochowie Stradom w misji "towarowy2" — jazda manewrowa musiała zostać przekierowana na tor bez W4, aby AI było w stanie wykonać podczepienie się do składu.

Logowanie tabelki skanowania (477)

Logowanie tabelki skanowania można włączyć osobno dla każdego pojazdu (składu) z ekranu [F12], klawiszem [4] w pobliżu pojazdu z obsadą (bądź w jego wnętrzu). Flaga +8 w debuglog włącza domyślnie logowanie skanowania we wszystkich pojazdach (można potem indywidualnie wyłączać). Logowanie skanowania zatrzymuje się, gdy pojazd stoi, a tabelka nie jest modyfikowana (aby nie powtarzać w logu ciągle tej samej zawartości).

Wyłączone odwracanie znaczenia Opacity (477)

W parametrze convertmodels na potrzeby zgodności wstecznej została kiedyś dodana opcja odwrotnego znaczenia parametru Opacity: w modelach T3D. Ponieważ miało to jedynie tymczasową użyteczność do czasu doprowadzenia plików T3D do poprawnego stanu, obecnie jest zbędne i mogło wprowadzać zamieszanie w razie przypadkowego uruchomienia convertmodels 6.

Zliczanie przęseł na zasilacz (477)

Do zasilaczy została dodana opcja zliczania, ile przęseł na każdy przypada. Zgrubna analiza scenerii pokazała, że przeciętnie jest to 200 do 300 przęseł. Dla liczby przęseł przekraczającej 1000 (sceneria z nieprawidłowym zasilaniem) zwiększona będzie moc zasilacza (wydajność prądowa), proporcjonalnie do liczby przęseł. Liczba przęseł na zasilacz loguje do log.txt, w sekcji InitTraction.

Rozkład i tabelka skanowania widoczne w całym składzie (477)

Dotychczas aby podejrzeć rozkład albo tabelkę skanowania należało się znaleźć blisko pojazdu obsługiwanego przez AI. Obecnie informacje te są dostępne w każdym pojeździe, który należy do składu.

Przywrócenie pantstate (478)

Za pomocą "ładunku" o nazwie pantstate można było kiedyś wymuszać podniesienie pantografów pojazdów zasilanych z sieci trakcyjnej. Funkcjonalność ta przestała działać po wprowadzeniu obsługi baterii, której załączenie było konieczne do podniesienia pantografów. Kolejnymi przyczynami zepsucia było wprowadzenie obsługi zbiornika pantografów, początkowego stanu powietrza w zbiorniku głównym, zależności wyłącznika szybkiego od napięcia oraz dostosowanie pantografów do faktycznej wysokości drutu. Obecnie w przypadku podania pantstate z wartością od 1 do 7 wszystkie uzależnione urządzenia są ustawiane na stan umożliwiający podniesienie pantografów, a jego animacja wykonana jest w specjalny sposób w zerowym czasie.

Przy braku pantstate (zerowy ładunek) pantografy są podnoszone w analogiczny sposób w przypadku ustawienia niezerowej prędkości początkowej.

Uruchamianie pojazdu w ruchu (478)

W niektórych przypadkach wskazane jest uruchomienie scenerii z pojazdem użytkownika będącym w ruchu. Pojazd w takim przypadku powinien być załączony i gotowy do jazdy (w tym powinien mieć podniesione pantografy i zapalone światła). Kiedyś to działało, ale przestało po zmianach związanych z obsługą baterii i pantografów. Obecnie jest przywrócone, chociaż sposób wymuszenia stanu początkowego pojazdu nie jest najlepszy.

Wirtualna izolacja rozjazdów (479)

Po włączeniu komunikacji (opcja multiplayer z dodaną flagą +4) dla zaizolowanych grup z nazwami zawierającymi człon _Ig zostaną automatycznie utworzone izolacje rozjazdów z członem _Iz. Odcinki torów należące do takich grup będą dołączane do izolacji najbliższego rozjazdu (w pierwszej kolejności odcinki stykające się bezpośrednio z rozjazdem). Do rozpatrzenia pozostaje, czy odcinki stykające się jednocześnie z dwoma rozjazdami zostaną podzielone na dwa, na razie takie dzielenie powinno być wykonane na poziomie plików scenerii.

Uwaga! Wirtualna izolacja nie wykona się prawidłowo dla rozjazdów krzyżowych zbudowanych według starego schematu (nazwy zwrotnic zawierające podkreślenia przed literą).

Naprawione łączenie AddValues (480)

Event AddValues wykonywany jest natychmiastowo, aby kolejka eventów nie usunęła jego zbyt częstych wywołań. Jednak taki event może być połączony z eventem kolejkowanym (np, wykonanie dodatkowych operacji, jeśli odejmowanie osiągnęło zero). W takiej sytuacji występowały problemy z powtórnym dodaniem doklejonego eventu do kolejki — jeśli ów event nie zdążył się wykonać, event próbował się dodać do siebie samego i następowało zapętlenie. Wynikało to z tego, że ochrona przed wielokrotnym dodaniem do kolejki znajduje się w obsłudze wózków, ale badany jest tylko pierwszy ze złączonych eventów, który będąc wykonywanym natychmiastowo AddValues nie dopisuje się do kolejki. Rozwiązaniem jest dodanie testu istnienia w kolejce eventu doklejonego, zaraz po wykonaniu AddValues.

Docelowo można pomyśleć o usprawnieniu sterowania poprzez definiowanie specjalnych operacji na komórce pamięci zliczającej pojazdy, dzięki czemu można by zrezygnować z jawnego definiowania eventów. Licznik powinien być w drugim parametrze liczbowym, a komórka nie być jednocześnie użyta do skanowania ani połączona z odcinkiem izolowanym. W przypadku zmniejszania, w momencie osiągnięcia wartości 0 do pola tekstowego komórki powinno być wpisywane "free". Aktualnie używane są nazwy eventów ++komórka oraz --komórka z jawnymi ich definicjami, ale zgodnie z konwencją użycia dwukropka mogłoby to wyglądać jako komórka:inc oraz komórka:dec.

Propozycje

Pomocnicze W4

W wielu przypadkach pociągi nie zatrzymują się przed samym W4, a np. przed przejściem w poziomie torów. Można to zrealizować w taki sposób, że dla ujemnego drugiego parametru (informującego o długości peronu oraz stronie otwarcia drzwi), pociąg będzie go uwzględniał tylko, jeśli będzie krótszy od podanej ujemnej długości. Czyli przykładowo, dla wartości -202, punkt zatrzymania będą ignorowały pociągi dłuższe niż 200m, a krótsze się zatrzymają z otwarciem drzwi po prawej stronie. Punkt zatrzymania może określać dokładniej pierwszy parametr liczbowy.

Opcje zatrzymania na W4

Pierwszy parametr liczbowy w W4 nie jest obecnie wykorzystany w praktyce. Propozycja jego użycia jest następująca:

  • Wartość dodatnia: środek pociągu zatrzyma się w podanej odległości od W4. Nie obowiązuje jeśli długość pociągu w porównaniu z długością peronu spowodowałaby ustawienie wagonów poza peronem. Jest to wskazane, jeśli przy peronie znajduje się wiata, a pociągi powinny zatrzymywać się raczej przy wiacie niż przy samym W4.
  • Wartość ujemna: czoło pociągu zatrzyma się w podanej odległości od W4. Nie obowiązuje, jeśli długość pociągu w porównaniu z długością peronu spowodowałaby ustawienie wagonów poza peronem. Jest to wskazane, jeśli np. są przejścia w poziomie torów i zatrzymanie pociągu dalej zablokuje takie przejście.

Jeśli peron jest długi, a zatrzymania pociągów o różnych długościach mają różne preferencje, wtedy wskazane by było używanie opcjonalnych W4, uzależniających punkty zatrzymania od długości pociągu.

Przymiarka do generatora tabliczek

Planowane jest w ramach konfiguracji (eu07.ini albo config endconfig) dodanie opcji ustanawiających generatory tabliczek. Głównym parametrem będzie domyślna ścieżka (np. tabl), dla której będzie można zdefiniować teksturę bazową, plik fontu oraz zasady tworzenia napisów. Będzie też opcja zapisu wygenerowanych tekstur i możliwość określenia priorytetu, czy potrzebne tabliczki mają być wyszukiwane na dysku, czy wyłącznie generowane. Ze względu na formę realizacji będzie to neutralne dla scenerii (brak ustalonej konfiguracji będzie skutkował wczytywaniem tekstur z dysku lub ich brakiem).

banner.context tabl //ścieżka, w której szukane by były tabliczki
banner.font pkp //plik z zestawem znaków
banner.mode 1 //tryb pracy: 1 - generowanie tabliczek semaforów
banner.base empty //pusta tekstura, na której będzie umieszczony napis
banner.color 0 //domyślny kolor napisu (czarny)

banner.context linia181 //ścieżka, w której szukane by były tabliczki
banner.font dworcowa //plik z zestawem znaków
banner.mode 2 //tryb pracy: 2 - generowanie nazw miejscowości (stacje)
banner.base niebieski //pusta tekstura, na której będzie umieszczony napis
banner.color 0xFFFFFF //domyślny kolor napisu (biały)

banner.context znaki //ścieżka, w której szukane by były tabliczki
banner.font drogowskaz //plik z zestawem znaków
banner.mode 3 //tryb pracy: 3 - generowanie nazw miejscowości (drogi)
banner.base zielony //pusta tekstura, na której będzie umieszczony napis
banner.color 0xFFFFFF //domyślny kolor napisu (biały)