Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Frage zum growthfactor
#1
Für den nächsten XC möchte ich gerne ein paar Änderungen am pak64.german vornehmen, u.a. am growthfactor. Was er bewirkt weiß ich, was mich aber interessieren würde: Lässt sich der Wert in Einwohner pro Monat umrechnen? Das würde es einfacher machen, den Wert anzupassen, sonst stochere ich nur im Nebel.

Wie schon an anderer Stelle erwähnt brüte ich ja inzwischen über dem Wikibook zu C++. Die Hoffnung, solche und ähnliche Fragen in Zukunft durch einen (längeren) Blick in den Code selbst beantworten zu können, hat sich fürs Erste zerschlagen, allerdings bin ich auch noch längst nicht durch das Buch durch. Zumindest die Frage, ob der passenger_factor linear funktioniert (also doppelter Wert, doppelt so viele Passagiere) konnte ich wohl beantworten =).

Fürs erste widme ich mich mal wieder meiner Lektüre, da gibt es bestimmt noch das eine oder andere Aha-Erlebnis. Es macht übrigens durchaus Spaß, den Code zu lesen und zumindest einen kleinen Teil davon auch zu verstehen :].
Join the herd - become a brony!
[Bild: banner_broniesde.png]
Zitieren
#2
Guten Tag 3+4i
Was für ein Pak64.german Spielst du denn?
Ich weis das es von Pak64.german drei verschieden Ausführungen gibt.
:!: Mein Festnetz Internet ist leider etwas langsam. :!:
:!: Deshalb werde ich gelegendlich Eine Simutranspause machen. :!:
:!: Um dann am Meine Simutransprojekte arbeiteten und neu Ordnen zu Können! :!:
Zitieren
#3
@ a0001
Hast Du Dir mal Überlegt, was Deine Frage mit dem Thema zu tun hat???
Zitieren
#4
The Transporter
Mit meiner Frage die ich hier gestern gestellt habe wollte ich von 3+4i wissen welche Pak64.german
er benutzt um damit zu spielen!
Denn es gibt Drei verschiedene Pak64.german Versionen!
Und die unterschieden sich im Detaill die wiederum einen einfluss auf das spielen hat!
:!: Mein Festnetz Internet ist leider etwas langsam. :!:
:!: Deshalb werde ich gelegendlich Eine Simutranspause machen. :!:
:!: Um dann am Meine Simutransprojekte arbeiteten und neu Ordnen zu Können! :!:
Zitieren
#5
Das pak-Set hat mit der Funktionsweise eines Parameters nichts zu tun. Andernfalls hätte ich Angaben dazu gemacht. Ich bin hier schon etwas länger aktiv, ich kann so was ganz gut abschätzen Wink.
Join the herd - become a brony!
[Bild: banner_broniesde.png]
Zitieren
#6
Zitat:Original von 3+4i
growthfactor. Was er bewirkt weiß ich, was mich aber interessieren würde: Lässt sich der Wert in Einwohner pro Monat umrechnen?

Kann ich nichts genaues zu finden, aber das hier scheint interessant:

Vom 19. ins 20.Jahrhundert

Da steht wie aus dem growth_factor und der Anzahl Bewohner das Wachstum berechnet wird.

Das sind dann also Einwohner pro Step.

Wie man steps in Monate umrechnet weiss ich nicht ausm Kopf, aber hat was man mit dem bits_per_month zu tun.

...
// 5 min spaeter
...

bits_per_month konvertiert Spielmonate in die Anzahl Mikrosekunden Echtzeit.

Hilfreich ist jedenfalls das Optionsmenue. Dort stehen die Simloops in Steps pro Spielsekunde. Ich hab eher das Gefuehl es sind Steps pro echter Sekunde. Hm.

Sorry, nicht richtig geholfen zu haben, aber vielleicht bringt dich meine Antwort einen kleinen Schritt weiter.
Zitieren
#7
Zitat:Original von smu42
Kann ich nichts genaues zu finden, aber das hier scheint interessant:

Vom 19. ins 20.Jahrhundert
Ich kenne den Thread Wink. Von dort weiß ich auch, was growthfactor bewirkt und dass ein kleinerer Wert schnelleres Wachstum bedeutet. Das ist aber nur eine qualitative, keine quantitative Aussage. Die Stelle im Code habe ich auch gefunden, soweit ist es auch nicht schwierig zu verstehen. Die Frage ist, wie es dann mit "wachstum" weiter geht. Abgerufen wird die Variable nur in stadt_t:Confusedtep_bau(), allerdings habe ich keine Ahnung, was hier passiert:
Code:
// since we use internall a finer value ...
const int    growth_step = (wachstum>>4);
wachstum &= 0x0F;
Zitat:Da steht wie aus dem growth_factor und der Anzahl Bewohner das Wachstum berechnet wird. Das sind dann also Einwohner pro Step.
Den Hinweis auf step habe ich bisher immer übersehen Rolleyes. Beruht deine Schlussfolgerung auf dem Code oder ist das nur eine Vermutung? Es gibt nämlich z.B. noch einen internen Zähler für die Stadtgröße, der nicht mit der Anzeige im Stadtfenster identisch ist. Deswegen bin ich nicht sicher, ob das Wachstum so einfach direkt in Einwohner umgerechnet werden kann.

Außerdem bleibt noch die Frage, wie oft stadt_t::calc_growth() aufgerufen wird, das dürfte auf jeden Fall mit step zu tun haben. Mir fehlt leider noch eine Möglichkeit, den gesamten Code nach einem Begriff zu durchsuchen, und nicht nur eine einzelne Datei.
Join the herd - become a brony!
[Bild: banner_broniesde.png]
Zitieren
#8
Zitat:Original von 3+4i
allerdings habe ich keine Ahnung, was hier passiert:
Code:
// since we use internall a finer value ...
const int    growth_step = (wachstum>>4);
wachstum &= 0x0F;


"wachstum >> 4"
ist ein Rechts-Shift um 4. Das ist das Gleiche wie eine Division durch 16 mit Abrunden zur naechst kleineren ganzen Zahl. (16=2^4)


"wachstum &= 0x0F"

ist genau das gleiche wie:

"wachstum = wachstum & 0x0F"

0x0F ist die Zahl 15.

& ist die Bitweise Und-Verknuepfung. Es werden also nur die letzten 15 Bits aus wachstum genommen. Das ist also das Gleiche wie der Rest (modulo) aus der Rechnung wachstum / 16.

Insgesamt wird also

(wachstum / 16) modulo 16

gerechnet. Ich empfehle die Funktion mal in Excel/OpenOffice einzugeben. Besonders sinnvoll erscheint mir das modulo momentan nicht. Vermutlich ueberseh ich grad was. Das Dividieren heisst einfach, dass der interne Zaehler um einen Faktor 16 kleiner ist. Das machte man vermutlich um einen anderen Zahlenbereich abzudecken als int.


Zitat:Original von 3+4i

Zitat:Da steht wie aus dem growth_factor und der Anzahl Bewohner das Wachstum berechnet wird. Das sind dann also Einwohner pro Step.
Den Hinweis auf step habe ich bisher immer übersehen Rolleyes. Beruht deine Schlussfolgerung auf dem Code oder ist das nur eine Vermutung?
Es gibt nämlich z.B. noch einen internen Zähler für die Stadtgröße, der nicht mit der Anzeige im Stadtfenster identisch ist. Deswegen bin ich nicht sicher, ob das Wachstum so einfach direkt in Einwohner umgerechnet werden kann.

Oha, da muss ich gestehen, dass das nur eine Vermutung war!


Zitat:Original von 3+4i

Mir fehlt leider noch eine Möglichkeit, den gesamten Code nach einem Begriff zu durchsuchen, und nicht nur eine einzelne Datei.

Mit welchem Programm? Unter Linux auf der Bash (oder cygwin):
Code:
find . -type f -print0 | xargs -0 -e grep -nH -i -e "hiernachsuchich"
(geht bestimmt auch einfacher)
Man kann find mit zB
Code:
-iname "*.c"
auch noch sagen, auf welche Dateinamen man die Suche eingrenzen moechte. Das "-i" bei grep steht dafuer, Gross/Kleinschreibung zu ignorieren.
Zitieren
#9
Ich würde doch eher eine etwas konfortablere Umgebung nutzen, MS Visual C ist umsonst und sehr gut, eclipse oder ein anderes graphisches ProgrammierUI ist auch unter Linux benutzbar.
Zitieren
#10
Ich will mich hier nicht mit den Programmcodes beschäftigen, kann aber von zahlreichen Tests berichten, die möglicherweise die Frage zur möglichen Linearität der Funktion bestätigen.
Ich kann mich noch gut erinnern, wie ich meinen Irrtum aus dem besagten Artikel erkannt hatte :

Bei einem Bevölkerungssprung auf 10.000 hatte ich eine Verdreifachung des growthfactor festgesetzt. In der Folge betrug das Wachstum tatsächlich noch genau ein Drittel.
Ich würde also mal tippen, dass du ungefähr so rechnen kannst.
Zitieren


Gehe zu:


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