Deutsches Simutransforum

Normale Version: Frustrierender Bahnhofsbau
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Simutrans-Version:
ab ca.: 86.07 bis 88.01.3

PAK-Set (+zusätzliche PAK-Dateien):

Betriebssystem:
Win XP
Computer: 1024MB Arbeitsspeicher

Fehler (möglichst genaue Beschreibung):
Umso mehr Städte ich meiner Karte (ca. 1024x1024) hinzufüge umso länger dauert es einen Bahnhof zu bauen. Dieses Problem tritt auch bei kleineren Karten auf. Wenn auf die Schiene klicke um den Bahnhof zu bauen dauert es ca. 15 Sekunden bis ein Kästchen mit dem Bahnhof erscheint. In diesen 15 Sekunden friert das Spiel ein. Am Anfang (bei ca. 5 Städten) kann man noch ohne Probleme Bahnhöfe bauen, doch bei ca. 15 Städten dauert es immer länger und darunter leidet natürlich der Spielspaß. Da dieses Problem bei keinen anderen User auftritt, fürchte ich dass es an meinem Computer liegt. Mein Laptop (nur 512 MB) zeigt die gleichen Symptome. Trotzdem bleibt Simutrans mein absolutes Lieblingspiel! Danke an die Entwickler und Programierer.
Verhalten (Absturz, Einfrieren, ...):
Bei mir ist leider das selbe zu beaobachten. Auch bei Nobody und einem anderen Freund von mir ist es dasselbe zu beaobachten. (wenn auch nicht mit soo langen wartezeiten, aber das spiel friert kurz ein) Alos es wird wohl weder am Computer, als auch am Betriebssystem liegen.
Ich hoffe, das hilft zur Fehlereingrenzung.

martin
Das leigt daran, dass mit einem neuen Tile plötzlich neue Umsteigeverbindugen/Warentypen möglich werden, bzw. neue Fabriken angeschlossen werden könnten. Daher wird über aller Fahrpläne und alle Bahnhöfe iteriert, ob sich was geändert hat und wenn ja die Info upgedated. 15s sollte es aber nur bei 10000 Convois dauern.

Ich schau mal.
Da ich große Städte habe sind es ca. 5000 bis 6000. Alleine 1 von 10 Buslinien in meiner Stadt schluckt ja schon 40 Busse.
hallo zusammen

zuerst mal danke an die entwickler von simu, ist ein tolles game *thumbs up*

ich hab auch das selbe problem. habe 5 städte à ca. 25'000 einwohner und wenn ich z.b. einen bhf baue, dauert es eine ewigkeit bis ein feld erstellt wurde und in der zwischenzeit kann ich nichts machen :evil:

hab ca. 140 züge und 60 busse im einsatz.

SW-version: Simutrans128 88.06.02 auf suse linux 10.0 Prof.
AMD-Athlon XP 2400+ (2008,972MHz)
Apacher DDR-RAM 768MB CL2

gibts da eine lösung? ?(

thx
redsauger
Ich kann versuchen, die Berechnung neuer Routen durch das neue Bahnhofsfeld asynchron zu machen. Nur berechnet werden müssen sie irgendwann immer ...
Wieso müssen denn schon beim Erstellen eines neuen Bahnhofs Routen berechnet werden? Bevor der Bahnhof mit einer Linie erschlossen wird, ist er für den Rest des Spiels ausserhalb seines direkten Einzugsbereichs doch sowieso "nicht vorhanden"?
Weil aus einem Wegpunkt ein Bahnhofshalt gewroden sein könnte oder eine Fabrik neu/besser erschlossen worden sein könnte.
Wäre es ein Ausweg, intern eine Liste mit allen freien Wegpunkten zu führen und zuerst diese auf allfällige Treffer zu durchforsten?
Programmablauf
Ständig sitzt man vor der Kiste und ist zum Zuschauem verdammt, ähnlich beim Autosave.
Ich vermute, die Eingabe (Tatstatur, Maus) wird vom Hauptprogramm abgefragt. Da jetzt aber jedes Unterprogramm erstmal oberwichtig einige Schleife abarbeiten muß, tritt das Hauptprogramm gar nicht mehr in Aktion.
Außer beim Speicher sollte folgendermaßen vorgegangen werden:
Die Schleife wird als "kopfgesteuerte" Schleife (z.B. while - wend) aufgebaut. Jetzt kommt die Initialisierung ins Unterprogramm. Und das Unterprogramm setzt ein Flag, falls der Schleifenzähler nicht gegen Null laufen kann.
Der Schleifenkörper kommt so ins Hauptprogramm, das er bei Bedarf höchstens einmal durchlaufen wird. Die Schlußbedingung setzt das Flag zurück bzw. entfällt, wenn der Schleifenzähler gegen Null läuft.
Nun kann nach jedem einzelnen Durchlauf der Schleife die Eingabe im Hauptprogramm abgefragt werden. Und der Spieler kann (fast) ständig Einfluß auf das Geschehen nehmen.

Anfang Listing

[font=Courier New]Do ; Beginn Hauptprogramm
[font=Courier New]..On menu gosub m_enu ; Abfrage ob irgendetwas anliegt wie Tastatureingabe Mausklick und ggf. bearbeiten.
[font=Courier New]..If Zähl<> 0 ; Schleifenkörper bei Bedarf bearbeiten
[font=Courier New]....Sum=Sum+Zähl
[font=Courier New]....Zähl=Zähl-1
[font=Courier New]....If Zähl=0
[font=Courier New]......Print Sum ; Ergebnisausgabe.
[font=Courier New]....Endif
[font=Courier New]..Endif
[font=Courier New]..On menu gosub m_enu ; Nach jedem einzelnem Durchlauf des Schleifenkörpers wird die Eingabe abgefragt. Wird die Schleife nicht durchlaufen, wird die Eingabe 2-mal hintereinander abgefragt.
[font=Courier New]loop ; Rücksprung Beginn Hauptprogramm.

[font=Courier New]Procedure m_enu
[font=Courier New]..On Klick=1 gosub Klick ; Mit linkem Mausklick wird hier das Addieren der Zahlen von 0-100 gestartet.
[font=Courier New]return

# Vorbereitung des Addierens aller Zahlen von 1-100 im Unterprogramm statt im Hauptprogramm. Oder besser der Zahlen von 100 - 1, weil der Zähler gleichzeitig der Wert ist und rückwärts läuft.

[font=Courier New]Procedure Klick
[font=Courier New]..Sum = 0 ; saldierenden Speicher = 0 setzen.
[font=Courier New]..Zähl = 100 ; Zähler initialisieren
[font=Courier New]return

Ende Listing.

Normal wäre:
[font=Courier New]Procedur m_enu
[font=Courier New]..If Klick = 1
[font=Courier New]....Sum=0
[font=Courier New]....For Zähl = 1 to 101
[font=Courier New]......Sum=Sum+Zähl
[font=Courier New]....Next Zähl
[font=Courier New]....Print Sum
[font=Courier New]..Endif
[font=Courier New]return

Aber was ist heute noch normal?............

Eleganter ist natürlich
[font=Courier New]every 5 gosub m_enu
Möglich in GfA-Basic auf Atari.
Es werden alle 5*20msec = 100msec ein Interrupt ausgelöst und die Eingabe abgefragt. Gefahr hierbei ist natürlich eine mögliche Rekursion falls die Eingabe eine Schleife wie z.B. das Speichern auslöst. Wird immer nur die Initialisierung einer Schleife ausgelöst, besteht die Gefahr der Rekursion eigentlich nicht.

mfG
Hans Dampf.



P.S:
Aus dem Wörterbuch
rekursiv, lat. (siehe auch rekursiv).
Seiten: 1 2