Jump to content

Recommended Posts

Posted

Problem #1:

(Pomijając zasadność tego) wczoraj po nocy (jak było prawie pusto) bawiłem się na wioskowej dyżurce w "wyścigi", czyli w puszczanie gracza równolegle z botem oboma torami jednocześnie do kolejnej stacji. Było to gdzieś w okolicach Psarów. Puściłem ich na ten bardzo długi odcinek, który w dyżurce jest aż zawinięty na tablicy i patrzyłem kto wygrywa. Potem przesiadłem się do dyżurki docelowej, żeby ich odebrać i puścić dalej. W pewnym momencie (nie pamiętam czy w to było w tej czy w następnej), znudziłem się czekaniem i przesiadłem się w tego bota, który "ścigał się" z graczem i zostawił go już w tyle, żeby go zahamować, pozwolić się dogonić i obtrąbić gracza 😉 i ruszyć z nim dalej równolegle. Potem znowu przeskoczyłem do dyżurki docelowej żeby przepuścić oba pociągi dalej równolegle. Czekały tam już 2 pociągi w drugą stronę (boty), które też chciałem odblokować. Ta część poszła ok.

Po puszczeniu gracza, a potem bota dalej (nie dało się jednocześnie ze względu na zwrotnice i to gdzie stały boty), przesiadłem się w tego mojego bota żeby dogonić gracza lewym torem znowu. Następną stacją było Zawiercie zdaje się. Oba tory się rozjechały, a potem chyba zjechały z powrotem (i chyba był też peron), a następnie ja dostałem czerwone światło, na którym czekałem zbyt długo żeby potem już dogonić gracza, więc sobie dałem spokój i przesiadłem się do następnej dyżurki, w Łazach zdaje się, gdzie sprawdzałem, czy i kiedy gracz dojedzie (dojechał). Natomiast mojego bota nadal nie było, więc przesiadłem się z powrotem w niego żeby zobaczyć co się dzieje. Okazało się, że stał dalej na tym czerwonym, natomiast ZA tym czerwonym stał drugi pociąg w przeciwną stronę...

Czyli tor został zablokowany na dobre kiedy mnie tam nie było. AI nie poradził sobie z tym, że ktoś mu odwrócił kierunek toru i w jakiś sposób udało mu się puścić na niego pociąg (myślałem, że to niemożliwe jest, chyba że na sygnał zastępczy!). Z tego co ja rozumiem, to powinien widzieć, że ma blokadę włączoną w przeciwną stronę i czekać aż coś wyjedzie lub próbować ją anulować i zmienić tak jak powinno być. Wydaje mi się, że to co się stało, to był jakiś zahardkodowany reset skopanych kierunków po wyjściu realnego gracza (mnie), żeby wszystko było "ok" (zamiast AI wciskającego guziki na tablicy żeby to zrobić naprawdę). Owszem, powinno to się zresetować, ale nie jeśli pociąg tam już wjechał. Możliwe, że dyżurny AI ze zażądał zmiany kierunku na wychodzący od niego, a poprzedni dyżurny AI (który wszedł po mnie kiedy ja puściłem tam oba tory i pociągi w tym samym kierunku) ZAAKCEPTOWAŁ TO, ponieważ "nie pamiętał" żeby puszczał tam pociąg (bo to JA to zrobiłem). Jeśli ta teoria jest prawdziwa, to należałoby mu to zabezpieczyć, żeby sprawdzał czy coś jest na torze zanim zezwoli na zmianę kierunku. Nawet jeśli to "oszustwo", to odpowiada to rzeczywistości, bo w rzeczywistości dyżurny by albo pamiętał że coś tam posłał (i nie wymieniłoby mu nagle duszy na inną jak w serialu Travellers), albo by zadzwonił do sąsiada potwierdzić czy może to zrobić i by się dowiedział, że nie. Inną teorię jaką mam, to to, że była tam po drodze dyżurka niedostępna dla gracza, której wcale nie obsługuje AI tylko jest puszczone wszystko na sztywno. Trzecia teoria jaką mam, to to, że dojechałem do dyżurki, w której BYŁ AI, ale nie potrafił przekierować mnie z lewego toru na prawy i po prostu wpuścił mnie na swój lewy semafor wylotowy bez zażądania blokady kierunku od następnej stacji (a tam już coś nadjeżdżało z drugiej strony), żeby puścić pociąg dalej tym samym torem. Może nawet chciał zażądać blokady ale było już za późno, bo już tam coś jechało. Tak czy inaczej, gdzieś w AI jest błąd do poprawy. W tym ostatnim przypadki powinien rozumieć, że coś mu przyjechało lewym torem i że nie ma powodu puszczać tego dalej lewym torem tylko z miejsca przekierować na prawy tor i dalej puścić normalnie.
 

Problem #2:

Kiedy jechałem równolegle z graczem, jego pociąg skakał zamiast jechać (teleportował się co ułamek sekundy). Oczywiście można to zwalić na ping 100ms, ale uważam, że gdzie jak gdzie, ale w symulatorze pociągu, to naprawdę można to bardzo łatwo i skutecznie rozwiązać, ponieważ pociągi nie skręcają i są ekstremalnie przewidywalne w swoim ruchu. Zamiast odbierać od peera pakiet z pozycją jego pociągu i go tam rysować, powinien zostać odebrany pakiet z jego pozycją, prędkością i stanem kontrolek sterowania (lub w uproszczeniu: jego przyspieszeniem, dodatnim bądź ujemnym). Na podstawie takich danych można na moim komputerze wysymulować (obliczyć) pozycję innego gracza z niemal 100% dokładnością w czasie rzeczywistym, do czasu otrzymania kolejnego pakietu. Delikatny przeskok nastąpi dopiero w momencie, w którym gracz zmieni kontrolki (wciśnie hamulec lub doda mocy). Ponadto przesyłanie stanu kontrolek byłoby znacznie lepsze niż jednej wartości przyspieszenia, ponieważ, stała pozycja wajchy hamulca również powoduje zmianę wartości przyspieszenia w czasie (bo opróżnia się break pipe i zaciskają coraz mocniej hamulce). Wystarczyłoby generalnie wysyłać tylko zmiany przyrządów (w momencie ich zmiany) + pozycję pociągu na tamten moment + znacznik czasowy kiedy to było - i z matematycznego punktu widzenia powinno się z tego już dać wszystko wyliczyć, a skoki pociągu innego gracza będą zredukowane niemalże do zera, będzie wrażenie pingu 0 jak w GTA 5.

PS:
Proszę wybaczyć, że 2 różne problemy w 1 poście, ale nie chcę być znowu oskarżony o spamowanie i nabijanie punktów, więc ograniczam ilość postów do minimum.

Posted (edited)

Oba problemy są zduplikowane? A gdzie są te zgłoszenia? Można linki? Chciałbym się upewnić, że nic nie zostanie przeoczone. Dziękuję.

Poza tym dałem tu szeroki opis jak odtworzyć ten pierwszy błąd, więc można by go przynajmniej podlinkować pod tamto (zduplikowane) zgłoszenie, żeby programiści wiedzieli gdzie i jak tego szukać.

Edited by PeVoo
Posted

No tak...
A potem odpalę pełną wydaną wersję i będą tam oba te błędy - mogę się założyć...
Nie wiem skąd, ale jakoś tak czuję...

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy