TT-MS Headquarters
Industrien, und wie sie entstehen ;) - Druckversion

+- TT-MS Headquarters (https://www.tt-ms.de/forum)
+-- Forum: Allgemeines rund um Transport Tycoon (/forumdisplay.php?fid=71)
+--- Forum: Allgemeines zu OpenTTD (/forumdisplay.php?fid=20)
+--- Thema: Industrien, und wie sie entstehen ;) (/showthread.php?tid=6302)



Industrien, und wie sie entstehen ;) - Bernhard - 05.06.2014 13:00

kleine Frage an die Code-Kenner: welche Mechanik/Regel stehen hinter/vor der Ansiedlung von Industrien?


RE: Industrien, und wie sie entstehen ;) - planetmaker - 05.06.2014 13:29

Wie so häufig: das kommt drauf an Lächeln

zum einen gibt's eine Einstellung, die festlegt, ob nur eine oder mehrere gleiche Industrien pro Ortschaft auf der Karte platziert werden dürfen.
Darüber hinaus hat jede Industrie, auch die normalen, Regeln, wo sie platziert werden können (auf Wasser, muß nahe dem Kartenrand sein, nicht auf Schnee, nur auf Schnee, auf einem Stadthaus, auf ebenem Gelände, nicht vor 1970, nur nach 1970...

NewGRF-definierte Industrien können dann ihre beliebigen, eigenen Regeln festlegen, so dass auch sowas wie die Bauernhof-Cluster in FIRS geht.

Jede Industrie definiert als eine ihrer Eigenschaften (properties) eine relative Häufigkeit. Diese Häufigkeit wird bei der Kartenerstellung und auch während des Spiels genutzt, um entsprechend eine ausgewogene Anzahl Industrien zu generieren. Wenn es darum geht, eine neue Industrie zu gründen, werden unterrepräsentierte Industrietypen bei der Zufallsauswahl bevorzugt


RE: Industrien, und wie sie entstehen ;) - Bernhard - 05.06.2014 13:48

ok,
also schon komplizierter.
Machen wir es mal einfach Cool
Standard-Karte. Keine Industrie-GRF
Nur Land.
1 Stadt in der Mitte der Karte.

Wenn ich jetzt die Zeit laufen lasse .... welche Regeln gibt es dann?
Zufallsgenerator?
Alle x Jahre in die Subroutine Industriegründung springen,
dann per Zufall eine Industrieart ausgucken. Wenn die schon da ist, und nur eine erlaubt ist -> Ende
Wenn noch nicht da, -> neue Zufallroutine: bauen ja/nein

??


RE: Industrien, und wie sie entstehen ;) - planetmaker - 05.06.2014 14:50

Es wird monatlich eine Statistik zwischen tatsächlicher Industriezahl und angestrebter Industrienzahl erstellt. Hinzu kommt ein geringer Bonus auf die gewünschte Zahl, wenn alle Industrien bedient werden.

In der täglichen Schleife wird gewürfelt, ob eine neue Industrie gegründet wird, mit einer 3% ... 9% Wahrscheinlichkeit (um so größer, je mehr benötigt werden). Dann wird geguckt, was fehlt. Fehlt ein Industrietype und wir haben keine Rezession, so wird versucht diese zu bauen. Ansonsten, wenn keine Rezession ist und keine Industrie übermäßig fehlt, so wird versucht, eine zufällige Industrie gemäß den Wahrscheinlichkeiten zu bauen.
Wenn somit entschieden ist, welche Industrie gebaut wird, wird das maximal 2000 oder 10000 Mal (sie fehlt und soll wirklich gebaut werden) an zufälligen Stellen versucht, sie zu errichten. Ob das klappt hängt davon ab, ob sie bei einem der Versuche gemäß ihren Regeln für die Umgebung, freien und richtig geformten Untergrund, was-auch-immer an der ausgewürfelten Stelle platziert werden kann.

Mehr Details in src/industry_cmd.cpp in den Methoden
void IndustryBuildData::TryBuildNewIndustry()
void IndustryBuildData::MonthlyLoop()
void IndustryDailyLoop()
und dann daraus rückwärts lesen.


RE: Industrien, und wie sie entstehen ;) - Bernhard - 05.06.2014 14:53

Idee
ok.
Danke für die Infos.
Bei den ganzen Ausnahmen muss man sich ja wundern, wie oft es trotzdem klappt Zwinkern


RE: Industrien, und wie sie entstehen ;) - Eddi - 05.06.2014 15:11

Die Gesamtanzahl an (wünschenswerten) Industrien wird nochmal mit der Kartengröße und der abgelaufenen Spielzeit modifiziert, und auf größeren Karten wird auch öfter gewürfelt, ob eine neue Industrie gebaut werden soll.

Bis auf die Einstellung "Nur eine Industrie gleichen Typs pro Stadt" hat die Anzahl der Städte keine Auswirkungen.


RE: Industrien, und wie sie entstehen ;) - Bernhard - 06.06.2014 07:05

(05.06.2014 14:50)planetmaker schrieb:  ...
Mehr Details in src/industry_cmd.cpp in den Methoden
void IndustryBuildData::TryBuildNewIndustry()
void IndustryBuildData::MonthlyLoop()
void IndustryDailyLoop()
und dann daraus rückwärts lesen.

Hast du dazu mal eine Link? Würde ich mich ja gerne mal einlesen.


RE: Industrien, und wie sie entstehen ;) - planetmaker - 06.06.2014 07:13

'nen anderen als den Source-Code habe ich nicht: http://hg.openttd.org/openttd/trunk.hg/file/727c9046a19c/src/industry_cmd.cpp


RE: Industrien, und wie sie entstehen ;) - Bernhard - 06.06.2014 09:05

doch, ja, liest sich interessant .............. vor allem wenn ich an mein BASIC der frühen 80er Jahre denke großes Grinsen
Aber verstehen kann ma es durchaus!

Danke für den Link, der fehlte mir irgendwie noch.