Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Einflussmöglichkeiten der Pakset-Autoren auf die Automatische Generierung von Gebäuden
#1
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.
Zitieren
#2
Dateiname (oder Objektname) hat keinen Einfluss auf Generierung. Ist nur relevant, wenn ein Savegame geladen wird, damit das Programm raten kann, wie fehlende Gebaeude ersetzt werden.

Level: wird nur durch den Parameter 'level' bestimmt, Dateiname hat keinen Einfluss. Wertebereich: 16bit. Die meisten Paksets kommen kaum in den dreistelligen Bereich.

Denkmalschutz: Man kann Haeuser kaufen, die dann nicht ueberbaut werden.

Automatisches Upgrade: gibts nicht. Gebaeude werden nur durch andere mit hoeherem Level ersetzt. Rathaeuser werden nur umgebaut, wenn die Bevoelkerung waechst (Parameter build_time = benoetigte Bevoelkerung).

Gebaeuder mit Flaeche groesser als 1x1: werden nicht korrekt gebaut. Vielleicht kommt das irgendwann. Abgeschafft werden solche Typen sicher nicht.

Bauen auf Hangflaechen: Keine Aenderungen geplant.

Ausrichtung zur Strasse hin: sollte moeglich sein. Zitat aus simcity.cc:
Code:
    /*******************************************************
        * this are the layout possible for city buildings
    ********************************************************
    dims=1,1,1
    +---+
    |000|
    |0 0|
    |000|
    +---+
    dims=1,1,2
    +---+
    |001|
    |1 1|
    |100|
    +---+
    dims=1,1,4
    +---+
    |221|
    |3 1|
    |300|
    +---+
    dims=1,1,8
    +---+
    |625|
    |3 1|
    |704|
    +---+
    ********************************************************/
+-| sind Strassen, dims ist der Parameter in der dat-Datei. 0-8 sind die benoetigten Grafiken (0-8 ist der Index der Rotation).

Hoffe, das hilft weiter.

Zitat:1. Man stelle sich einen multidimensionalen Vektorraum vor.
Da musste ich schmunzeln, bin beruflich etwas vorbelastet, was 'Vektorraum' angeht. Darfs auch ein Hilbertraum sein? Big Grin
Zitieren
#3
Die meisten brauchen für den Vektorraum schon ein eigenes Wiki. Big Grin
Wenn der Text als Anleitung gedacht ist, sollte er doch allgemein verständlich geschrieben sein. Und "Bilder sagen mehr als 1000 Worte" nicht vergessen.
Zitieren
#4
Noch was, im aktuellen Nightly ist noch ein Parameter hinzugekommen,d er Blockbebauung bevorzugen kann. Ist "cluster_factor" in der simuconf.tab auf einen Wert groeßer eins gesetzt und gibt es Gebaude, die in ihrem Dat-File den Wert "clusters" gesetzte haben (kann eine Liste von 1...31 sein, z.B. 1,4,17 ) dann werden Gebäude mit gleicher Clusternummer bevorzug (chance*cluster_factor) nebeneinander gebaut.
Zitieren
#5
Dankeschön! Da läßt sich bestimmt einiges daraus basteln ^^
Zitieren
#6
stellt sich mir wieder die Frage, warum man nicht gleich ne Wikiseite dafür verwendet ( kann einfach ne neue Seite sein, die erst eingebunden wird wenn fertig )

wie läufts jetz mit Forum

- einer schreibts
- die nächsten schreiben Korrekturen
- die Korrekturen muss der ursprüngliche Schreiber bei seinem Post einbauen ( zeitaufwendig und fehlerträchtig )
- dann muss noch einer das ganze ins Wiki übertragen ( zur Errinerung, das mit den Umwegen ( pay_for_totaldistance oder wie das war ) steht bis heute nicht im Wiki, weils keiner übertragen hat )

wie wärs direkt im Wiki

- einer schreibts ggf auf ne neue Seite
- der nächste korrigiert und berichtigt
- dann kommt einer und formatierts, weils ihm besser liegt zu formatieren statt zu schreiben
- der nächste hat passende Bilder erstellt und fügt die ein
- dann wirds eingebunden nach Angabe wo ( was teilweise schwierig ist, da es immer wieder Themenüberschneidungen gibt, was man aber über Strukturen/Kategorien/Freetags durchaus handhaben kann )

Ergebnis,ne fertige Seite

parallel hier nen Thread zu machen mit ner Verlinkung und zur weiteren Diskussion ist ja trotzdem möglich

Ganz ehrlich, es macht absolut keinen Unterschied ob man im Forumseditor oder im Wikieditor schreibt. Auf jeden Fall wenns hauptsächlich nur um Text und dessen Formatierung geht.

Aber die Nacharbeit und Übertragung vom Forum ins Wiki macht zusätzliche Arbeit.
Zum einen kann man Aufgrund der Unterschiedlichen Syntax nicht einfach den Quelltext rüberkopieren oder muss dann sehr Umständlich die ganze Formatierung zeitaufwendig umändern.
Zum anderen muss man alles Nachtformatieren, wenn mans als reinen Text rüber kopiert.

Macht beides erheblich viel mehr Aufwand als gleich im Wiki zu schreiben.
Zitieren
#7
Zitate Dwachs:
"Dateiname (oder Objektname) hat keinen Einfluss auf Generierung. Ist nur relevant,
wenn ein Savegame geladen wird, damit das Programm raten kann, wie fehlende
Gebaeude ersetzt werden."

Ah! Das ist mal ne sinnvolle Information! Danke! Nachfrage: Stört sich das Programm
weiteren Zeichen nach dem XX_YY?

"Level: wird nur durch den Parameter 'level' bestimmt, Dateiname hat keinen Einfluss."

Gut. Prima. Danke.

"Wertebereich: 16bit. Die meisten Paksets kommen kaum in den dreistelligen Bereich."

Kein Wunder. Welche Algorhythmus (oder Faktor) schlägt hier eigentlich in welcher
Weise für Passagier- und Postgenerierung zu? Solange ich das nicht weiss, werde ich
mich kaum trauen, höhere Levels zu benutzen. : - )

"Denkmalschutz: Man kann Haeuser kaufen, die dann nicht ueberbaut werden."

Danke! Darauf wäre ich von alleine nie gekommen. Dann kann man wenigstens als
Spieler schöne Altstädte und sowas bauen. Ein schönes Beispiel für die Auswirkungen
fehlender (oder unbekannter) Dokumentation.

"Gebaeuder mit Flaeche groesser als 1x1: werden nicht korrekt gebaut. Vielleicht
kommt das irgendwann."

Gut. Bis dahin kann man aber wenigstens als Spieler Gebäude setzen, die mit
"chance = 0" eingebaut werden.

"Abgeschafft werden solche Typen sicher nicht."

Gut zu wissen.

"Ausrichtung zur Strasse hin: sollte moeglich sein. Zitat aus simcity.cc: (...)"

Klingt gut, aber darüber werde ich wohl noch ein Weile meditieren, bis ich das verstehe. : - )
Meinst Du, dass das Programm diese Ausrichtungen selbst beachtet, oder tippst Du
vom Setzen der Gebäude durch Spieler?

Prissi, das mit den Clustern klingt genial! Wird getestet.

Zitat The Transporter

"Wenn der Text als Anleitung gedacht ist, sollte er doch allgemein verständlich
geschrieben sein."

Jo. Stimmt. Ich habe hier sozusagen meine Notizen abgeworfen und deutlich auf deren
Unvollkommenheit hingewiesen. Macht was draus! : - )

Edit, damit es Frank vielleicht endlich mal versteht: Frank, ich werde mich nicht in Deinem
Wiki anmelden. Nimm es endlich hin. Hör endlich auf, jeden 2. Thread auf Dein Lieblingsthema
umzubiegen und rumzumeckern. Je mehr Du meckerst, desto besser pflegst Du meine
Abneigung (offensichtlich nicht nur meine). Der Text ist frei, nehme ihn und mach, was Du
willst, aber lass mich in Ruhe. Bitte.

Danke.
Zitieren
#8
Rainer,'index.php?page=Thread&postID=99361#post99361' schrieb:...

"Wertebereich: 16bit. Die meisten Paksets kommen kaum in den dreistelligen Bereich."

Kein Wunder. Welche Algorhythmus (oder Faktor) schlägt hier eigentlich in welcher
Weise für Passagier- und Postgenerierung zu? Solange ich das nicht weiss, werde ich
mich kaum trauen, höhere Levels zu benutzen. : - )
....

schaue und staune soferns noch stimmt

wobei die Seite eigentlich genau das selbe aussagt, nur das die ganzen neuen Sachen der letzten 3 Jahre fehlen

keine Ahnung warum das Wiki von diversen Leuten schlicht ignoriert wird, obwohl es schon viele Informationen gerade im Entwicklerteil zu bieten hat
liegt wahrscheinlich auch an der Abneigung von Leuten gegen Sachen die ihren Vorstellungen in irgend einer zu wieder sind

man sollte auch mal über seinen eigenen Schatten springen statt es auf andere abzuwälzen nur weil man selber irgendwas gegen irgendwas hat
mir hat auch vieles nicht gepasst und ich musste es hinnehmen oder in Konsequenz aufhören damit
Zitieren
#9
Die automatisch ersetzung von Gebäuden nimmt den Anfang (ind, com, res, cur) und die Zahl am ende und ignoriert die Mitte. Level über Hundert sind nicht so sinnvoll (es sei denn man hat 900 Gebäude), denn es ist besser mehrere Gebäude im gleichen Level zu haben (gibt einfach nettere Städte). Das hängt aber sehr von der letztlichen gestaltung der Grafiken ab und kann eigentlich nur durch Testen optimiert werden.

Soweit ich weiß ist nicht einaml pak128 in diese Level vorgedrungen.
Zitieren
#10
pak128 überspringt glaube auch Level, zumindest damals als ich mit den Dat-Dateien zu tun hatte

ich halte eine Besetzung mit mind. 6 Gebäuden pro Level für nötig, um abwechslungsreiche Stadtansichten zu bekommen

pak64.german hat bei den meisten Leveln 3 Gebäude

kann man sich hier ansehen
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 3 Gast/Gäste