INNE Projekt: skrypt New World Disorder
#13
Jednak zajęło mi to trochę więcej czasu... Musiałem jeszcze raz przemyśleć działanie i wpływ wszystkich elementów. Jest tego trochę. Najbardziej złożone są komunikacja i energia elektryczna. Nie wiem czy nie trzeba będzie tego jakoś uprościć.
Ogólnie wygląda to tak, że skrypt składa się z sześciu bazowych elementów, którymi są: Przemysł, Handel, Budownictwo, Komunikacja miejska, Komunikacja międzymiastowa i Energia elektryczna, oraz z części głównej (Bezrobocie), która łączy wyniki z nich uzyskane i na ich podstawie oblicza tempo wzrostu miast. Każdy z tych elementów domyślnie może dawać taką samą liczbę punktów. Dodatkowo prawie każdy element ma możliwość modyfikacji jego znaczenia. Te wszystkie wartości zsumowane i pomnożone modyfikatorami, a następnie podzielone przez również zsumowaną i pomnożoną wartość wymaganą dają wynik określający wspomniane tempo. Mam nadzieję, że w miarę czytelnie to wszystko niżej rozpisałem. Wszystkich wzorów nie napisałem, z resztą nie wiem jak one mogą być zapisane, ale myślę, że są wszystkie potrzebne informacje. Smiley43  Jakby czegoś brakowało, to dopiszę.

******************************************************************************************************************************
Przemysł - produkcja przypisanych do miasta przedsiębiorstw
Wymagane: 200 jednostek / 1000 mieszkańców (dla poziomu trudności 100%)
Do wartości wymaganej po roku gry jednorazowo dodawana by była aktualna wartość produkcji - inaczej wszystkie miasta będą same rosły Edit: można, ale to nie jest konieczne.
Produkty przetworzone liczone są x3 Edit. x2 da lepszy balans
Produkty rolne x1/2
Produkty wydobywcze x1
Dodatkowo można dać bonus dla towarów przetransportowanych (wynosiłby ten sam procent)

Jeśli produkcja wynosi 100% wymaganej - dodane zostaje do oceny bezrobocia 100 punktów (wartość "P")
Nadwyżka powyżej 100% jest liczona jako pierwiastek x3 - np. jeśli produkcja wynosi 500/100 czyli 500%, to do oceny bezrobocia dodane zostanie 160 punktów - chodzi o to, aby miasta mogły rozwijać się na jednej ale nie jedynej gałęzi gospodarki.
Wartość produkcji powinna być średnią z ostatnich 3 miesięcy.
Ustawienia:
W parametrach powinna być opcja modyfikująca znaczenie tego elementu - może być procentowo lub słownie z ustalonym procentem (podanym w nawiasie)
Jeśli procentowo, wartość domyślna powinna wynosić 100%. Zakres 0-200% (ustawienie stanowić będzie wartość ZP dla dalszych obliczeń). Jeśli ustawione zostanie 0% ten element nie będzie wyświetlany, ale nie będzie brany pod uwagę. Jeśli ustawione zostanie 200%, to produkcja na poziomie 100% da 200 punktów (wartość P)
Jeśli słownie, powinno być przynajmniej pięć możliwości wyboru znaczenia: Brak (0%), Małe (50%), Normalne (100%), Duże (150%), Bardzo duże (200%)

Handel - wielkość dostawy określonych towarów do miasta lub miejskich przedsiębiorstw
W parametrach skryptu powinna być opcja włączająca liczenie dostaw tylko do przedsiębiorstw miejskich (tak jest w Real Growth). Chodzi tu m.in. o możliwość dodania setu przedsiębiorstw z ograniczoną akceptacją oraz możliwość określenia miejsc gdzie dokładniej mają być dostarczane.
Wymagane: 100 jednostek / 1000 mieszkańców
Dostawy towarów oraz paliwa byłyby liczone x1
Dostawy żywności x2
Dostawy poczty x1/4
Dostawy materiałów budowlanych x1
J.w. Wartość dostaw powinna być średnią z ostatnich 3 miesięcy.

J.w.
Jeśli dostawy towarów wynoszą 100% wymaganych - dodane zostaje do oceny bezrobocia 100 punktów (wartość H)
Nadwyżka powyżej 100% jest liczona jako pierwiastek x3 - np. jeśli dostawy wynoszą 500/100 czyli 500%, to do oceny bezrobocia dodane zostanie 160 punktów
Ustawienia znaczenia jak dla przemysłu (wartość ZH)

Budownictwo - dostawy materiałów budowlanych (np. cegły, cement, stal, szkło dla ECS).
Wymagane: 50 jednostek / 1000 mieszkańców
Liczone byłyby konkretne towary przypisane do danego setu dostarczane do konkretnych przedsiębiorstw.
Jeśli nie byłoby dostępnych przypisanych ustawieniu towarów, element ten nie byłby ani liczony ani pokazywany - tak działa skrypt RCG, gdzie można wybrać dowolne ustawienie np. FIRS dla dowolnego setu przedsiębiorstw, ale przykładowo dla standardowego przemysłu nigdy nie wyświetli się wymóg dostaw produktów przetworzonych.

Obliczenia i ustawienia j.w. - 100% = 100 punktów (wartość B oraz ZB dla dalszych obliczeń)

******************************************************************************************************************************
Komunikacja

Miejska - ilość przetransportowanych pasażerów oraz poczty "wyprodukowanych" przez miasto.
Wersja 1 (rozwinięta)
Tutaj wynik byłby ograniczony, jeśli więcej niż 50% trafiało na stacje w innym mieście.
Np. jeśli wszyscy pasażerowie i poczta (powiedzmy 70%) są transportowani wyłącznie do innego miasta, ocena transportu miejskiego wyniesie 0%. Natomiast jeśli tylko 20% z nich trafi na inne miejskie stacje (może być tylko przesiadka) ocena wyniesie 70% x 20/50 = 28%. Jeśli będzie to więcej niż 50% ocena nie uległaby zmianie i wynosiła 70%.
Tak jak wyżej 100% = 100 punktów (wartości C i ZC) - ten element przy domyślnych ustawieniach miałby najmniejsze znaczenie dla rozwoju - to by było zbyt proste.
Pokazywany wynik: Uzyskany wynik na poziomie 80% pokazywany byłby jako 100%, czyli powinien być mnożony x 1,25, ale nie powinien wynosić więcej niż 100. To ze względu na to, że prawie niemożliwe jest przetransportowanie wyższego odsetka pasażerów i poczty. Wynika to głównie z oceny stacji, która zwykle to uniemożliwia.

Wersja 2 (uproszczona)
Tutaj wprost procent określałby wyłącznie ilość przetransportowanych pasażerów i poczty "wyprodukowanych" przez miasto. Nazywanie tego komunikacją miejską nie będzie w jednak tym wypadku zbyt trafne, bo równie dobrze ci wszyscy pasażerowie / poczta mogą być wywożeni z miasta.
100% = 100 punktów.

Wersja 3 - post nr 15

Międzymiastowa
Wersja 1 - ilość miast, z którymi istnieje obsługiwane połączenie względem łącznej liczby miast.
Z tego co widać w panelu stacji, możliwe jest określenie celu transportu, którym są stacje (te są przypisane do miast).
Dodatkowo, czego nie widać, każde połączenie jest osobno oceniane, a więc liczone byłyby tylko te połączenia, których średnia ocena jest co najmniej marna.
Pytanie tylko czy da się wydobyć te informacje i czy obliczenia nie będą powodowały lagów.
Ocena 100% będzie dotyczyła komunikacji łączącej 20 miejscowości (ustawialne w parametrach). Tutaj inaczej niż w reszcie punktów wartość powyżej 100% byłaby jedynie dzielona przez 3, ale maksymalna ilość punktów byłaby ograniczona do 300 (przy znaczeniu tej komunikacji na poziomie 100%). Czyli połączenie np. 100 miast da 233 punkty (wartość I).
Ilość przetransportowanych pasażerów/poczty nie miała by żadnego znaczenia - łączenie dużej ilości miast i zapewnianie połączeniom odpowiedniej oceny jest znacznie większym wyzwaniem. Co najważniejsze taki sposób oceny nadaje sens Cargodist'owi.
Ustawienia:
Znaczenia - jak dla poprzednich elementów (wartość ZI)
Ilości połączonych miast dla oceny 100%. Zakres: 0-1000, domyślnie: 20

Wersja 2 - ilość dostarczonych do miasta pasażerów i poczty z innych miast oraz tych zabranych z miasta.
Na ocenę 100% składałoby się w równych proporcjach wypełnienie dwóch warunków:
1. Dostarczenie do miasta 1/2 tego co ono "produkuje" - 50% oceny
2. Przetransportowanie poza miasto co najmniej 1/2 jego pasażerów+poczty - 50% oceny
Ocena 100% byłaby maksymalną wartością dającą 100 punktów (wartość I oraz ZI)

Wersja 3 - post nr 15

******************************************************************************************************************************
Energia elektryczna
Tutaj obliczenia powinny być zależne od wyboru podstawowego ustawienia dla tego elementu:
1. Nie uwzględniaj elektryczności - brak wpływu, no i obliczeń
2. Tylko produkcja energii elektrycznej - dostawy węgla do elektrowni byłyby odnotowywane jako produkcja i dostawa elektryczności do miast przypisanych do elektrowni
3. Produkcja i transport energii elektrycznej (WIRES.grf) - wyprodukowany prąd trzeba dostarczyć do trafostacji, aby dostawa była odnotowana
4. Wired? - w tej chwili nie ma takiej funkcji, więc na razie odpada.
Znaczenie:
Same dostawy/produkcja prądu nie rozwijałaby miasta. Jednak brak dostaw ograniczałby wpływ przemysłu, handlu oraz budownictwa na rozwój.
Zapotrzebowanie (ogólnie):
Do określonej wielkości miasta dostawy nie byłyby potrzebne. Wielkość ta powinna być ustawialna w parametrach 1-1 000 000, domyślnie 10 000.
Do wartości domyślnej poziom dostaw energii wynosiłby 100%. Od 10 000 wzwyż dostawy własne stopniowo by malały - wynosiłyby 70%.
Tz. miasto z 20k mieszkańców miałoby zaopatrzenie na poziomie 85%, z 30k mieszkańców: 80%, z 40k mieszkańców: 77% itd.
Rozdział energii:
Tutaj rodzi się pewien istotny problem - przypisywanie elektrowni / trafostacji do miast. Co zrobić gdy jest 200 miast i tylko 20 elektrowni? Produkcja  czy dostarczanie prądu dla każdego z miast z osobna była by zbyt zajmująca, a to się kłuci z podstawowym założeniem tego skryptu. Wydaje mi się, że najlepiej by było uzależnić procent dostaw od odległości miasta od źródła prądu - gdy odległość ta wynosi 50% długości + szerokości mapy, wielkość dostaw otrzymuje 50 punktów, jeśli 80% - 20. (tak byłoby przypisywane każde miasto do każdej elektrowni / trafostacji). Następnie przydział prądu wynosiłby 100/50 dzielone przez sumę ocen każdego z miast. Dla przykładu: Jeśli byłaby jedna elektrownia i cztery miasta z ocenami 5, 20, 30, 80, to do pierwszego trafiałoby 5/135 produkcji / dostaw, do drugiego 20/135, trzeciego 30/135 i czwartego 80/135. Pytanie czy takie przypisanie jest możliwe i czy nie byłoby zbyt zajmujące jeśli chodzi o kodowanie jak i obliczenia w trakcie gry. Tutaj dobrze by było też ograniczyć maksymalną liczbę elektrowni / trafostacji na mapie, aby ograniczyć ilość obliczeń - to powinno być możliwe, podobne możliwości mają co najmniej trzy skrypty m.in. City Buildier oraz Industy Constructor. Znacznie prostszym rozwiązaniem byłoby liczenie produkcji i zapotrzebowania globalnie, ale to już nie będzie to i nie wiem czy byłby wtedy w ogóle sens dodawania elektryczności.
Można jednak dać w parametrach możliwość wyboru rozdziału dostaw - Dostawy energii elektrycznej do miast: 1. Do każdego miasta osobno, 2. Rozdział w zależności od dystansu (domyślnie) 3. Globalnie - wszystkie miasta liczone jako jeden odbiorca
W przypadku pierwszego ustawienia, dobrze by było dać też opcję automatycznej budowy elektrowni / trafostacji dla miasta, które osiągnie domyślną wielkość (10 000). Tz. tylko z tym ustawieniem by ona działała.
Zapotrzebowanie (wartości):
*Dla ustawienia drugiego - tylko produkcja.
Domyślnie miasta wymagałoby dostawy 20 ton węgla /20kl ropy na każde 1000 mieszkańców.
Poza mieszkańcami, również przemysł, handel oraz budownictwo wymagają dostaw prądu: każda 1 jednostka zwiększa zapotrzebowanie o 0,1% czyli też wymagane jest 10 ton na każde 1000 jednostek produkcji/ handlu/ budownictwa.
Ponieważ warunki w grze, ilość miast i wielkości produkcji bywają różne, wartości wymagane powinny być ustawialne w parametrach (1-1000%)
*Dla ustawienia trzeciego - produkcja i transport (WIRES)
Tutaj dość mocno ograniczona jest produkcja prądu w elektrowniach - mogą przetworzyć na prąd maksymalnie 1000 ton węgla co daje 18 000 kWh na elektrownie. Przyjąłbym, że 100k miasto wymaga zaopatrzenia dwóch elektrowni. Czyli wymagane dostawy wynosiłyby 360kWh na 1000 mieszkańców. Tak jak wyżej przemysł, handel i budownictwo zwiększają zapotrzebowanie.
100% i więcej zaopatrzenia w dostawy prądu dawałoby 100 pkt. (Wartości E i ZE) Tutaj nie byłoby modyfikacji znaczenia.
Ustawienia (podsumowanie):
1. Energia elektryczna: Nie uwzględniaj elektryczności / Tylko produkcja energii elektrycznej (domyślne) / Produkcja i transport energii elektrycznej (WIRES.grf)
2. Wielkość miast wymagających dostaw prądu: 1-1 000 000; domyślnie 10 000
3. Rozdział energii elektrycznej: Do każdego miasta osobno / Rozdział w zależności od dystansu (domyślnie) / Globalnie - wszystkie miasta liczone jako jeden odbiorca
4. Wybuduj elektrownie / trafostację dla każdego miasta wymagającego dostaw prądu: Tak / Nie (domyślnie)
5. Wymagane dostawy prądu: 1-1000%; domyślnie 100% (ustawienie zmieniające wymagane dostawy 20t węgla / 360kWh prądu)

******************************************************************************************************************************
******************************************************************************************************************************

Bezrobocie / Wzrost miasta
No i w końcu sedno sprawy. Wszystkie powyższe elementy składają się na poziom bezrobocia w mieście, ten z kolei jest ściśle powiązany z tempem wzrostu miasta. Ze względu na ograniczenie ilości danych trzeba by było wybrać tylko jedną z danych. Mi bardziej odpowiada stopa bezrobocia.
Obliczenia:

Dane:
P - wartość produkcji przedsiębiorstw (0-n)
H - wartość dostaw dóbr (0-n)
B - wartość dostaw materiałów budowlanych (0-n)
C - wartość komunikacji miejskiej (0-100)
I - wartość komunikacji międzymiastowej (0-300)
E - wartość dostaw energii (70-100)

ZP - znaczenie produkcji przedsiębiorstw (0-200)
ZH - znaczenie dostaw dóbr (0-200)
ZB - znaczenie dostaw materiałów budowlanych (0-200)
ZC - znaczenie komunikacji miejskiej (0-200)
ZI - znaczenie komunikacji międzymiastowej (0-200)

"Wzór":
Wartość wymagana dla maksymalnego tempa wzrostu miasta / minimalnego bezrobocia:
ZP+ZH+ZB+ZC+ZI x 100 = B

Wartość uzyskana:
(PxZP + HxZH + BxZB) x E/100 + CxZC + IxZI = A

Wartość tempa wzrostu miasta / bezrobocia
A/B = C

Jeśli C wynosi 1 lub więcej, bezrobocie wynosi 0% / miasto rozwija się w maksymalnym tempie (wartość S)
Jeśli C równa się 0, bezrobocie wynosi 40%
Jeśli C wynosi 0,25 (wartość N) lub mniej, miasto nie rośnie

Parametry skryptu decydujące o szybkości wzrostu miast:
Maksymalne tempo rozwoju miast (S) - domyślnie co 1 dzień
Minimalne tempo rozwoju (M) - domyślnie co 200 dni
Poziom bezrobocia, przy którym miasto przestaje rosnąć (N) - domyślnie 0,25 (w ustawieniach pokazane jako 30% (40% x (1-N)) )

Nowe grafiki, pełną listę ważnych ustawień oraz listę kolorów postaram się jutro dodać. Dzisiaj już nie da rady. Smiley62


Wiadomości w tym wątku
RE: Projekt: skrypt New World Disorder - przez LaChupacabra - 01-03-2016, 02:46
RE: Projekt: skrypt New World Disorder - przez pAter - 15-10-2016, 15:10
RE: Projekt: skrypt New World Disorder - przez pAter - 15-10-2016, 17:42
RE: Projekt: skrypt New World Disorder - przez pAter - 17-10-2016, 17:15
RE: Projekt: skrypt New World Disorder - przez pAter - 09-11-2016, 20:49

Skocz do:

[-]
Zamknięcie forum OpenTTD Polska
Forum OpenTTD Polska zostało wyłączone. Obecnie znajduje się tu archiwum dyskusji o dodatkach tworzonych przez naszą społeczność.
Po aktualne treści i dyskusje zapraszamy na nasz discord! :)

[-]
Discord