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.