18-07-2017, 15:36
Disclaimer: Zdaję sobie sprawę, że wątek może wyglądać na kolejny z cyklu "zbierzmy się i zróbcie" ale prosiłbym o wyrozumiałość. Niestety nie jestem w stanie ocenić, czy pomysł jest realny ani jakiego nakładu środków wymagałaby realizacja - moja wiedza programistyczna jest zbyt niska :
Poniższe jest czystą teorią. Jeśli tego nie da się zrobić to zamykamy temat.
OK, do rzeczy:
Jak wiadomo, największym zastrzeżeniem dotyczącym cargodist jest fakt, że faworyzuje on połączenia bezpośrednie w stosunku do rozbudowanej sieci połączeń, co stanowi niejako zaprzeczenie idei budowy systemu transportowego i realizmu. Nie patrzyłem w "bebechy" i nie wiem, jak to jest zrobione od strony kodu ale czy nie spróbować nieco innego podejścia do odwzorowania ruchu pasażerów po świecie gry. Mianowicie:
1. W momencie generowania nowego pasażera (zakładam, że jest to proces uruchamiany raz na ileś tam "tików" gry) pierwszym krokiem byłoby wylosowanie jak daleko pasażer chce jechać. Rozkład prawdopodobieństwa mógłby być konfigurowalny i przykładowo wyglądać tak: Długi dystans: 20%, Średni dystans:30%, Krótki dystans: 50%. Wynik tej operacji warunkuje kolejne. Z puntu widzenia mechaniki gry każdy pasażer byłby tym samym typem "towaru", opisywany algorytm warunkowałby tylko przypisanie mu stacji docelowej.
2. Pasażer długodystansowy szuka ("szuka" tzn. oczywiście algorytm przelicza) miejsca docelowego w odległości powyżej X kratek (parametr do skonfigurowania). Przez miejsce docelowe rozumiem obiekt (dom, przemysł), który przyjmuje pasażerów. Jeśli taki obiekt istnieje, sprawdzane jest, czy znajduje się on w zasięgu stacji gracza. Jeśli tak - generowany jest pasażer z określoną stacją docelową (analogicznie jak w cargodist). Jeśli nie - pasażer nie powstaje
2. Pasażer średniodystansowy szuka miejsca docelowego w odległości od Y do X kratek (do skonfigurowania), reszta jak wyżej.
3. Pasażer krótkodystansowy szuka miejsca w odległości poniżej Y kratek
Co daje taki algorytm? Przede wszystkim:
1. Im rozleglejsza sieć tym więcej pasażerów bo zwiększa się prawdopodobieństwo, że generowany pasażer "znajdzie" połączenie do miejsca docelowego
2. Transport lokalny nie konkuruje z długodystansowym, ponieważ pasażerowie na każdy typ trasy są generowani niezależnie
3. Większy realizm:
- preferowana będzie szeroka sieć, zamiast połączeń bezpośrednich bo kluczem będzie zapewnienie pokrycia jak największego obszaru.
- transport lokalny będzie się w końcu się wysycał (bo tylko ok. 50% pasażerów będzie "chciało" jechać na krótki dystans), zmuszając gracza do rozbudowy połączeń na większe odległości aby wykorzystać potencjał w pasażerach średnio- i -długodystansowych.
Co sądzicie? :
Tak, jak pisałem, nie mam pojęcia czy to jest wykonalne i jakim nakładem pracy. Chętnie poznam opinię osób, bardziej oblatanych w programowaniu
Poniższe jest czystą teorią. Jeśli tego nie da się zrobić to zamykamy temat.OK, do rzeczy:
Jak wiadomo, największym zastrzeżeniem dotyczącym cargodist jest fakt, że faworyzuje on połączenia bezpośrednie w stosunku do rozbudowanej sieci połączeń, co stanowi niejako zaprzeczenie idei budowy systemu transportowego i realizmu. Nie patrzyłem w "bebechy" i nie wiem, jak to jest zrobione od strony kodu ale czy nie spróbować nieco innego podejścia do odwzorowania ruchu pasażerów po świecie gry. Mianowicie:
1. W momencie generowania nowego pasażera (zakładam, że jest to proces uruchamiany raz na ileś tam "tików" gry) pierwszym krokiem byłoby wylosowanie jak daleko pasażer chce jechać. Rozkład prawdopodobieństwa mógłby być konfigurowalny i przykładowo wyglądać tak: Długi dystans: 20%, Średni dystans:30%, Krótki dystans: 50%. Wynik tej operacji warunkuje kolejne. Z puntu widzenia mechaniki gry każdy pasażer byłby tym samym typem "towaru", opisywany algorytm warunkowałby tylko przypisanie mu stacji docelowej.
2. Pasażer długodystansowy szuka ("szuka" tzn. oczywiście algorytm przelicza) miejsca docelowego w odległości powyżej X kratek (parametr do skonfigurowania). Przez miejsce docelowe rozumiem obiekt (dom, przemysł), który przyjmuje pasażerów. Jeśli taki obiekt istnieje, sprawdzane jest, czy znajduje się on w zasięgu stacji gracza. Jeśli tak - generowany jest pasażer z określoną stacją docelową (analogicznie jak w cargodist). Jeśli nie - pasażer nie powstaje
2. Pasażer średniodystansowy szuka miejsca docelowego w odległości od Y do X kratek (do skonfigurowania), reszta jak wyżej.
3. Pasażer krótkodystansowy szuka miejsca w odległości poniżej Y kratek
Co daje taki algorytm? Przede wszystkim:
1. Im rozleglejsza sieć tym więcej pasażerów bo zwiększa się prawdopodobieństwo, że generowany pasażer "znajdzie" połączenie do miejsca docelowego
2. Transport lokalny nie konkuruje z długodystansowym, ponieważ pasażerowie na każdy typ trasy są generowani niezależnie
3. Większy realizm:
- preferowana będzie szeroka sieć, zamiast połączeń bezpośrednich bo kluczem będzie zapewnienie pokrycia jak największego obszaru.
- transport lokalny będzie się w końcu się wysycał (bo tylko ok. 50% pasażerów będzie "chciało" jechać na krótki dystans), zmuszając gracza do rozbudowy połączeń na większe odległości aby wykorzystać potencjał w pasażerach średnio- i -długodystansowych.
Co sądzicie? :
Tak, jak pisałem, nie mam pojęcia czy to jest wykonalne i jakim nakładem pracy. Chętnie poznam opinię osób, bardziej oblatanych w programowaniu
![OpenTTD #Polska - Polskie forum gry OpenTTD [ARCHIWUM] OpenTTD #Polska - Polskie forum gry OpenTTD [ARCHIWUM]](https://forum.openttd.pl/images/logo.png)
