Symulator EU07 (i nie tylko) > Na warsztacie
Serwer ruchu - pociągi towarowe
Ra:
Zastanawiam się właśnie nad działaniem serwera ruchu. (Serwer ruchu ma pamiętać bieżący stan scenerii i synchronizować zdarzenia pomiędzy użytkownikami.) O ile samo przesuwanie pociągów po torach i przesyłanie danych jest dosyć proste, to zatrzymałem nad powodem, dla którego pociągi mają jeździć.
Otóż większego problemu nie ma z pociągami osobowymi - mamy rozkład jazdy z podanymi godzinami i budową składu. O ile nie trzeba rozformowywać składów i pożyczać wagonów do innych składów, wydaje się to być proste do zrobienia. Wystarczy tabela odjazdów, przystanków, prędkości szlakowych i będzie śmigać.
Problem zaczyna się w przypadku pociągów towarowych. Można je puszczać wg rozkładu jak osobowe i bez większych problemów będą kursować między kopalnią a elektrownią. Ale np. jak zrobić misję, w której trzeba zostawić po jednym wagonie z węglem na każdej stacji, a potem zebrać puste? Albo jak wozić węgiel między kopalnią a elektrownią i hutą w sposób nie planowy? (Tzn. węglarki i lokomotywy są przydzielane dynamicznie tam, gdzie jest większa potrzeba.) Albo jak wozić drewno z tartaku do miejsc, gdzie jest potrzebne? Jak zaprogramować, że po wjechaniu ze składem na bocznicę, ma z tartaku wyjechać SM03 i zabierając po 2 wagony na raz rozformować skład, po czym również po 2-3 wagony sformować inny? (I to nie ma być jednorazowo, tylko powtarzać się co jakiś czas.)
Pierwszy mój pomysł polegał na tym, żeby przypisać do wagonu miejsce załadunku i rozładunku. No tak, ale to jest skutek, a nie przyczyna. Przyczyną jest potrzeba przewiezienia ładunku z jednego punktu do innego. Znając typ ładunku (sypki, gabarytowy, kontener) i jego ilość, trzeba by poszukać odpowiednich wagonów, a następnie lokomotywy... Zebrać wagony w odpowiednim miejscu, za pomocą lokomotywy manewrowej załadować, a następnie wysłać w drogę i rozładować.
Z drugiej strony, zarządzanie wagonami i lokomotywami wydaje się być zbyt skomplikowane, jak na zadania prostego serwera ruchu, który nawet nie ma informacji o współrzędnych torów w terenie (jedynie o ich połączeniach i długości).
Drugi pomysł nazwałem roboczo MovLoader. Jest to taki tor, który umie załadować lub rozładować postawiony na nim wagon. Również, w zależności od typu wagonu oraz stanu jego załadowania, potrafi zmienić punkt docelowy umieszczenia wagonu (wskazać inny MovLoader).
Piszę o tym tutaj z nadzieją, że może ktoś zna sytuację lepiej niż ja i może podsunąć jakieś rozwiązania. Obecnie mamy misje manewrowe ograniczające się do podłączenia się pod stojący skład, zmianę czoła, zmianę składu oraz odjechania od składu na końcu trasy. (Może coś pominąłem, ale nie ma to większego znaczenia. Eaosy w Dejawach nie ładują się węglem w sposób przydatny dla misji i nie da wozić węgla do Skwarek przez całą dobę.)
Żeby serwer ruchu mógł prowadzić towarowe pociągi AI oraz sterować lokomotywami manewrowymi, musi być dokładnie poinformowany, co ma gdzie przemieścić. Ponadto ma działać przez całą dobę i dowolnie długi czas, więc ustawienie eventów na jednorazową akcję odpada.
DiDok:
W Train Simulatorze są BARDZO skomplikowane misje manewrowe - przetacza się mnóstwo towaru, często wyciąga się 2-3 wagony ze środka 40-wagonowego składu, itp. Nie wiem, jak dokładnie wygląda system kontroli, ale wiem tylko, że w TS każdy wagon ma przydzielony swój własny numer - może dałoby się to jakoś wykorzystać (np. wagon 1-64483 stoi na torze elektr1, mamy go zabrać i włączyć w środek składu 3-54428;1-48859;1-85942;4-91142 stojącego na torze elewyj2 - skrypt/serwer sprawdzi, czy na torze elewyj2 stoją wagony w kolejności 3-54428;1-48859;1-64483;1-85942;4-91142 i uruchamia semafor lub robi cokolwiek innego, potem śle info, że wagony 1-48859;1-64483;1-85942;4-91142 mają się znaleźć na torze kopaln1 itd. itp.). Nie wiem, czy jest to wykonalne, ale może pomoże...
Dolmio89:
Stworzenie takiego serwera ruchu i prowadzenie ruchu 24h/d wymaga moim zdaniem pewnych zmian w istniejących sceneriach. Po pierwsze stacje początkowe i końcowe powinny mieć lokomotywownie i odpowiednią liczbe torów postojowych. Po przyjechaniu do stacji docelowej należy odstawić skład na wyznaczony tor a loka do szopy, później ktoś inny zaczyna misje z szopy, zabiera skład i rusza w droge. Tak powinno to wyglądać dla pociągów osobowych, z towarowymi jest problem, manewry raczej nie wchodzą w gre, bo AI nie potrafi podpiąć się do wagonów i ma problemy ze zmianą kiedynku jazdy, a nie wiem czy znajdzie się ktoś chętny do obsługi SM'ki na każdej większej stacji. Lepiej będzie zrezygnować ze zbyt skomplikowanych manewrów. Pozostaje problem co z ładunkiem, bo wożenie węgla tam i z powrotem jest troche dziwne. Czytając secenry.doc widziałem, że istnieje możliwość dopisania do torów eventów ładowania i rozładowywania wagonów. Można więc napisać misje gdzie prowadzimy pociagi na trasach kopalnia-elektrownia itd. W tym wypadku pociągi towarowe będą musiały być zestawione z tych samych typów wagonów. Można też po prostu wstawić na trasie jakieś magazyny, bocznice i przeciągać wagony między tymi punktami, w końcu w gagsach albo kontenerach i tak nie widać żadnego ładunku.
To tyle co do pomysłów. Mam jeszcze pytanie jak planujesz rozwiązać problem gdy nastąpi zerwanie połączenia z serwerem, lub gdy ktoś po prostu wyłączy symka gdy jego pociąg będzie na szlaku? Taka sytuacja może doprowadzic do paraliżu ruchu na całej scneri, przejęcie sterowania przez AI nie do końca pomoże, bo jak już mówiłem AI nie jest zdolne do wykonywania skomplikowanych manewrów i utknie na stacji przy Ms2.
Grzegorz KK:
Nie wiem czy dobrze dedukuje ale TS był od razu przygotowywany na takie działania(od samego początku programiści planowali to) a tutaj zrobić to od podstaw wszystko, więc zadanie troche trudniejsze.
RA: Pisałem do ciebie na priv rozumiem że serwer będzie odebierał wszystkie dane wysyłane przez położenia loka przemieszczenia przyśpieszenie itd. Pomysł wydaje się być przedni,podpisuje się pod tym.
--- Cytat: Dolmio89 w 19 Kwietnia 2008, 11:19:01 --- Mam jeszcze pytanie jak planujesz rozwiązać problem gdy nastąpi zerwanie połączenia z serwerem, lub gdy ktoś po prostu wyłączy symka gdy jego pociąg będzie na szlaku? Taka sytuacja może doprowadzic do paraliżu ruchu na całej sceneri.
--- Koniec cytatu ---
Jeśli nie przejęcia przez AI to chyba najbardziej bolesnym aczkolwiek najprostszym sposobem jest zniknięcie obiektu ze sceneri !.Ale myśle jeżeli serwer będzie w miare dobrze rozwinięty to zauważy zniknięcie obiektu ze sceneri:],i nie będzie potrzeby przejmowania prowadzenia przez AI.
Tyle z mojej strony.
Pozdrawiam.
Ra:
Wagony będą numerowane i każdy będzie miał własny "tor docelowy", gdzie będzie mógł być zmieniony ładunek i określony nowy "tor docelowy".
Scenerie na pewno będą przerobione, pisałem o tym częściowo tutaj (link). Włączanie się do jazdy będzie następowało z aktualnej pozycji składu. Żeby wystartować z szopy, trzeba się będzie zalogować do serwera ruchu, zanim jazda się rozpocznie (będzie wiadomo, o której godzinie).
Nie będzie działać obecne AI, bo rolę AI przejmie serwer ruchu.
Po zerwaniu połączenia serwer ruchu włączy AI. Jeśli połączenie zostanie w miarę szybko przywrócone, a różnice będą niezbyt duże, będzie można się ponownie zsynchronizować pozycję. Składy nie będą znikać. W skrajnym przypadku serwer ruchu przestawi składy, które pojechały w nieodpowiednią stronę na właściwe dla nich tory (wg rozkładu).
Serwer ruchu ma prowadzić ruch zgodnie z rozkładem jazdy, w którym jest określone, na który tor mają być przemieszczone składy. Jeśli tor ma być czasowo zamknięty, trzeba zmienić rozkład. Jeśli ruch nie będzie mógł być wykonany zgodnie z rozkładem, serwer ruchu będzie zgłaszał alarmy - nie przewiduję, żeby wykazywał się inteligencją wystarczającą do zmodyfikowania rozkładu.
Ograniczenia prędkości będą miały wpływ na AI. Serwer ruchu nie będzie optymalizował czasu przejazdu. Jeśli coś mu nie zagra, zgłosi alarm.
Nawigacja
[#] Następna strona
Idź do wersji pełnej