Ruckeln bei S4 spielen

» Siedler Map Source Forum » Technische Hilfe » Ruckeln bei S4 spielen

Seiten: 1

Zaubermond
#1
08.02.2011 21:20
Beiträge: 540

Ruckeln bei S4 spielen

Hi, Mapper und Siedlerspieler.
Ich hatte einige Map’s in letzter Zeit gespielt und immer wieder das Problem, dass das Spiel anfängt zu Ruckeln. Immer dann wenn im Spiel mehr als ca.3500 Soli rumwusseln.
Habe nur ich das Problem oder geht es euch auch so? Einige spiele musste ich abbrechen, denn es ging gar nichts mehr. Dabei habe ich schon ein 2,66 Ghz CPU Kern.

Vg.
Zaubermond

____________________
Liebe Siedler Spieler, in jeder Map die wir euch zu Verfügung stellen, steckt sehr viel Zeit und Arbeit drin. Um uns in der Arbeit zu stärken, freuen wir uns über jeden Kommentar, Lob, Anregung oder auch Kritik um uns zu verbessern. Also schreibt uns, was das Zeug hält. Vielen Dank und Grüße Zaubermond

fighty
#2
08.02.2011 23:53
Beiträge: 3616

Hi Zaubermond.

S4 (auch S3) können ca 30 000 Siedler verwalten. Aber wenn irgendwo einer der gefürchteten Siedlerstaus auftritt reichen schon einige hunderte Beteiligten den PC in die Knie zu zwingen. Tritt dies bei einem Feind auf ist der Stau für dich noch nicht mal sichtbar. Das sollte aber nur wenige Maps betreffen.

Luke
Moderator Siedler 3/Siedler 4
#3
10.02.2011 12:04
Beiträge: 604

Auf Siedler 4 Maps gibt es eine Begrenzung 10.000 Siedler. Und keine 30.000 Siedler.

____________________

merkel
Moderator Siedler 3/Siedler 4
#4
10.02.2011 13:50
Beiträge: 2470

Langer Post

Hallo Zaubermond,
S4 (und auch S3) werden von heutigen PC mit links erledigt. Man hat schnellere CPUs und ein vielfaches an Speicher, und die Grafik muss nur 2D und animierte Gifs verarbeiten.

Das Ruckeln hat mind. 3 Ursachen:

Ursache 1:
In Windows 98 Zeiten waren 16-bit Anwendungen üblich. Jedes Spiel (auch S3) hat im Hintergrund eine riesige Datenbank. Zu jeder Koordinate in der Map gibt es zusätzliche Eigenschaften, die (vermutlich bitweise) den Koordinaten zugeordnet sind (fighty müsste da mehr wissen ); z.B. Grass, Meer, Wüste, Höhe usw. und darauf Baum, Strauch, Stein, Fluss, Fisch, Hammer usw.

Für die beweglichen Elemente (Siedler) muss die Datenbank wissen, a) wo steht er; b) darf er eigenes Land verlassen (Solis, Pios, Priester) c) oder nicht (Träger), d) wohin soll er gehen, e) transportiert er was, f) sieht er Gegner in der Nähe, g) wird er gerade bekämpft oder h) eliminiert, i) hat er einen Auftrag oder j) darf er Pio/Dieb werden usw. usw.

Im Falle einer LV kann kein Turm erreicht oder erobert werden, daher hat keiner der frei beweglichen Solis einen Auftrag.

Entsteht nun ein eroberbarer Turm neu, ändert sich das auf einen Schlag: Zig Solis bekommen einen Auftrag (Turm erobern).
Nicht nur das: Da jeder Soli auf einer Koordinate steht, kann dort kein zweiter stehen, sondern nur nebendran. Gleichzeitig berechnet die KI den kürzesten Weg für jeden Soli neu (daher laufen Solis mitunter ganz verschiedene Wege zum Ziel).
Also: Der PC bekommt ordentlich Arbeit.

Ursache 2:
Können die Berechnungen im RAM erledigt werden, dürfte das kein Problem sein. Bei Windows 98 war RAM, auf das die CPU direkt zugreifen konnte, auf ~64.000 Byte beschränkt (das war eine Einschränkung aus DOS-Zeiten [manche erinnern sich vielleicht noch an "Quemm" und "upper memory"]), der Rest wurde mit Banking und virtuellem Speicher simuliert (auslagern).

Irgendwann kommt das Betriebssystem nicht mehr nach mit auslagern und einlesen, die CPU-Last für den sog. Kernel steigt, und das Spiel "steht", weil die benötigten Datenbankdaten nicht rechtzeitig zur Berechnung ins RAM übertragen werden (rechnen ist nur mit Daten im RAM möglich! [und wer Assemblerprogramme noch kennt, weiss: Alle Daten müssen einzeln in das A-Register der CPU geladen werden (nur dort wird gerechnet - ein Flaschenhals aller Intel-Prozessoren!)] und das Ergebnis zurück ins RAM geschrieben werden). Daher das Ruckeln.

Ursache 3:
Staus entstehen wohl aus einem Programmierfehler in S3/S4. Es kann nicht entschieden werden, wohin ein Siedler seinen nächsten Schritt macht.

Ein Stau entsteht immer aus 2 Siedlern, die auf 2 Koordinaten hin- und herhüpfen. Für alle Siedler weiter weg bedeutet das: Da wird eine Koordinate frei, der Weg darf diese Koordinate nutzen. Es kommt aber nicht dazu, weil der andere hüpfende Siedler die Koordinate zuerst besetzt! D.h. Siedler weiter weg können diese angeblich freie Koordinate nie betreten: Stau! Und jede erneute Wegberechnung für alle Stau-Siedler führt zum selben unbrauchbaren Ergebnis: Das Spiel dreht sich im Kreis, es "stoppt" an dieser Stelle.

Hier haben die Programmierer eine Routine vergessen, die etwa folgendes überprüfen müsste: Wenn zwei Siedler mehr als z.B. 5 mal hintereinander die gleichen Koordinaten betreten sollen, muss diese Koordinate zeitweise gesperrt werden und alle Wege sind dann neu zu berechnen. War wohl in Windows 98 nicht machbar, weil der Rechenaufwand exponential ansteigt.

Manchmal stehen Solis unbeweglich um einen Turm rum. (sie drehen sich auf der Stelle, verlassen ihren Standort aber nicht). Plötzlich bewegen sich alle wie auf Kommando (sie "erschrecken" regelrecht, besetzte Wegepunkte werden frei!); das ist so eine S3-Routine, um Staus aufzulösen. Sie funktioniert aber nicht immer.

Fazit:
Für den Spieler heisst das: Setze Gebäude immer so, dass Wege frei bleiben (an Eckpunkten von Meer, Sumpf usw.)

Für den Mapper heisst das: Teste genau diese Eckpunkte; evtl. muss ein Pixel Land oder Meer geändert werden, bis es zu 99% (mehr ist nicht) funktioniert.

Mit diesem Hintergrundwissen lässt sich Ruckeln verzögern, aber leider nie ganz vermeiden.

So, das war jetzt ein langer Post, hoffe aber, er trägt zum Verständnis bei.

LG merkel

Seiten: 1

SiteEngine v1.5.0 by nevermind, ©2005-2007
Design by SpiderFive (www.siedler-games.de) - English translation by juja

Impressum