16-11-2013, Saturday-20:12:21
Da wir nebenan viel von Wikis und Docu tippen, hier mal nen Text, der
bei mir schon länger auf der Platte rumlungert. Das ist weder vollständig,
noch 100% korrekt. Da sind auch etliche offene Fragen drin. Weder formal
noch linguistisch ist er perfekt. Macht nix. Hoffentlich.
Es ist ein Thema, dass mich bei pak64.ho-scale viel beschäftigt hat, und
das immer noch tut. Es ist nicht trivial.
Ich verzichte ausdrücklich auf alle Rechte nach dem Urheberrechtsgesetz.
Nehmt den Text, verbessert ihn, ergänzt ihn, löst die offenen Fragen auf,
werft ihn wohin ihr wollt, aber bitte unter einer freien Lizenz.
-------------------
Einflussmoeglichkeiten der Pakset-Autoren auf die
Automatische Generierung von Gebaeuden - ein Versuch
einer Naeherung
1. Man stelle sich einen multidimensionalen Vektorraum vor.
Die Dimensionen seien, auf Gebaeude bezogen:
- Art
- Zeit, hier: Bauperiode
- Haeufigkeit
- Zahl der Alternativen
- "level"
Die Wahrscheinlichkeit, welches Gebaeude gebaut wird, sei ein
Punkt in diesem Vektorraum. Betrachten wir die Dimensionen
als Parameter, so ergeben fuer Pakset-Autoren verschiedene
Moeglichkeiten, einzugreifen.
Die Wahrscheinlichkeit, wann und wo ein Gebaeude gebaut wird,
wird durch andere Parameter bestimmt, die hier nur am Rande
gestreift werden sollen.
- Stadtgroesse
- Tempo des Wachstums
- Mass der Erschliessung der Stadt,
hier: Anschluss an und Abdeckung mit
Verkehrsinfrastruktur
- Besiedlungsdichte
- Aufbau des Stadtstrassennetzes
Diese Parameter bedingen sich teilweise gegenseitig. Sie
koennen fast nie vom Autor beeinflusst bzw. genutzt werden
(Ausnahme "build_time" fuer CUR, z.B.)
2. Moeglichkeiten fuer Autoren
- die .dat-Datei
diverse Parameter mit diversen Wertebereichen
- der Dateiname des paks
building.[RES|IND|COM|CUR]xx-yy.pak
bzw fuer Rathaeuser:
building.xx_[yy_][City|city|CITY].pak
Unklar: Alle Einzelheiten des Dateinamens ab "building."
scheinen optional zu sein. Wie verhaelt sich das System
bei anderen Namen?
Unklar: Es scheint keine offizielle Dokumentation
der Stellen "xx" und "yy" zu geben. Hierzu werden im
folgenden nur Vermutungen geaeussert, die auf eigenen
Erfahrungen und etwas ungenauen Formulierungen aus
Foren-Diskussionen beruhen.
- Setzen von default-Parametern in der simuconf.tab
Da dies das Verhalten das Systems nur bedingt
beeinflusst, meistens nur abbremst, wird hier nicht
weiter darauf eingegangen. Wichtiger erscheinen die
ersten beiden Moeglichkeiten.
3 im Einzelnen
- Die Art des Gebaudes wird im Dateinamen des .pak
angegeben, definiert durch den Parameter "type" in
der .dat-Datei:
Wertebereich:
res = Wohngebaeude
ind = Indutriegebaude (_nicht_ Fabriken!)
com = Gewerbegebaeude
cur = Sehenswuerdigkeit
tow = Rathaus
mon = Denkmal
hq = Firmensitz
- Die Bauperiode wird durch selbsterklaende Parameter in
der .dat-Datei definiert:
"intro_year"
"intro_month"
"retire_year"
"retire_month".
Alle Angaben sind optional:
- Wird "intro_*" nicht gesetzt, ist das Gebaeude immer
von Anfang an verfuegbar.
- Wird "*_month" nicht gesetzt, beginnt/endet die
Bauperiode zum 1.1. des angegebenen Jahres.
- Wird "retire_*" nicht gesetzt, endet die Bauperiode
nie.
Wertebereich: Sinnvolle Angaben in Jahren [und Monaten]
- Die Haeufigkeit des Erscheinens wird ueber die
Wahrscheinlichkeit des Baus gesteuert, definiert durch
den Parameter "chance" im .dat.
Wertebereich: "0" bis "100"
Die Werte sind nicht absolut, sondern werden im Vergleich
zu den anderen Werten alternativer Objekte gleicher Art
und gleichen Levels bewertet. Hieraus berechnet die AI
dann Zufallszahlen und baut mit passender Verteilung.
- Alternativen
sind Gebaeude gleichen Levels und gleicher Art definiert
durch die Stellen "yy" im Dateinamen des .pak. Hieraus
sucht sich die AI zufallsgesteuert passende Gebauede
(natuerlich nur, falls sie in die Bauperiode passen).
Wertebereich "01" bis vermutlich "99".
- "level"
Der Parameter setzt die Passagier- und Postgenerierung,
sowie den Wert des Gebaeudes. Je aelter (in Spielzeit)
die Besiedlung ist, desto hoeher die Level der Gebaeude,
die die AI baut.
Gebaeude hoeheren Levels sollten also groessere oder
anderweitig leistungsfaehigere Gebaeude sein. Dies ist
unabhaengig von der Zeitleiste, es geht also nicht um
"modern" versus "unmodern".
Unklar:
"level" kann vermutlich sowohl durch die Stellen "xx"
im Dateinamen des .pak als auch durch den Parameter
"level" in der .dat-Datei definiert werden.
Unklar:
Was hat Vorrang, wenn beide Methoden benutzt werden?
Unklar:
Laut Forendiskusion berechnet sich der Wert eines
Gebaeudes: [level] mal 1000. Ob es fuer Passagiere und
Post einen Faktor mit welchem Wert gibt, ist hier noch
nicht bekannt.
Wertebereich: Unklar, vermutlich "00" bis mindestens
"64" im Dateinamen und "1" bis mindestens "64" beim
Parameter "level" im .dat.
- Stadtgroesse und Wachstum haben zwar Einfluss auf die
Generierung, koennen aber nur
a) direkt als Oeffentliche Hand mit den passenden
Werkzeugen (mehr/weniger Einwohner)
b) indirekt ueber das Spiel per sauberer Versorgung mit
Verkehrs-Infrastruktur
beeinflusst werden. Bei der Generierung werden dann
hoehere Level in aelteren Stadtteilen (normalerweise das
Zentrum um das Rathaus) schneller oder langsamer erreicht,
sowie das Tempo der Ausdehnung der Stadt beeinflusst.
Autoren koennen nicht als "Stadtplaner" eingreifen.
Spieler koennen das Wachstum der Stadt abstellen und
selbst bauen.
4 Konsequenzen/Verschiedenes
- Einen "Denkmalschutz" gibt es nur fuer Denkmaeler,
Sehenswuerdigkeiten und Hauptquartiere.
RES, COM, und IND koennen per default jederzeit von der
AI ueberbaut werden. Nur das Abschalten des Stadtwachstums im
Dialogfenster der Stadt verhindet das - dann wird aber
nichts mehr gebaut.
- Ein automatisches Upgrade mit Gebauden gleichen Levels
und gleicher Art entlang der Zeitleiste gibt es nur bei
Rathaeusern. Ein vorgegebener Austausch der Grafiken im
Sinne von "Modernisierungen" ist bei allen anderen
Gebaeuden nicht moeglich.
Verlangen modernere Rathaeuser mehr Kacheln, kann es sein,
dass das neue Rathaus "springt", auch an eine Stelle
ausserhalb der besiedelten Flaeche.
- Die AI kann zwar RES, COM und IND mit mehr als einer
Kachel auswaehlen, wird jedoch nur eine Kachel belegen
und auch nur diesen Teil der Grafik darstellen. Dies
fuehrt zu unbefriedigenden Ergebnissen.
Wird jedoch der Parameter "Chance" auf "0" gesetzt,
kann der Spieler selbst groessere Gebaeude bauen.
Unklar:
Es waere schoen zu wissen, ob dies in Zukunft auch
weiter funkionieren wird.
- Fuer den Bau von Gebaeuden auf Hangflaechen wird die AI
die Kacheln immer anheben. Gebaeude direkt an Hangflaechen
(also _ohne_ die Kachel anzuheben sind nur moeglich, wenn
der Parameter "chance" auf "0" gesetzt wird, und der
Spieler die Hangflaeche selbst absenkt und dann baut.
Unklar:
Es waere schoen zu wissen, ob dies in Zukunft auch
weiter funkionieren wird.
- Die Beeinflussung der Ausrichtung im Sinne von
"Strassenseite des Baus immer zur Strasse hin - Eckbauten
immer an Strassenecken" ist derzeit nicht automatisiert
moeglich. Es gab einen Thread im Forum dazu, hierzu ist
aber von Seiten der Entwickler vermutlich nichts geplant.
Lediglich der Spieler kann beim Selbstbauen die
Ausrichtung im Bau-Dialog auswaehlen.
bei mir schon länger auf der Platte rumlungert. Das ist weder vollständig,
noch 100% korrekt. Da sind auch etliche offene Fragen drin. Weder formal
noch linguistisch ist er perfekt. Macht nix. Hoffentlich.
Es ist ein Thema, dass mich bei pak64.ho-scale viel beschäftigt hat, und
das immer noch tut. Es ist nicht trivial.
Ich verzichte ausdrücklich auf alle Rechte nach dem Urheberrechtsgesetz.
Nehmt den Text, verbessert ihn, ergänzt ihn, löst die offenen Fragen auf,
werft ihn wohin ihr wollt, aber bitte unter einer freien Lizenz.
-------------------
Einflussmoeglichkeiten der Pakset-Autoren auf die
Automatische Generierung von Gebaeuden - ein Versuch
einer Naeherung
1. Man stelle sich einen multidimensionalen Vektorraum vor.
Die Dimensionen seien, auf Gebaeude bezogen:
- Art
- Zeit, hier: Bauperiode
- Haeufigkeit
- Zahl der Alternativen
- "level"
Die Wahrscheinlichkeit, welches Gebaeude gebaut wird, sei ein
Punkt in diesem Vektorraum. Betrachten wir die Dimensionen
als Parameter, so ergeben fuer Pakset-Autoren verschiedene
Moeglichkeiten, einzugreifen.
Die Wahrscheinlichkeit, wann und wo ein Gebaeude gebaut wird,
wird durch andere Parameter bestimmt, die hier nur am Rande
gestreift werden sollen.
- Stadtgroesse
- Tempo des Wachstums
- Mass der Erschliessung der Stadt,
hier: Anschluss an und Abdeckung mit
Verkehrsinfrastruktur
- Besiedlungsdichte
- Aufbau des Stadtstrassennetzes
Diese Parameter bedingen sich teilweise gegenseitig. Sie
koennen fast nie vom Autor beeinflusst bzw. genutzt werden
(Ausnahme "build_time" fuer CUR, z.B.)
2. Moeglichkeiten fuer Autoren
- die .dat-Datei
diverse Parameter mit diversen Wertebereichen
- der Dateiname des paks
building.[RES|IND|COM|CUR]xx-yy.pak
bzw fuer Rathaeuser:
building.xx_[yy_][City|city|CITY].pak
Unklar: Alle Einzelheiten des Dateinamens ab "building."
scheinen optional zu sein. Wie verhaelt sich das System
bei anderen Namen?
Unklar: Es scheint keine offizielle Dokumentation
der Stellen "xx" und "yy" zu geben. Hierzu werden im
folgenden nur Vermutungen geaeussert, die auf eigenen
Erfahrungen und etwas ungenauen Formulierungen aus
Foren-Diskussionen beruhen.
- Setzen von default-Parametern in der simuconf.tab
Da dies das Verhalten das Systems nur bedingt
beeinflusst, meistens nur abbremst, wird hier nicht
weiter darauf eingegangen. Wichtiger erscheinen die
ersten beiden Moeglichkeiten.
3 im Einzelnen
- Die Art des Gebaudes wird im Dateinamen des .pak
angegeben, definiert durch den Parameter "type" in
der .dat-Datei:
Wertebereich:
res = Wohngebaeude
ind = Indutriegebaude (_nicht_ Fabriken!)
com = Gewerbegebaeude
cur = Sehenswuerdigkeit
tow = Rathaus
mon = Denkmal
hq = Firmensitz
- Die Bauperiode wird durch selbsterklaende Parameter in
der .dat-Datei definiert:
"intro_year"
"intro_month"
"retire_year"
"retire_month".
Alle Angaben sind optional:
- Wird "intro_*" nicht gesetzt, ist das Gebaeude immer
von Anfang an verfuegbar.
- Wird "*_month" nicht gesetzt, beginnt/endet die
Bauperiode zum 1.1. des angegebenen Jahres.
- Wird "retire_*" nicht gesetzt, endet die Bauperiode
nie.
Wertebereich: Sinnvolle Angaben in Jahren [und Monaten]
- Die Haeufigkeit des Erscheinens wird ueber die
Wahrscheinlichkeit des Baus gesteuert, definiert durch
den Parameter "chance" im .dat.
Wertebereich: "0" bis "100"
Die Werte sind nicht absolut, sondern werden im Vergleich
zu den anderen Werten alternativer Objekte gleicher Art
und gleichen Levels bewertet. Hieraus berechnet die AI
dann Zufallszahlen und baut mit passender Verteilung.
- Alternativen
sind Gebaeude gleichen Levels und gleicher Art definiert
durch die Stellen "yy" im Dateinamen des .pak. Hieraus
sucht sich die AI zufallsgesteuert passende Gebauede
(natuerlich nur, falls sie in die Bauperiode passen).
Wertebereich "01" bis vermutlich "99".
- "level"
Der Parameter setzt die Passagier- und Postgenerierung,
sowie den Wert des Gebaeudes. Je aelter (in Spielzeit)
die Besiedlung ist, desto hoeher die Level der Gebaeude,
die die AI baut.
Gebaeude hoeheren Levels sollten also groessere oder
anderweitig leistungsfaehigere Gebaeude sein. Dies ist
unabhaengig von der Zeitleiste, es geht also nicht um
"modern" versus "unmodern".
Unklar:
"level" kann vermutlich sowohl durch die Stellen "xx"
im Dateinamen des .pak als auch durch den Parameter
"level" in der .dat-Datei definiert werden.
Unklar:
Was hat Vorrang, wenn beide Methoden benutzt werden?
Unklar:
Laut Forendiskusion berechnet sich der Wert eines
Gebaeudes: [level] mal 1000. Ob es fuer Passagiere und
Post einen Faktor mit welchem Wert gibt, ist hier noch
nicht bekannt.
Wertebereich: Unklar, vermutlich "00" bis mindestens
"64" im Dateinamen und "1" bis mindestens "64" beim
Parameter "level" im .dat.
- Stadtgroesse und Wachstum haben zwar Einfluss auf die
Generierung, koennen aber nur
a) direkt als Oeffentliche Hand mit den passenden
Werkzeugen (mehr/weniger Einwohner)
b) indirekt ueber das Spiel per sauberer Versorgung mit
Verkehrs-Infrastruktur
beeinflusst werden. Bei der Generierung werden dann
hoehere Level in aelteren Stadtteilen (normalerweise das
Zentrum um das Rathaus) schneller oder langsamer erreicht,
sowie das Tempo der Ausdehnung der Stadt beeinflusst.
Autoren koennen nicht als "Stadtplaner" eingreifen.
Spieler koennen das Wachstum der Stadt abstellen und
selbst bauen.
4 Konsequenzen/Verschiedenes
- Einen "Denkmalschutz" gibt es nur fuer Denkmaeler,
Sehenswuerdigkeiten und Hauptquartiere.
RES, COM, und IND koennen per default jederzeit von der
AI ueberbaut werden. Nur das Abschalten des Stadtwachstums im
Dialogfenster der Stadt verhindet das - dann wird aber
nichts mehr gebaut.
- Ein automatisches Upgrade mit Gebauden gleichen Levels
und gleicher Art entlang der Zeitleiste gibt es nur bei
Rathaeusern. Ein vorgegebener Austausch der Grafiken im
Sinne von "Modernisierungen" ist bei allen anderen
Gebaeuden nicht moeglich.
Verlangen modernere Rathaeuser mehr Kacheln, kann es sein,
dass das neue Rathaus "springt", auch an eine Stelle
ausserhalb der besiedelten Flaeche.
- Die AI kann zwar RES, COM und IND mit mehr als einer
Kachel auswaehlen, wird jedoch nur eine Kachel belegen
und auch nur diesen Teil der Grafik darstellen. Dies
fuehrt zu unbefriedigenden Ergebnissen.
Wird jedoch der Parameter "Chance" auf "0" gesetzt,
kann der Spieler selbst groessere Gebaeude bauen.
Unklar:
Es waere schoen zu wissen, ob dies in Zukunft auch
weiter funkionieren wird.
- Fuer den Bau von Gebaeuden auf Hangflaechen wird die AI
die Kacheln immer anheben. Gebaeude direkt an Hangflaechen
(also _ohne_ die Kachel anzuheben sind nur moeglich, wenn
der Parameter "chance" auf "0" gesetzt wird, und der
Spieler die Hangflaeche selbst absenkt und dann baut.
Unklar:
Es waere schoen zu wissen, ob dies in Zukunft auch
weiter funkionieren wird.
- Die Beeinflussung der Ausrichtung im Sinne von
"Strassenseite des Baus immer zur Strasse hin - Eckbauten
immer an Strassenecken" ist derzeit nicht automatisiert
moeglich. Es gab einen Thread im Forum dazu, hierzu ist
aber von Seiten der Entwickler vermutlich nichts geplant.
Lediglich der Spieler kann beim Selbstbauen die
Ausrichtung im Bau-Dialog auswaehlen.