Symulator EU07 (i nie tylko) > Pomoc w tworzeniu
Pytania o eventy
popatrz:
--- Cytat: Ra w 25 Września 2012, 11:39:33 ---Innym argumentem jest np. to, że jeśli AI zostanie "zresetowane" na takim odcinku (pomiędzy W9), to nie będzie wiedziało o ograniczeniu.
--- Koniec cytatu ---
Ten argument przekonał mnie o niesłuszności mojego toku myślenia co do wstawiania eventów w ograniczeniach.
Mając na uwadze:
--- Cytat: Ra w 25 Września 2012, 11:39:33 ---jeśli ograniczenie jest w jednym kierunku (np. ze względu na widoczność), powinno być zrobione przez PutValues z SetVelocity
--- Koniec cytatu ---
i potencjalne sytuacje, gdy z uwagi na zbyt szybkie rozpoczęcie przyśpieszania bardzo długich składów, ostatnie wagony wykolejają się jeszcze na ograniczeniu, czy nie należałoby pomyśleć jednak o tej propozycji:
--- Cytat: popatrz w 22 Września 2012, 18:33:33 ---1) Czy docelowo możliwe jest zmuszenie AI do odpowiedniej reakcji na koniec ograniczenia?
--- Koniec cytatu ---
Zmodyfikowałbym tylko mój wstępny pomysł dodając warunek minimalnej konfigurowalnej dodatkowym parametrem (albo określonej na stałe) prędkości, od której AI rozpoczynałby przyśpieszanie przy obiekcie inc.
Oczywiście pod warunkiem, że
--- Cytat: Ra w 25 Września 2012, 11:39:33 ---inaczej traktować SetVelocity umieszczone w PutValues niż w komórce odczytywanej przez GetValues.
--- Koniec cytatu ---
nie byłoby możliwe do wykonania.
--- Cytat: Ra w 25 Września 2012, 11:39:33 ---Obecnie eventy są klasyfikowane jako skanowane albo kolejkowane. Jeśli PutValues zawiera SetVelocity w momencie wczytywania scenerii, zostanie zakwalifikowany jako skanowany i nie doda się do kolejki.
--- Koniec cytatu ---
Rozumiem powody tego rozwiązania. Mała prośba o opublikowanie listy, które są skanowane a które kolejkowane.
Ogólnie, to dobrze jednak byłoby mieć wpływ na charakter eventów (np. przez dodanie prefiksu przy nazwie eventu). Po pierwsze wsteczna kompatybilność ze starszymi sceneriami (czyli mniej pracy przy przerabianiu) i określone założenia scenariusza, gdy scenarzysta chciałby mieć wpływ na np. zatrzymanie AI pod określonym warunkiem (np. zdarzenia losowe).
Ra:
--- Cytat: popatrz w 25 Września 2012, 12:40:03 ---i potencjalne sytuacje, gdy z uwagi na zbyt szybkie rozpoczęcie przyśpieszania bardzo długich składów, ostatnie wagony wykolejają się jeszcze na ograniczeniu,
--- Koniec cytatu ---
Przy ograniczeniu w jedną stronę nie ma raczej mowy o wykolejeniu z tego powodu.
--- Cytat: popatrz w 25 Września 2012, 12:40:03 ---Mała prośba o opublikowanie listy, które są skanowane a które kolejkowane.
--- Koniec cytatu ---
--- Cytat: http://rainsted.com/pl/Symulator/MaSzyna/EU07.EXE_372 ---Rozróżnienie eventów skanowanych i dodawanych do kolejki
Odkąd uruchomiono skanowanie torów w poszukiwaniu sygnałów wpływających na jazdę AI, zaistniała potrzeba odróżnienia eventów używanych podczas skanowania od tych dodawanych do kolejki. Obecnie (od wersji 361) takie rozróżnienie jest wykonywane na etapie wczytywania scenerii. Jeśli event PutValues zawiera komendę SetVelocity, ShuntVelocity albo zaczynającą się od PassengerStopPoint:, zostanie uznany jako uczestniczący w skanowaniu. Podobnie GetValues, jeśli połączona z nim komórka pamięci będzie zawierać pierwotnie komendę SetVelocity albo ShuntVelocity, nawet jeśli później komenda w komórce zostanie wymieniona na inną (jak dotąd nie używa się tego, wyjątkiem jest służba 3 na Linii 053).
--- Koniec cytatu ---
--- Cytat: popatrz w 25 Września 2012, 12:40:03 ---Ogólnie, to dobrze jednak byłoby mieć wpływ na charakter eventów (np. przez dodanie prefiksu przy nazwie eventu). Po pierwsze wsteczna kompatybilność ze starszymi sceneriami (czyli mniej pracy przy przerabianiu) i określone założenia scenariusza, gdy scenarzysta chciałby mieć wpływ na np. zatrzymanie AI pod określonym warunkiem (np. zdarzenia losowe).
--- Koniec cytatu ---
Moim zdaniem nie ma to sensu użytkowego. Konieczność dostosowania się do błędów i udziwnionych rozwiązań w istniejących sceneriach mnie nie przekonuje. Komenda SetVelocity jest ma charakter sygnałowy i trudno jest jednoznacznie określić, jak miałoby się zachować AI dostając taką komendę. Czy np. SetVelocity 20 20 wysłane nagle z kolejki eventów miało by wdrożyć nagłe hamowanie AI w celu jak najszybszego uzyskania zadanej prędkości?
Moim zdaniem system sterowania powinien być wewnętrznie spójny oraz umożliwiać uzyskanie potrzebnych efektów (np. manewry) możliwie małym kosztem dodatkowych wpisów. A to, że ktoś coś tam kiedyś zamieszał z komórkami pamięci stojącymi w przypadkowych miejscach i dziwnym trafem dawało to pożądane rezultaty w zachowaniu AI nie oznacza, że trzeba się tego trzymać.
popatrz:
--- Cytat: Ra w 25 Września 2012, 13:46:14 ---Przy ograniczeniu w jedną stronę nie ma raczej mowy o wykolejeniu z tego powodu.
--- Koniec cytatu ---
Żeby nie wymyślać już konkretnych sytuacji, to po prostu sprowadzę tu podstawowy argument ważny przy symulatorach - realizmu. Dziwnie i "nieedukacyjnie" wygląda jak obserwujemy pociąg kierowany przez AI łamiący ograniczenie prędkości.
--- Cytat: http://rainsted.com/pl/Symulator/MaSzyna/EU07.EXE_372 ---
--- Koniec cytatu ---
Dziękuję. Przyznam się bez bicia, że zajrzałem ale przeoczyłem to.
--- Cytat: Ra w 25 Września 2012, 13:46:14 ---Moim zdaniem nie ma to sensu użytkowego. Konieczność dostosowania się do błędów i udziwnionych rozwiązań w istniejących sceneriach mnie nie przekonuje.
--- Koniec cytatu ---
No tak, tworzone były różne obejścia bo "było tak łatwiej" albo nie było innych możliwości. Pierwszym przypadkiem bym się faktycznie nie przejmował. W drugim przypadku, gdy jest jakiś pomysł w głowie i inaczej nie da się tego zrobić, to szuka się różnych "furtek". Np. żeby zatrzymać AI trzeba schować semafor pod ziemię...
--- Cytat: Ra w 25 Września 2012, 13:46:14 ---Komenda SetVelocity jest ma charakter sygnałowy i trudno jest jednoznacznie określić, jak miałoby się zachować AI dostając taką komendę. Czy np. SetVelocity 20 20 wysłane nagle z kolejki eventów miało by wdrożyć nagłe hamowanie AI w celu jak najszybszego uzyskania zadanej prędkości?
--- Koniec cytatu ---
Służbowe. A gdy np. SetVelocity 20+ 20+ to nagłe.
Ra:
--- Cytat: popatrz w 25 Września 2012, 14:12:40 ---Żeby nie wymyślać już konkretnych sytuacji, to po prostu sprowadzę tu podstawowy argument ważny przy symulatorach - realizmu. Dziwnie i "nieedukacyjnie" wygląda jak obserwujemy pociąg kierowany przez AI łamiący ograniczenie prędkości.
--- Koniec cytatu ---
AI ma przede wszystkim jeździć i nie sprawiać problemów, a nie być wzorem do naśladowania. Jak dotąd, z jednostronnym ograniczeniem spotkałem się tylko na odcinku Kozłów - Psary, ze względu na słabą widoczność z przejazdu na łuku. Poza tym, metodologia mojej pracy jest następująca: przysyłasz mi scenerię, na której AI się zachowuje nieprawidłowo, ja poprawiam kod, aż zacznie działać, albo dochodzę do wniosku, że coś trzeba zrobić w inny sposób. Jednocześnie zmiany będą weryfikowane na scenerii o znacznym ruchu AI (jazda z rozkładami, skomplikowane manewry).
--- Cytat: popatrz w 25 Września 2012, 14:12:40 ---W drugim przypadku, gdy jest jakiś pomysł w głowie i inaczej nie da się tego zrobić, to szuka się różnych "furtek". Np. żeby zatrzymać AI trzeba schować semafor pod ziemię...
--- Koniec cytatu ---
Wirtualne semafory są OK, pod warunkiem, że są zrobione zgodnie z zasadami, tzn. komórka pamięci jest przy torze, którym ma sterować, a nie w OXYZ, a komendy do niej wpisywane pokrywają się ze sterowaniem semaforem. Natomiast jeśli wstawia się wirtualne semafory przy peronie na każdej stacji, bo się komuś nie chce pisać rozkładu, to już poniekąd przegięcie jest.
--- Cytat: popatrz w 25 Września 2012, 14:12:40 ---Służbowe. A gdy np. SetVelocity 20+ 20+ to nagłe.
--- Koniec cytatu ---
Nie spotkałem się z taką postacią liczb zmiennoprzecinkowych.
popatrz:
OK. Z moimi "małymi" potrzebami nie mam szans.
--- Cytat: Ra ---Nie spotkałem się z taką postacią liczb zmiennoprzecinkowych.
--- Koniec cytatu ---
Ja też nie. :D
Są w C możliwości zmiany typu zmiennych na string i konwersji na int/long.
Te "20+" było propozycją rzuconą na poczekaniu. Nie znam typów argumentów tej funkcji w C.
Bez takich ingerencji w kod można zrobić np 100020 i już.
Nawigacja
[#] Następna strona
Idź do wersji pełnej