03-03-2014, 17:09
Gdy wiele lat temu grałem w TTD, była to świetna i bardzo dobrze zbalansowana gra.
Obecnie jest jeszcze świetniejsza i ulepszana, ale wraz z ulepszeniami posypały się pewne sprawy.
Najważniejszą z nich są opłaty zależne od czasu transportu.
Przy mapach 256x256 działało to prawidłowo, ale przy większych mapach nawet przy dużej prędkości opłata za transport spada szybciej niż przyrasta dystans (po prostu z funkcji rosnącej robi się parabola), aby nie było ujemnych opłat, ktoś dosztukował linię prostą.
Więc teraz opłata za przewiezienie ze stałą prędkością raz jest duża, raz mała, to znowu duża:
[Obrazek: incomedistance256.png]
co gorsza potem nie zależy od prędkości. Na czerwono zaznaczone, jak to się zachowuje dla oryginalnej mapy - i podobnie powinno być dla większych.
Ten bug jest w grze od wersji 0.4.0 openttd gdy wprowadzono większe mapy, ale ludzie się tak przyzwyczaili, że myślą iż tak powinno być.
Jako osoba ze świeżym spojrzeniem ale pamiętająca stare czasy zapewniam, że nie powinno tak być i że nie jest to normalne.
Dlatego zaproponowałem nowy model, który:
Obecnie wygląda to tak, przykład dla V=100km/h i pasażerów oraz ropy naftowej:
[Obrazek: pax100.png][Obrazek: oil100.png]
W przypadku mniejszych prędkości krzywa dla pasażerów idzie mocniej w dół dla większych dystansów, ale już nie wstaje.
W przypadku ropy również dla mniejszych prędkości krzywa się wysyca, tylko na mniejszym poziomie.
Z drugiej strony, zwiększanie prędkości ponad 200 km/h daje istotne rezultaty dla pasażerów, a nie towarów masowych - wszystko sterowanie przez oryginalne parametry Days1 i 2.
Szczegóły modelu oraz testowy kod źródłowy są tutaj:
http://www.tt-forums.net/viewtopic.php?f...3#p1113022
W powyższym wątku jest też link do arkusza kalkulacyjnego, gdzie można sobie porównać wykresy przychodu od odległości dla różnych prędkości i towarów.
Jeśli ktoś ma możliwość kompilowania, to zapraszam do testów i uwag,
zasadniczo zmieniłem tylko jedną funkcję w pliku economy.cpp
Na razie kod jest napisany w oparciu o liczby rzeczywiste, więc nie nadaje się do rozgrywki sieciowej.
Przeróbkę na integery zostawiam sobie na później, być może trzeba będzie jeszcze ulepszyć obecny model.
Obecnie jest jeszcze świetniejsza i ulepszana, ale wraz z ulepszeniami posypały się pewne sprawy.
Najważniejszą z nich są opłaty zależne od czasu transportu.
Przy mapach 256x256 działało to prawidłowo, ale przy większych mapach nawet przy dużej prędkości opłata za transport spada szybciej niż przyrasta dystans (po prostu z funkcji rosnącej robi się parabola), aby nie było ujemnych opłat, ktoś dosztukował linię prostą.
Więc teraz opłata za przewiezienie ze stałą prędkością raz jest duża, raz mała, to znowu duża:
[Obrazek: incomedistance256.png]
co gorsza potem nie zależy od prędkości. Na czerwono zaznaczone, jak to się zachowuje dla oryginalnej mapy - i podobnie powinno być dla większych.
Ten bug jest w grze od wersji 0.4.0 openttd gdy wprowadzono większe mapy, ale ludzie się tak przyzwyczaili, że myślą iż tak powinno być.
Jako osoba ze świeżym spojrzeniem ale pamiętająca stare czasy zapewniam, że nie powinno tak być i że nie jest to normalne.
Dlatego zaproponowałem nowy model, który:
- opiera się na prędkości średniej, a nie czasie transportu
- daje "gładką" zależność przychodu od odległości
- dla odległości ~200 pól daje b. podobny przychód jak stara wersja
- używa własności towaru Days1 i Days2 do modyfikacji krzywej przychodu zależnie od prędkości średniej
Obecnie wygląda to tak, przykład dla V=100km/h i pasażerów oraz ropy naftowej:
[Obrazek: pax100.png][Obrazek: oil100.png]
W przypadku mniejszych prędkości krzywa dla pasażerów idzie mocniej w dół dla większych dystansów, ale już nie wstaje.
W przypadku ropy również dla mniejszych prędkości krzywa się wysyca, tylko na mniejszym poziomie.
Z drugiej strony, zwiększanie prędkości ponad 200 km/h daje istotne rezultaty dla pasażerów, a nie towarów masowych - wszystko sterowanie przez oryginalne parametry Days1 i 2.
Szczegóły modelu oraz testowy kod źródłowy są tutaj:
http://www.tt-forums.net/viewtopic.php?f...3#p1113022
W powyższym wątku jest też link do arkusza kalkulacyjnego, gdzie można sobie porównać wykresy przychodu od odległości dla różnych prędkości i towarów.
Jeśli ktoś ma możliwość kompilowania, to zapraszam do testów i uwag,
zasadniczo zmieniłem tylko jedną funkcję w pliku economy.cpp
Na razie kod jest napisany w oparciu o liczby rzeczywiste, więc nie nadaje się do rozgrywki sieciowej.
Przeróbkę na integery zostawiam sobie na później, być może trzeba będzie jeszcze ulepszyć obecny model.
![OpenTTD #Polska - Polskie forum gry OpenTTD [ARCHIWUM] OpenTTD #Polska - Polskie forum gry OpenTTD [ARCHIWUM]](https://forum.openttd.pl/images/logo.png)
