Autor Wątek:  Drawinowo - modyfikacje sterowania  (Przeczytany 181615 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline HTD

  • Wiadomości: 697
  • "Twoja stara mieszka w Boldach" xD
    • Zobacz profil
    • I like trains
  • Otrzymane polubienia: 30
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #330 dnia: 22 Września 2016, 21:50:21 »
Z tego co pamiętam byłem gotowy do odjazdu przed 11:30 (ale brak zapasu z tą godziną, dodałbym ze 2 minuty dla uniknięcia bezsensownych opóźnień).

Dobra, linia 406 pliku sc3_events.ctr:

event daj_rozklad updatevalues 1 wlodowice_zachodnie_g8-2_sem_mem Timetable:drawinowo/IKSE7106 0.1 0 endevent
Nie znalazłem nigdzie odwołania z nazwą "wlodowice_zachodnie_g8-2_sem_mem". Może tu jest pies pogrzebany, czy po prostu źle szukałem?

Offline Stele

  • Zasłużony dla Symulatora
  • Wiadomości: 10133
    • Zobacz profil
  • Otrzymane polubienia: 2609
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #331 dnia: 22 Września 2016, 21:58:31 »
Źle szukałeś.
Kod: ("scenery\drawinowo\tory.scm; 70779") [Zaznacz]
include ssw5zpcpby.inc wlodowice_zachodnie_g8-2 37654.5 0.0 7.12489 90.0 g8-2m end
Kod: ("scenery\ssw5zpcpby.inc") [Zaznacz]
node -1 0 (p1)_sem_mem memcell (p2) (p3) (p4) SetVelocity 0.0 0.0 none endmemcell

Ai się wyrabia z czasem. U ciebie w ostatnim logu też pętla próbująca podać wyjazd też przeleciała kilka razy, bo nie był spełniony warunek godziny odjazdu.

Mój kanał youtube

Offline HTD

  • Wiadomości: 697
  • "Twoja stara mieszka w Boldach" xD
    • Zobacz profil
    • I like trains
  • Otrzymane polubienia: 30
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #332 dnia: 22 Września 2016, 22:19:25 »
No to pozostaje zasadnicze pytanie - co idzie nie tak? Bo wygląda na to, że Drawinowo, przynajmniej z pacha 16.08 jest przejezdne tylko w 1 stronę.

Offline Stele

  • Zasłużony dla Symulatora
  • Wiadomości: 10133
    • Zobacz profil
  • Otrzymane polubienia: 2609
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #333 dnia: 22 Września 2016, 22:34:36 »
A puść ai od początku do końca i zobacz czy ono też wymięknie.
Mój kanał youtube

Offline HTD

  • Wiadomości: 697
  • "Twoja stara mieszka w Boldach" xD
    • Zobacz profil
    • I like trains
  • Otrzymane polubienia: 30
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #334 dnia: 02 Października 2016, 23:59:07 »
Puściłem. Sceneria jest przejezdna dla AI, ale tylko dlatego, że AI nie potrafi za dobrze prowadzić pociągu.

1. Przyjechał do WDZ 3 minuty po czasie (a na spokojnie można przyjechać rozkładowo).
2. Obserwując jak trzymał prędkość - nie dziwię się, przekraczał dozwoloną o 5 czasami.
3. Odpięcie składu zrobił w czasie 0s, podejrzewam, że ekipa Formuły 1 nie dałaby rady odpiąć szybciej.
4. Przy manewrach - jak dostał polecenie tylko za rozjazdy - nie wyglądało, żeby się miał zatrzymać za rozjazdami.
5. Nie zatrzymał się nawet jak otrzymał polecenie "i wystarczy już".
6. Zatrzymał się jakieś 100m dalej (ja bym tak daleko nie wyjechał).
5. Z wagonami się zderzył z prędkością 20km/h - zamiast się rozbić, po prostu był już podłączony.
6. Komunikat o próbie hamulca dostał jak miał podpięte wagony i stał prawie gotowy - w rzeczywistości jest to zupełnie niemożliwe, nawet gdyby wagony podpinała ekipa Formuły 1.

Wniosek? To, że sceneria jest przejezdna dla AI nie znaczy, że jest prawidłowa, nie ma błędów i jest przejezdna dla człowieka. To jest IMHO test niewystarczający.

OK, teraz komendy: po dojechaniu była szybka zmiana: obey train, disconnect, shunt, connect, jak tylko grzechotnął o wagony dostał natychmiast obey train.

Teraz dlaczego może nie działać podawanie rozkładu? Być może zdarzenie odpala za szybko, zanim gracz ma szansę zapiąć wagony, wagony są prawdopodobnie odpięte kiedy to zdarzenie tryka, albo są w momencie zapinania, całkiem możliwe, że mechanik jest poza kabiną.

Ja widzę ten problem w sporej ilości scenariuszy dla Maszyny, jakby nikt ich prawidłowo nie testował, czasy przypinania i odpinania wagonów są nierealistycznie wyżyłowane, już mniejsza o to, że w rzeczywistości to by trwało dłużej niż w symulatorze, ale nawet w symulatorze nie da się tego zrobić tak szybko.

OK, nie ma problemu, ja mogę jeździć do oporu, a jeżdżę dobrze. Na tyle dobrze, że mam pełną powtarzalność czasów przejazdu co do minuty (pomijając zdarzenia losowe naturalnie).
Robię tak, przejeżdżam wzorcowo (z jednym albo dwoma HK), pół kreski wolniej niż dozwolona, zapisuję czasy. Jadę jeszcze raz dla sprawdzenia, czy na pewno czasy się zgadzają. I można na podstawie tego poprawić timing.

Przy okazji robię nowe rozkłady do wszystkich misji nocnych na L053, byłbym bardzo rad, jakby można je uwzględnić w kolejnym patchu. To nie są same zmiany w rozkładach, ale też poprawki synchronizacji pewnych zdarzeń - np w paru miejscach przesunąłem o parę minut wyjazd, żeby poszczególne kursy mogły się zgrać ze sobą bez opóźnień. Pozwiększałem odrobinkę czasy na manewry, za wyjątkiem "bo już jest  zaraz odjazd pociągu" - to traktuję jak jazdę torem wolnym 40 po prostej. Wtedy oryginalna godzina wyjazdu pasuje. I potrzebne są tam 2 nowe rozkłady - MPPEi3342 jest użyty do 2 różnych składów - nie powinien bo jeden jest lekki a drugi ciężki - to nie może pasować. W misji night1 jest niepotrzebnie rozkład w 2 strony, który potem jest zastępowany tym MPPEi3342 - zamiast tego powinien być w jedną stronę, w drugą robię nowy rozkład, bo skład z bohunami jest tak lekki, że dojeżdżam 5 minut szybciej niż lekkim.

Na dziś koniec, jak znajdę trochę czasu to spróbuję samemu znaleźć zdarzenie z podawaniem rozkładu, opóźnić je i zobaczyć co się stanie.

Offline Stele

  • Zasłużony dla Symulatora
  • Wiadomości: 10133
    • Zobacz profil
  • Otrzymane polubienia: 2609
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #335 dnia: 03 Października 2016, 09:53:07 »
Wymiękam. Nie dociera do ciebie jak działa podawanie rozkładu, to nie będę tego enty raz opisywał. Zrób po swojemu. Znajdź testerów. Uznają, że będzie lepiej to dodamy.
Mój kanał youtube

Offline HTD

  • Wiadomości: 697
  • "Twoja stara mieszka w Boldach" xD
    • Zobacz profil
    • I like trains
  • Otrzymane polubienia: 30
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #336 dnia: 03 Października 2016, 12:14:08 »
Widzisz, problem polega na tym, że rozkład się nie podaje. Nie robię niczego złośliwie, po prostu to jest błąd w 100% powtarzalny, za każdym razem jak jadę nie dostaję rozkładu.
Sam testuję, więc się nie denerwuj. Poświęciłem masę godzin na testowanie i jeszcze poświęcę.

Nie jestem jednak ekspertem od działania scenerii, dlatego proszę o wskazówki gdzie szukać babola. To wydaje się proste do poprawienia i chcę się pobawić tym.

Oto co mi się udało sprawdzić - dodanie 30 sekund opóźnienia w linii 405 przed:

event tor4623:event2 multiple 1 manewry_WDZ_IC wdz_8pocz_wyjazd1 daj_rozklad condition memcompare * 2 * endevent
to jeszcze za mało, nie dostałem rozkładu. Zgaduję, że może problem występuje, jak jeszcze nie mam kierunku ustawionego? Czy nie jest tak, że nasz skład odczytuje zdarzenia "z przodu" - tzn musimy mieć ustawiony właściwy kierunek, żeby odczytać sygnał który jest przed nami?

event tor4623:event2 multiple 90 manewry_WDZ_IC wdz_8pocz_wyjazd1 daj_rozklad condition memcompare * 2 * endevent
To chyba powinno załatwić sprawę? Ale pytanie, czy warunek będzie sprawdzany po 90 sekundach, czy sprawdzany jest natychmiast i zdarzenia odpalą po 90 sekundach? Bo jeśli ta druga opcja, to zmiana nic nie da i szkoda czasu.

Zauważyłem, że na mapie tak pi razy oko to chyba stoimy na styku torów wlodowice_zachodnie_tor8pocz i tor4623. Wagony zajmują tory od wlodowice_zach_tor8end do tor4623. Gdyby delikatne przyciskanie do wagonów nie pozwalało wjechać na tor4623, za to grzechotnięcie z większą prędkością pozwalało to mógłby być taki efekt?

Hm, to może cofnę wagony o 1m, wtedy będzie pewność że to nie styk torów, co?
« Ostatnia zmiana: 03 Października 2016, 12:15:31 wysłana przez HTD »

Offline Krzysiek626

  • Zasłużony dla Symulatora
  • Wiadomości: 5925
  • EXIT
    • Zobacz profil
    • Krzysiek626
  • Otrzymane polubienia: 443
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #337 dnia: 03 Października 2016, 12:40:16 »
@HTD, cały problem w tym, że Tobie naprawa tego błędu wydaje się prosta. Tak nie jest. To nie pierwszy i nie ostatni event, który wykonuje się nieregularnie, a przyczyny nie są znane. Charakter pliku wykonywalnego, jego koncepcja i budowa sprzyja występowaniu takich błędów, bo to nie pierwszy i nie ostatni błąd. Zrozum, że są osoby u których rozkład pokazuje się bez problemu, to oznacza, że wpływ na to mają także warunki sprzętowe. Wielokrotnie pisałem o braku kompletnego/globalnego pomysłu na sterowanie zdarzeniami. Jak widać dotychczasowe pomysły są zawodne. Dość długo pisałem o tym z @Ra, jego zdaniem błędy wynikają z braku umiejętności piszących zdarzenia, moim zdaniem błędy powoduje brak dobrej koncepcji działania exe, niezależnej od warstwy sprzętowej.

Offline HTD

  • Wiadomości: 697
  • "Twoja stara mieszka w Boldach" xD
    • Zobacz profil
    • I like trains
  • Otrzymane polubienia: 30
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #338 dnia: 03 Października 2016, 16:39:45 »
Znalazłem buga i poprawiłem. Pierwsze testy przeszło (teleportowałem się lokiem pod same wagony w WDZ).
Dzięki @Krzysiek626, że wspomniałeś o @Ra. On robił obsługę rozkładów w exe, on też zrobił do tego powiedzmy ściągę w scenerii Quark.
W komentarzach opisał parę tricków, które pozwalają obejść problemy z podawaniem rozkładów.

OK, nie będę was trzymał w niepewności:

node -1 0 htd_wait_for_orders memcell 0 0 0 Wait_for_orders 0 0 none endmemcell
node -1 0 htd_obey_train memcell 0 0 0 Obey_train 0 0 none endmemcell
node -1 0 htd_rozklad_7106 memcell 0 0 0 Timetable:drawinowo/IKSE7106 1 0 none endmemcell
event htd_daj_rozklad copyvalues 0 wlodowice_zachodnie_g8-2_sem_mem htd_wait_for_orders endevent
event htd_daj_rozklad addvalues 0 wlodowice_zachodnie_g8-2_sem_mem * 0 0 endevent
event htd_daj_rozklad copyvalues 0 wlodowice_zachodnie_g8-2_sem_mem htd_obey_train endevent
event htd_daj_rozklad addvalues 0 wlodowice_zachodnie_g8-2_sem_mem * 0 0 endevent
event htd_daj_rozklad copyvalues 0 wlodowice_zachodnie_g8-2_sem_mem htd_rozklad_7106 endevent
event htd_daj_rozklad addvalues 0 wlodowice_zachodnie_g8-2_sem_mem * 0 0 endevent

Odpalenie "htd_daj_rozklad" powoduje że rozkład wskakuje bez żadnych problemów. O co chodzi? Chodzi o to, żeby pociągowi wysłać taką szybką serię: "Wait_for_orders", "Obey_train", i wtedy dopiero rozkład. Wszystko przez właśnie copyvalues i addvalues kolejno, bo jak pisze @Ra w komentarzach - inaczej nie działa i rzeczywiście - inaczej nie działa.

Teraz idę przejechać Drawinowo w całości, potem wrzucę pliki z poprawkami i poproszę o umieszczenie w paczce. Gdyby ktoś chciał to potestować równolegle ze mną, można fragment który wkleiłem wkleić do pliku sc3_events.ctr powiedzmy gdzieś przed linią 404 i zastąpić event "daj_rozklad" eventem "htd_daj_rozklad". Na przyszłość można tego używać jako gotowca. No chyba, że da się to jakoś skrócić, to byłoby fajnie.

Dobra, da się krócej i prościej:
event daj_rozklad updatevalues 1 wlodowice_zachodnie_g8-2_sem_mem Wait_for_orders 0 0 endevent
event daj_rozklad updatevalues 1 wlodowice_zachodnie_g8-2_sem_mem Obey_train 0 0 endevent
event daj_rozklad updatevalues 1 wlodowice_zachodnie_g8-2_sem_mem Timetable:drawinowo/IKSE7106 0 0 endevent
Też działa.
« Ostatnia zmiana: 03 Października 2016, 16:59:22 wysłana przez HTD »

Offline Stele

  • Zasłużony dla Symulatora
  • Wiadomości: 10133
    • Zobacz profil
  • Otrzymane polubienia: 2609
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #339 dnia: 03 Października 2016, 17:20:35 »
Trzy updatevalues o tej samej nazwie, to się nie wyzwala tylko jeden? O ile wiem łączenie eventów działa tylko dla różnych typów.
Problem z addvalues, na ile go rozumiem, polega na tym, że addvalues nie wysyła komendy w tor. Tu ani nie było addvalues, ani nie było komendy w tor, bo szła w semafor.
Co daje wysłanie trzech komend z rzędu w semafor, jeśli odczytujesz je dużo później, gdy i tak będzie tam ta jedna?
No potestujcie, ale śmierdzi mi szamaństwem. Na l61 miałem błąd niedawno, że AI nie chciało odczytać shunt 0 0 z semafora. Komenda była w jego komórce, AI skanowało semafor i stało jak głupie. Ręczne odpięcie wagonów złapało się jako przyjęcie komendy i dalej wszystko poleciało.

Spytałem się u źródła i sprawa wygląda tak:
Trzy UpdateValues się połączą. Łączenie działa na dowolną ilość dowolnych typów. Można tym robić Multiple wyzwalające ponad 8 zdarzeń bez drabinki odwołań.
Do toru nie wysyłał CopyValues i dlatego były te puste AddValues. Zostało to poprawione dawno temu.
Jest to kolejny błąd związany z W4. Komórka semafora za W4 czasami nie jest czytana. Ra to prowizorycznie obchodzi wstawiając dodatkową komórkę przed W4 tylko do wysyłania komend.
« Ostatnia zmiana: 03 Października 2016, 18:00:18 wysłana przez Stele »
Mój kanał youtube

Offline Siecool

  • Deweloper
  • Wiadomości: 982
    • Zobacz profil
  • Otrzymane polubienia: 232
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #340 dnia: 03 Października 2016, 17:56:40 »
Skoro już przy temacie jesteśmy to również potwierdzam, że coś jest nie tak z czytaniem komend z semafora - nie zawsze łapie. Nie miałem czasu dochodzić, co jest przyczyną, ale problem jest, bo miałem go parę razy sam prowadząc skład. Komenda powędrowała do semafora, ale do składu się nie wpisała. Pomagało z tego co pamiętam podturlanie się nieco do przodu albo przestawienie nawrotnika w tył, a potem w przód (czasami parę razy).

Offline HTD

  • Wiadomości: 697
  • "Twoja stara mieszka w Boldach" xD
    • Zobacz profil
    • I like trains
  • Otrzymane polubienia: 30
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #341 dnia: 03 Października 2016, 18:33:33 »
Hm, przetestowałem to 3 razy bez przejeżdżania całej trasy, z teleportowanym EP09 na końcu toru 8. Za każdym razem dostawałem rozkład.
No to posprzątałem, zostawiłem te 3 wpisy i przejechałem całą trasę od początku. Nosz kurde!

Log:
EVENT LAUNCHED: tor4623:event2 by ep09-005
none 2.00 0.00 = * 2.00 *
Multiple passed
EVENT ADDED TO QUEUE: daj_rozklad by ep09-005
EVENT ADDED TO QUEUE: wdz_8pocz_wyjazd1 by ep09-005
EVENT LAUNCHED: grabowek_wjazd4 by falns-22
Multiple passed
EVENT ADDED TO QUEUE: grabowek_wjazd4_brutto2 by falns-22
EVENT ADDED TO QUEUE: grabowek_wjazd4 by falns-24
EVENT LAUNCHED: daj_rozklad by ep09-005
Type: UpdateValues - Wait_for_orders 0 0
EVENT LAUNCHED: daj_rozklad by ep09-005
Type: UpdateValues - Obey_train 0 0
EVENT LAUNCHED: daj_rozklad by ep09-005
Type: UpdateValues - Timetable:drawinowo/IKSE7106 0 0

Wszystko tryknęło, tylko skład nie złapał. Żeby nie było, czekał grzecznie gotowy do jazdy jak to odpaliło, widziałem w oknie semaforek G8.
To teraz nie wiem jak to testować, z czym to jest w ogóle związane. Że coś się pierdaczy w symku jak jest za dużo ruchu czy jak? Myślałem, żeby na TD wrzucić test, to by się szybko wgrywało i szybko można byłoby to sprawdzić. Tyle, że coś czuję, że na TD to będzie zawsze trykać, tak jak na Drawinowie trykało, jak pominąłem cały przejazd z Grodziska.

Offline Stele

  • Zasłużony dla Symulatora
  • Wiadomości: 10133
    • Zobacz profil
  • Otrzymane polubienia: 2609
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #342 dnia: 03 Października 2016, 18:40:07 »
Wywal W4 albo zamień je miejscami z semaforem i sprawdź statystykę, czy to istotnie problem wskaźnika. A jeśli tak, to nos w driver.cpp i szukaj w czym problem, bo mądry się jeszcze nie znalazł.
Mój kanał youtube

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #343 dnia: 04 Października 2016, 11:28:33 »
To jest bez sensu. To tak w ogóle nigdy nie będzie działać. Krzysiek ma rację. Trzeba wziąć i opis misji wywalić do zupełnie czegoś innego. Do tego same urządzenia powinny być przypisywane za pomocą zupełnie innego znacznika, żeby nie było takich kwiatków jak teraz, że eventy się między sobą blokują.

  Dodano: 04 Października 2016, 11:29:37
Jeszcze mam pomysł. Wypuść rozkład przez W4 a nie semafor.
« Ostatnia zmiana: 04 Października 2016, 11:29:37 wysłana przez firleju »
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline Stele

  • Zasłużony dla Symulatora
  • Wiadomości: 10133
    • Zobacz profil
  • Otrzymane polubienia: 2609
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #344 dnia: 04 Października 2016, 11:42:12 »
Może się nie dać, bo ma putvalues na sztywno bez definicji komórki. Choć pewnie i tak to tworzy sobie komórkę niejawną.
Mój kanał youtube

Offline HTD

  • Wiadomości: 697
  • "Twoja stara mieszka w Boldach" xD
    • Zobacz profil
    • I like trains
  • Otrzymane polubienia: 30
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #345 dnia: 04 Października 2016, 12:15:50 »
Tak czy inaczej chyba temat można zamknąć na dłużej, bo nie jest to błąd w scenerii, tylko samym symulatorze, jeśli dobrze zrozumiałem. Dalej kombinuję tak, że Drawinowo jest dużą i skomplikowaną scenerią gdzie byłoby kompletnie nieekonomiczne testowanie czegokolwiek, albo, tak jak to wczoraj robiłem - próbowanie obejścia błędu na chybił-trafił.
Strzelam, że testować cokolwiek powinno się na TD. Dorzucić do niej sygnały i zdarzenia (ściśle określony zestaw) i testować każdy przypadek po kolei.

Cytuj
Trzeba wziąć i opis misji wywalić do zupełnie czegoś innego.

Mówisz o nowym schemacie sterowania ruchem? Masz jakiś pomysł jak by to mogło teoretycznie wyglądać? Co z tego co już jest w symulatorze można by wykorzystać i użyć w tym nowym schemacie? Wydaje mi się, że symulator posiada kod umożliwiający sprawdzenie całego przebiegu toru z obu stron składu. Cokolwiek zostaje wysłane do toru leżącego w tym przebiegu może zostać odebrane przez skład. Teoretycznie przynajmniej. Dalej, żeby sygnalizacja mogła w ogóle działać, musi być przypisana do odpowiednich torów. W starych sceneriach nie zawsze jest. Ale to najmniejszy problem, bo można ją przypisać automatycznie. Dalej są 2 opcje: sygnalizacja działa automatycznie (SBL), to rozumiem, że już jest jakoś zrobione, a jeszcze dodatkowo może "robić za dyżurnego ruchu", co byłoby super, ale zapewne niesamowicie trudne i czasochłonne do zrobienia.
A co myślisz, żeby sterowanie ruchem (praca wirtualnego dyżurnego) było robione w Pythonie? Python już działa w symku. Napisanie sterowania do Drawinowa w Pythonie byłoby trywialne. Mało tego, istniejące scenariusze dałoby się dość prosto przekonwertować na Pythona. Python jest 100x łatwiejszy od istniejącego języka skryptów scenerii. Może w ogóle byłoby dobrze zrobić jakąś burzę mózgów w tym temacie?

Ja tam uważam, że największym złem jest to, że zdarzenia są przypisywane w definicji toru. Może to jest łatwiejsze do obsługi od strony symka, ale koszmarne pod względem pisania scenariuszy. Te rzeczy powinny być rozdzielone - sceneria i sterowanie ruchem. Sceneria powinna zawierać wyłącznie rozmieszczenie obiektów i nic więcej. Nawet przypisywanie sygnałów do torów nie powinno być definiowane w scenerii. Jeśli wstawiłeś semafor obok toru, symulator powinien sam go przypisać, ba, mógłby to spokojnie robić podczas ładowania, bo strzelam że wszystkie przypisania przeciętny PC może przeliczyć w czasie od 1 do kilku sekund, a w czasie ładowania tekstur CPU się nudzi.

Na marginesie - wiele rozwiązałoby i to natychmiast - gdyby dodać opcję wysyłania sygnałów bezpośrednio do składów, z całkowitym pominięciem torów i sygnalizacji. Coś w stylu "send Timetable:rozklad123 to train345". Analogicznie "send Speed:40 to track123". Do semaforów powinno się wysyłać wyłącznie sygnały semaforowe, nic innego, w żadnym wypadku rozkłady. Do torów wyłącznie ograniczenia prędkości, bo dajmy na to w scenariuszu jest "było wykolejenie na trasie, tor jest uszkodzony i możesz przejechać przez niego wolniej". W innej misji na tej samej scenerii ten sam tor może mieć ograniczenie domyślne wyższe. A co gdyby w ogóle wywalić ograniczenia prędkości z torów? Przecież sygnalizacja i wskaźniki określają w 100% prędkości dopuszczalne na całej trasie. Rozkład powinien być wysyłany do pociągu o danym ID, względnie do pociągu stojącego na danym torze: "jeśli pociąg x stoi na torze y, wyślij do pociągu x rozkład". Tego typu zmiana nie musiałaby nawet łamać kompatybilności z istniejącymi scenariuszami, ale natychmiast można by poprawić część błędów w tych scenariuszach. Po prostu 1 nowa opcja - wysłanie sygnału do składu, zamiast do toru lub semafora. Trudność w tym jest tylko jedna: identyfikacja właściwego składu. To rozwiązanie oczywiście można zastosować bez zmiany całego mechanizmu sterowania. Po prostu nowe polecenie skryptu, to wszystko. Mogłoby nawet być w jakiś sposób opakowane w starą składnię, np jako nowy typ "event".

W sumie to samo robi dyżurny ruchu. Wysyła do urządzeń SRK sygnały, które można im wysłać, wysyła przez radio do składów komunikaty dla tych składów. Dyżurny nie wysyła rozkładów i rozkazów do semaforów ani torów. Wywołuje przez radio konkretny skład.

Offline Stele

  • Zasłużony dla Symulatora
  • Wiadomości: 10133
    • Zobacz profil
  • Otrzymane polubienia: 2609
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #346 dnia: 04 Października 2016, 13:33:59 »
Grześ ma plan i nawet jakąś realizację. Tylko dwie rzeczy naprostuję. Od dwóch lat da się oddzielić całkowicie zdarzenia od scenerii. Na upartego również SRK. Od roku da się wszystkie ograniczenia dawać zdarzeniami, bez wpisywania prędkości w tory. A że mało kto stosuje. Cóż, ludzie boją się nowości.
Mój kanał youtube

Offline HTD

  • Wiadomości: 697
  • "Twoja stara mieszka w Boldach" xD
    • Zobacz profil
    • I like trains
  • Otrzymane polubienia: 30
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #347 dnia: 04 Października 2016, 14:06:27 »
Jednego tylko brakuje na teraz: wysyłania zdarzeń bezpośrednio do składu.

Offline Mariusz1970

  • Zasłużony dla Symulatora
  • Wiadomości: 3925
    • Zobacz profil
  • Otrzymane polubienia: 277
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #348 dnia: 04 Października 2016, 16:46:32 »
Moim zdaniem pyton to nie jest dobre rozwiazanie a takze dowolny inny jezyk programowania. Symek nie powinien byc tylko dla programistow. powinno byc tak, ze jakis madry automat lub polautomat, skryptuje scenerie (obojetnie co by to nie bylo) pod katem ruchu. User po polsku, angielsku, prostymi komendami, sterowalby tym wszystkim+ rozklady jazdy. Czyli user juz by mial narzedzie wysokiego poziomu, to sterowania ruchem. Czyli jedna nazwijmy to komenda, wyzwoli w skryptach szereg czynnosci, ktore w niezawodny sposob, lacznie z blokadami jakimis, wykonaja dowolna rzecz. Zostawienie userow z jakims jezykiem programowania (pyton, C, czy co tam innego), jest dla mnie bezsensu. Tylko bedzie odstraszalo. Symek ma byc dla szerokeigo grona, a nie dla waskiej grupy ludzi z zacieciem pcrogramistycznym. Juz teraz jest sciana dla woielu (nasze eventy), to juz tez programowanie.

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #349 dnia: 04 Października 2016, 16:55:29 »
W tym stanie jaki mamy to python jest językiem wysokiego programowania. To co jest teraz to wręcz poziom assemblera. Mój pomysł wymaga zaimplementowania drzewiastej struktury pliku opisującego manewry dla każdego składu scenariusza. I niestety stanąłem na tym, że nie mogę skompilować symka czymś innym niż Borland co mi troszkę prace zatrzymało. Oczywiście samo wykonanie danych poleceń przez program nadzorujący może na poziomie scenerii być wykonane za pomocą wywołania szeregu zdarzeń multiple jakie są obecnie dostępne albo w jakiś inny, przyszły sposób. Niestety nie jestem nawet na etapie działającego prototypu i nie zmieni się to dopóki nie zrobię konwersji na C++. Osobną kwestią jest przypisanie eventów do torów i wzajemne ich zasłanianie się.
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline Mariusz1970

  • Zasłużony dla Symulatora
  • Wiadomości: 3925
    • Zobacz profil
  • Otrzymane polubienia: 277
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #350 dnia: 04 Października 2016, 16:58:56 »
Sam pyton, to tez niski poziom (zbyt niski, aby sterowac ruchem). pyton tak, do tworzenia moze jakis skryptow, czy co tam, ale nie do juz koncowego uzytkowania. Jesli bedzie pyton i nic wiecej, to juz teraz, polecajcie dobre kursy :)
« Ostatnia zmiana: 04 Października 2016, 17:02:56 wysłana przez Mariusz1970 »

Offline HTD

  • Wiadomości: 697
  • "Twoja stara mieszka w Boldach" xD
    • Zobacz profil
    • I like trains
  • Otrzymane polubienia: 30
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #351 dnia: 05 Października 2016, 08:51:25 »
Użytkownik nie będzie tworzył scenerii, chyba, że ma odpowiednie zacięcie do tego. Co do nieznajomości Pythona, to powiem tak: bardzo dobry kurs podstaw jest na oficjalnej stronie Pythona, a nic więcej poza podstawami nie jest potrzebne do napisania skryptu sterującego ruchem.

Zgadzam się, że automatyczne sterowanie ruchem byłoby super i przyczyniło się do wysypu scenariuszy do MaSzyny, ale to jednocześnie duża i trudna rzecz do zrobienia. Problem rozbija się o to, że ciężko znaleźć chociażby jedną osobę spełniającą jednocześnie 2 warunki, czyli potrafiącą to zrobić i mającą wystarczająco dużo czasu. Na chwilę obecną chyba najbardziej sprawdzi się metoda małych kroczków. Chociaż uważam, że przejście na jakikolwiek sensowny język skryptowy (np Python) byłoby potężnym krokiem do przodu w kwestii scenariuszy. Dlaczego? Czytelność. Scenariusze w istniejącym formacie są kompletnie nieczytelnie dla człowieka. Nawet dla programistów. Po prostu kompletnie nieczytelna ściana tekstu, w której niesamowicie ciężko jest znaleźć jakikolwiek błąd. Ciężko jest nawet napisać kawałek tego skryptu bez błędu składniowego, a co dopiero żeby to poprawnie działało. Taki Python wyróżnia się nawet na tle innych dobrych języków programowania czytelnością, składnia jest oczywista, nawet jeśli nie masz najmniejszego pojęcia o tym języku gdybyś spojrzał na skrypt sterowania ruchem w Pythonie od razu wiedziałbyś co tam się robi, bez żadnej instrukcji. Oglądasz sobie 2 lub 3 gotowe, czwarty piszesz sam.

Co do wykonania praktycznego, @firleju - w sumie żeby skrypt w Pythonie konwertować na zdarzenia typu "multiple" nie trzeba nawet dotykać exe. Wystarczy napisać zewnętrzny moduł, który robi konwersje w 2 strony. Tzn zamienia zdarzenia na skrypt Pythona i odwrotnie. Wiem, problem z adresowaniem poszczególnych składów. Ale to zawsze można dorobić później. Łatwiej będzie dorabiać funkcje do czytelnego skryptu, niż do nieczytelnego. Wróciłem po 2 latach do dłubania przy narzędziach MaSzynowych. Nie mam zbyt dużo czasu, ale więcej niż zero, więc może będę mógł tu pomóc. Powolutku, po godzince raz na 2 dni próbuję ukończyć narzędzie, które ma zapewnić pełne parsowanie plików scenerii, automatyczne dowiązania całej sygnalizacji i na koniec mogę skonwertować pliki sterujące do Pythona. W ciągu pół roku to całkowicie wykonalne dla mnie. Gdybym miał miesiąc wolnego w pracy, to byłoby zrobione w ciągu miesiąca :) Prosty parser scenerii już mam, teraz rozwijam graficzne narzędzie, wizualny edytor 2d z mapą, bo żeby zrozumieć co się dzieje na sceneriach potrzebuję żeby to wszystko nanieść na czytelną mapę. A jak się exe będzie kompilować bez Borlanda, to też dołączę do dłubania przy nim. Na C++ znam się jak kura na pieprzu, ale nie wyobrażam sobie lepszej okazji do nauki niż to. Wg mnie exe wymaga dramatycznie dodania oceny przejazdu przez gracza. Przy okazji tematu o pracy maszynistów ustaliliśmy sobie jeden fakt chyba na forum: chociaż MaSzyna jest całkiem niezłym symulatorem pociągu na PC, jest chyba bardziej grą niż profesjonalnym symulatorem. Z kolei jako grze MaSzynie naprawdę dramatycznie brakuje oceny poprawności przejazdu. Na chwilę obecną, przy chociażby braku przypisania całej sygnalizacji do torów to jest zadanie niewykonalne. Ale mając przypisaną sygnalizację, mając sensownie rozwiązane sterowanie ruchem to już nie będzie trudne do zrobienia. Wystarczy, że exe wyśle do zewnętrznego modułu informacje o pozycji gracza i parametrach jazdy, a zewnętrzny moduł natychmiast oceni, czy gracz jedzie prawidłowo a na koniec wyświetli pełną statystykę przejazdu, listę wszystkich popełnionych błędów itd. To będzie realizował nowy starter, który aktualnie piszę. Starter + edytor w jednym. Oczywiście nie jest to konkurencją dla Rainsteda, bo nie będzie w żaden sposób wspomagać samego projektowania scenerii, będzie wyłącznie wspomagać pisanie i edycję scenariuszy. Do tego powiedzmy rozpoczynanie misji o dowolnych godzinach (porach dnia i nocy). Byłoby fajnie, jakby się nam udało wszystkim zgrać za te pół roku. Kod będzie otwarty, wszystko w postaci modułów i plików, może jak ludki przełamią początkową niechęć to sami dopiszą brakujące ficzery.

@firleju: jeśli masz jakieś plany jak miałyby wyglądać te skrypty sterowania ruchem albo ogólna koncepcja - byłbym wdzięczny jakbyś się podzielił. Może być całkowicie na brudno, jakikolwiek zarys. Mógłbym powoli kombinować jak to wdrożyć od zewnątrz, metodą konwersji plików. Tak czy siak będę to robić, więc czemu nie porządnie, wykorzystując coś co już jest, zamiast wymyślać koło na nowo. Tak na marginesie: czy nie wystarczyłby 1 plik z czytelnym formatowaniem? Przy konwersji istniejącego systemu zdarzeń do Pythona to co się dzieje na scenerii byłoby widać jak na dłoni. Nawet w 1 pliku. Zwłaszcza z komentarzami.

Offline Mariusz1970

  • Zasłużony dla Symulatora
  • Wiadomości: 3925
    • Zobacz profil
  • Otrzymane polubienia: 277
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #352 dnia: 05 Października 2016, 09:29:56 »
Uzytkownik jak najbardziej bedzie chcial cos tworzyc, daj mu tylko latwe narzedzia w obsludze. Jesli myslisz, ze pyton nim bedzie, coz, powodzenia. I nie wiem skad te zalozenie, iz uzytkownik nie jest chetny do tworzenia. Teraz co prawda jest taki podzial, ale przede wszystkim dlatego, ze wielu tego nie ogarnia i obawiam sie, ze w przypadku pytona bedzie podobnie. Wiecej juz mi sie nie chce rozpisywac.
« Ostatnia zmiana: 05 Października 2016, 09:35:55 wysłana przez Mariusz1970 »

Offline HTD

  • Wiadomości: 697
  • "Twoja stara mieszka w Boldach" xD
    • Zobacz profil
    • I like trains
  • Otrzymane polubienia: 30
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #353 dnia: 05 Października 2016, 10:19:11 »
Nie twierdzę, że użytkownik nie jest chętny do tworzenia. Wprost przeciwnie. Ale na chwilę obecną tworzenie nawet samych scenariuszy do gotowych scenerii jest absurdalnie trudne, bez porównania trudniejsze niż nauczenie się podstaw Pythona. Umożliwienie pisania skryptów w Pythonie ułatwi niesamowicie sprawę dla wszystkich.

Chodziło mi o to, że jeśli już ktoś porywa się na wyzwanie napisania własnej sensownej misji do MaSzyny - Python go nie zniechęci. To będzie najprostsza rzecz, którą będzie musiał ogarnąć. Co jest trudniejsze? Np same zagadnienia SRK. Dodatkowo specyfika samego symulatora.

Z resztą - to tylko część wielkiej całości i duży punkt większego planu. Większym planem będzie bardziej zautomatyzowane sterowanie ruchem i graficzne narzędzia wspomagające tworzenie scenariuszy. Aktualnie piszę takie narzędzie. Ba - używam rozgrzebanej wersji tego narzędzia już do poprawiania istniejących scenariuszy. Znajduję sobie nim na mapie interesujące tory. Docelowo narzędzie będzie też pokazywać sygnalizację, składy i przebiegi. Manewry będzie się dało spod tego narzędzia wyklikać. Niestety, tworzenie nawet małych części tego narzędzia zajmuje masę godzin czasu, którego prawie w ogóle nie mam, więc nie czarujmy się, skończenie tego potrwa. Nie od razu Kraków zbudowano. Stara wersja (sprzed 2 lat) leży sobie na GitHubie pod nazwą Trax, to nad czym pracuję to Trax2. Wersja 1 była wprawką, testem czy da się zrobić tę czy inną funkcję, wersja 2 będzie pełnym kombajnem pozwalającym na machnięcie nowego scenariusza albo poprawienie istniejącego w ciągu godziny. Wszystkie istniejące scenariusze do MaSzyny zyskają po kilku dniach dynamiczne rozkłady, przypisanie sygnalizacji, stabilną obsługę zdarzeń, w pełni konfigurowalne godziny wyjazdu i masę innych rzeczy.

To co jest teraz to czysta partyzantka. Stare scenariusze były pisane pod starsze wersje symulatora, w dodatku w sposób tak karkołomny, że wg chyba większości forum - to cud, że w ogóle działają. Więc na początek to trzeba ogarnąć. Doprowadzić to co jest do stanu, w którym to działa stabilnie i nadaje się do dużo szybszego dalszego rozwijania. Dopiero wtedy będzie można tworzyć graficzne narzędzia przyjazne dla użytkowników.

Offline Mariusz1970

  • Zasłużony dla Symulatora
  • Wiadomości: 3925
    • Zobacz profil
  • Otrzymane polubienia: 277
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #354 dnia: 05 Października 2016, 10:35:36 »
Znaczy sie, siedzisz w glowach userow i wiesz z cala pewnoscia, co dla nich jest latwiejsze/trudniejsze. Dodatkowo, kwestia alternatywy. Ty twierdzisz, jesli nie eventy to pyton, ja eventy z madrym skrypterem, latwym w obsludze nie dla programistow. Tak, w mojej koncepcji o wiele trudniej stworzyc taki skrypter niz dodac pytona, ale latwiej dla userow. Ja myslalem, aby z Transkeiem porozmawiac, aby jego algortymy zunifikowac, zrobic je bardziej uniwerslane i skrypter ustawiac pod to, co stworzyl wlasnie Transkei. Nazwy evnetow moga byc nieczytelne dla czlowieka, ale za to zautomatyzowane i niezawodne. 
Nie wiem jak to tam jest w TD2, ale raczej pytonga i tego typu rzeczy nie ma. No chyba, ze bedzie latwy interface do pytona (z jednej strony proste komendy sterujace ruchem, z drugiej caly ten pytonowo-programistyczny zgielk tworzony automatycznie), wtedy sie zaczniemy zgadzac.
Dobra, mamy odmienne zdanie i sie nie przekonamy :)
EOT z mojej strony.
« Ostatnia zmiana: 05 Października 2016, 10:54:12 wysłana przez Mariusz1970 »

Offline Stele

  • Zasłużony dla Symulatora
  • Wiadomości: 10133
    • Zobacz profil
  • Otrzymane polubienia: 2609
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #355 dnia: 05 Października 2016, 13:54:31 »
Ekrany pythonowe nie wymagają nawet podstaw języka. Wszystko jest pokomentowane. Kwestia zmiany ikonek i przesuwania pól tekstowych. A spotkałem się z opinią, że to też za trudne. Obecni scenarzyści nie są nawet świadomi jakim osiągnięciem jest to assemblerowe programowanie, jakiego dokonują. :)
Mój kanał youtube

Offline HTD

  • Wiadomości: 697
  • "Twoja stara mieszka w Boldach" xD
    • Zobacz profil
    • I like trains
  • Otrzymane polubienia: 30
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #356 dnia: 05 Października 2016, 14:45:24 »
A są jakieś tutoriale z omówieniem nowych funkcji? Może nie używają nowych rzeczy bo nie wiedzą nawet że są, albo nie wiedzą jak zacząć tego używać. Ja przykładowo dopiero jak zacząłem grzebać w Drawinowie to zauważyłem, że zdarzenia nie muszą być już wpisywane w tory. Mi się wydaje, że trochę ciężko szukać jak coś działa via forum. Przydałaby się jakaś zbiorcza dokumentacja wszystkiego, z góry przepraszam jeśli już jest a nie wiem, no ale jakoś nie trafiłem nigdzie na coś takiego zbiorczego. W różnych miejscach są różne fragmenty, widziałem sporo tutoriali na forum, ludzie mają swoje strony z linkami, ale czegoś kompletnego, z pełnym opisem od A do Z jak działa scenariusz z uwzględnieniem wszystkich nowych funkcji - to jeszcze nie widziałem. Od razu się zgłaszam do pomocy z tym, gdyby ktokolwiek potrzebował. To nie jest jakoś koszmarnie czasochłonne, a mam hopla na punkcie dokumentacji, więc pasują mi takie rzeczy.
No chyba, że szkoda czasu dokumentować to przed zmianami, lepiej najpierw wprowadzić powiedzmy tego Pythona, a potem dokumentować jak to działa. Od razu mówię, chodzi o sterowanie ruchem, nic innego. Inne rzeczy to inna bajka.

Tak na marginesie, zastanawiam się, czy lepiej bezpośrednio konwertować źródło Pythona na ctr, czy lepiej wykonywać skompilowany kod. Byłoby trochę ciężko zrobić w praktyce teraz żeby powiedzmy zdarzenie wywoływało nazwaną funkcję w Pythonie, o wiele prościej tłumaczyć nazwane funkcje na opisy zdarzeń. No ale do tego najprościej użyć wyjścia lexera, przed kompilacją do byte-code. Pełna kompilacja i tak byłaby bezużyteczna bez wsparcia ze strony głównego exe, a tego domyślam się, że szybko nie będzie.

Offline Stele

  • Zasłużony dla Symulatora
  • Wiadomości: 10133
    • Zobacz profil
  • Otrzymane polubienia: 2609
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #357 dnia: 05 Października 2016, 15:14:32 »
Jest komunikacja scenerii z programem zewnętrznym przez WM_copydata do obsługi rainstedowego multi. Można pod to podpiąć lokalny moduł, ale to wydaje mi się strasznie niewydajnym rozwiązaniem.
Porządnej dokumentacji brak. Jak mówisz, trochę tu trochę tam. Mediawiki, czy coś innego byś chciał? Trzeba w końcu jakiś moduł do dokumentacji na eu07 postawić.
Mój kanał youtube

Offline HTD

  • Wiadomości: 697
  • "Twoja stara mieszka w Boldach" xD
    • Zobacz profil
    • I like trains
  • Otrzymane polubienia: 30
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #358 dnia: 05 Października 2016, 15:21:45 »
Mediawiki jest OK, używałem i przyjemnie się używało. A moduł - to w końcu może być Mediawiki, czy czegoś mu brakuje? No tak, treści na dzień dobry, ale do ogarnięcia. Jak trzeba zrobić to mogę podłubać w czasie wolnym. Przydałoby mi się tylko info gdzie szukać opisów, względnie luźne notatki, jak u kogś zalegają.

Offline Stele

  • Zasłużony dla Symulatora
  • Wiadomości: 10133
    • Zobacz profil
  • Otrzymane polubienia: 2609
Odp: Drawinowo - modyfikacje sterowania
« Odpowiedź #359 dnia: 05 Października 2016, 16:37:28 »
W pierwszej kolejności skopiować to co się do eu07.exe odnosi z rainsted.com eu07.es a potem przepisywać wiedzę z forum, formatując to sensownie z odwołaniami.
Mój kanał youtube