Symulator/MaSzyna/EU07.EXE warsztat

Z Rainsted
Skocz do: nawigacji, wyszukiwania

Poniższa strona jest już nieaktualna — prace nad nowszymi wersjami EU07.EXE przejęli bardziej zaawansowani użytkownicy. Czy ja coś jeszcze zrobię, zdecyduję w połowie 2018 roku.

Działające

Ukierunkowane prace nad nowymi funkcjami wstrzymane do 2018 roku. Nawet gdybym miał ochotę wprowadzić jakiś pomysł wcześniej, to usiądę i poczekam, aż mi przejdzie.

Częściowo działające

Poniższe funkcje są w pewnym zakresie dostępne już we wcześniej wydanych wersjach. Jednak nie są dopracowane na tyle, by uznać je za standardowe. W przyszłych wersjach ich działanie może być nieco inne niż opisane poniżej. Wskazane jest testowanie i przesyłanie uwag i propozycji ulepszenia.

Generator napisów

Wyświetlacz tekstowy dodany w wersji 360 składa się z submodelu bez trójkątów o własności Type: Text. Może mieć on dowolną liczbę submodeli potomnych, nazwanych różnymi znakami (z rozróżnieniem wielkości), np. "a", "b", "0", "1", "Z", "@", "_" itd. Taki submodel o nazwie jednoznakowej musi mieć zdefiniowaną szerokość w swoim transformie. Tzn. układ rysowania submodelu jest najpierw przemieszczany o wskazany wektor względem poprzedniej pozycji, a następnie rysowany jest submodel. Przemieszczenie następuje narastająco, dzięki czemu można składać napisy dowolnej długości i w dowolnym kierunku. Submodele znakowe w najprostszej formie mogą być prostokątami z zamapowanym fragmentem tekstury z zestawem znaków, a w zaawansowanej -- modelem 3D znaku.

Do rozwiązania pozostaje kilka kwestii, np. zapis struktury wyświetlacza do E3D z dodatkową tabelką wskaźników, sposoby przekazywania napisu do modelu (dodatkowy parametr we wpisie, komórka pamięci), możliwość generowania kilku różnych napisów w ramach jednego submodelu, napisy na tablicach kierunkowych, wyśrodkowanie napisu, czy wypełnienie wolnego miejsca.

Sterowanie pulpitem

Sterowanie dedykowanym pulpitem ma być alternatywą do sterowania klawiaturą. Wymaga to dorobienia całego wewnętrznego modułu sterowania, ponieważ obecnie klawiatura jest odczytywana bezpośrednio.

W wersji 355 została wstępnie rozszerzona komunikacja zwrotna o obsługę Pokeys55. Można zapalać 11 kontrolek oraz wysterować miernik analogowy (amperomierz - 100% wypełnienia to 1024A). Docelowo będzie 6 wyjść analogowych (po ustaleniu, które wyjście co ma reprezentować). Od wersji 364 można ustawić hamulec zasadniczy za pomocą potencjometru, a od 366 również hamulec pomocniczy.

Od wersji 364 są wczytywane z pliku EU07.INI współczynniki kalibracyjne dla wejść oraz wyjść, co pozwala korygować nieliniowość obwodów (funkcją trzeciego stopnia):

  • calibratein n w0 w1 w2 w3
  • calibrateout n w0 w1 w2 w3

Sposób liczenia:

y[n] = ( ( ( w3 · x[n] ) + w2 ) · x[n] + w1 ) · x[n] + w0

Maskowanie slowmotion

Do pliku INI można dodać parametr slowmotion, dzięki czemu pewne funkcje nie będą wyłączane przy spadku FPS. Domyślna wartość to -1. Dla wartości -2 nie zostanie wyłączony antyaliasing, tylko zmniejszy się promień wyświetlanej scenerii (działa w wersji 235). Wartość 0 wyłączy wszystkie funkcje zwiększające FPS kosztem jakości (ale nadal będzie wyłączanie bujania kamery przy niskim FPS).

Maskowanie ma na celu określenie, kiedy zwiększenie FPS powinno być dokonane przez wyłączenie antyaliasingu. W przypadku nagrywania filmów wyłączenie antyaliasingu nie jest wskazane, nawet przy znacznych spadkach FPS (tzn. poniżej 16). Z kolei przy używaniu mało wydajnego sprzętu płynność symulacji (więcej niż 10 FPS) ma większą wartość niż utrzymywanie antyaliasingu. W zależności od sprzętu i zastosowania, będzie można sobie indywidualnie dobrać moment wyłączenia antyaliasingu albo zablokować to wyłączanie.

W związku z wprowadzeniem płynnej regulacji promienia scenerii, maskowanie w opisany wyżej sposób ma niewielki sens. Powinno się raczej podawać minimalny promień scenerii, przy którym zostanie wyłączony antyaliasing.

W kolejnej wersji może zostać wprowadzona blokada antyaliasingu w postaci ujemnej liczby. Tzn. jeśli liczba wpisana po multisampling będzie dodatnia, to multisampling będzie mógł zostać wyłączony w przypadku nagłego spadku FPS (o ile zmniejszenie promienia renderowania nie pomoże). Ujemna wartość zablokuje możliwość wyłączenia multisamplingu (tzn. FPS pozostanie zmniejszony).

Portale

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. Na taki odcinek będzie można również wstawić dowolną ilość pojazdów, pod warunkiem, że będą się różnić nazwą pliku rozkładu. Pojazdy będzie można aktywować za pomocą eventu (eventlaunchera). Oczywiście odcinki takie nie powinny znajdować się w widocznych miejscach. Połączenie odcinka z obydwu stron wyłącza funkcję pochłaniania pojazdów, natomiast wstawianie nadal będzie możliwe.

Ilości animacji w pojazdach

W pliku MMD można zdefiniować ilości dla poszczególnych animacji submodeli. Dzięki temu można tworzyć rzadko spotykane konfiguracje (np. 4 pantografy, więcej otwieranych drzwi), jak również zaoszczędzić pamięć i poprawić wydajność dla modeli, które mają mało animacji (np. wagony nie muszą obsługiwać pantografów). Liczby poszczególnych animacji wpisuje się po słowie animations:, które musi być jako pierwsze w sekcji models (inaczej zostaną przyjęte domyślne ilości animacji). Wartość -1 jest znacznikiem końca i pozwala pominąć niepotrzebne zera na końcu, jak również dodać kolejne typy animacji w przyszłości. Kolejne liczby po animations: oznaczają (w nawiasie wartości domyślne przy braku wpisu):

  1. animowane osie i wiązary (8) - definiowalne od wersji 365
  2. drzwi (8) - definiowalne od wersji 387
  3. elementy pochylane (4 wahacze)
  4. elementy przesuwane (4 zderzaki)
  5. wózki (2)
  6. pantografy (2) - definiowalne od wersji 412
  7. tłoki parowozu z rozrządem (0)

Planowane

Poniżej opisane są nowe funkcje, które dopiero kształtują się jako koncepcje. Prace nad ich wdrożeniem nie zostały rozpoczęte, ale są rozważane jako istotne do wprowadzenia w najbliższym czasie. Można zgłaszać propozycje dotyczące ulepszenia ich ewentualnego działania. Finalny rezultat może być jednak dalece inny od zamieszczonych tu opisów.

Tory ładunkowe

Tory ładunkowe zmieniają stan ładunku pojazdu, jak również jego cel podróży.

Zestaw tekstur

Aby umożliwić wykorzystanie kilku wymiennych tekstur dla jednego modelu, można utworzyć zestaw tekstur o następującej składni:

textureset (nazwa)
(tekstura1)
(tekstura2)
(tekstura3)
(tekstura4)
endtextureset

Nazwa zestawu powinna się zaczynać od gwiazdki (jeśli nie zostanie wpisana, gwiazdka zostanie wstawiona domyślnie). Zestawu tekstur można użyć we wpisach modeli i taboru, podając nazwę zestawu tekstur. W tym przypadku gwiazdka jako pierwszy znak jest wymagana dla odróżnienia od nazwy pliku z teksturą. W plikach T3D można użyć tych tekstur podając w parametrze Map: liczbę ujemną (numer tekstury w zestawie). Wartość -1 odpowiada dotychczasowemu replacableskin. Podobnie to działa w plikach E3D, tam liczbę ujemną podaje się bezpośrednio.

Jeśli zestaw tekstur zostanie użyty jako tekstura szyny, to szyna otrzyma pierwszą wymienioną teksturę. Tekstura zostanie wymieniona na drugą w zestawie po przejeździe taboru na przeciwną stronę. Umożliwi to symulację przejazdu po zardzewiałym torze, który zmieni wygląd.

Format YAML dla MMD

Obecnie pliki MMD nie mają struktury hierarchicznej, przez co kłopotliwe jest dodawanie nowych parametrów, czy używanie parametrów opcjonalnych. (Przykładowo, używane są tokeny cab1model: oraz cab2model: zamiast hierarchicznego model: w drzewku - cab:, podobnie parametry pantografów mają cyfry w tokenie: animpantrd2prefix:.) Z drugiej strony obecna ich postać jest dosyć bliska strukturze YAML. Dotychczasowe pliki MMD (bez specjalnego znacznika) były by wewnętrznie konwertowane na YAML (będą wolniej wczytywane). Natomiast użycie znacznika będzie wymuszało większy formalizm danych (np. użycie wcięć), inaczej dane zostaną błędnie zinterpretowane (pojawią się w złym miejscu hierarchii). Użycie YAML zmniejszy liczbę rozpoznawanych tokenów i pozwoli np. definiować tym samym tokenem różne dźwięki dla każdej kabiny.

Stany AI

Oprócz informacji o aktualnie wykonywanej komendzie, AI potrzebuje mieć także bardziej precyzyjne informacje o aktualnej fazie jej wykonania. Chodzi o takie stany jak:

  • ruszanie z miejsca
  • przyhamowanie przed ograniczeniem
  • hamowanie w celu precyzyjnego zatrzymania
  • luzowanie składu
  • dojazd w celu podczepienia
  • hamowanie awaryjne
  • ruszanie pod górę
  • hamowanie kontrolne
  • próba hamulca

W każdym z tych stanów będą inne zasady użycia nastawnika i hamulca. Obecnie coś w rodzaju takiego stanu jest ustalane w każdym przebłysku świadomości AI, ale nie jest to zapamiętywane do następnego przebłysku. W efekcie AI ma np. problemy z ruszeniem z miejsca, ponieważ mogą się pojawić wtedy duże przyspieszenia, przez co AI w następnym przebłysku świadomości cofnie nastawnik.

Ponadto trzeba uwzględnić, czy AI prowadzi pociąg osobowy (powinno jeździć delikatniej), towarowy (nie urywać sprzęgów), czy jedzie luzem (dopuszczalne większe przeciążenia).


MaSzyna - wersje
Wersje 2005-2009 699kB • Mega Pack (KURS90, 717kB) • Dizelpack (735kB)
Wersje z 2011 71113120145162 (PC2010)212231291
Wersje z 2012 325 (PC2011)355372390SPKS@390
Wersje z 2013 394 (01.13)Kurs 2013408SPKS@408 (08.13)414
Wersje z 2014 424435441450457
Wersje z 2015 464 (15.02)469 (15.04)
Wersje robocze SPKSwarsztat