Save laden

Bug #1400339 reported by Benjamin Wettstein
16
This bug affects 3 people
Affects Status Importance Assigned to Milestone
Return To The Roots
Status tracked in S25client
S25client
Fix Committed
Low
Marcus

Bug Description

Diese Map kann nicht mehr geladen werden es meldet immer den Fehler Verbindung zum Server abgebrochen.

Tags: all-rev
Revision history for this message
Spike (fvv1) wrote :

Revision? Karte? Savegame? Mitspieler? OS?

Changed in s25rttr:
status: New → Incomplete
Revision history for this message
Benjamin Wettstein (beni-wettstein) wrote :
Revision history for this message
Benjamin Wettstein (beni-wettstein) wrote :

2 Menschen der Rest sind KI

Revision history for this message
Spike (fvv1) wrote :

Revision? OS?
Replay ggf. noch.

Karte lädt bei mir ohne Probleme. Möglicherweise dauert der Ladevorgang beim Host/Client zulange, dadurch entesteht ein Timeout. Da die Karte nicht offiziell von RttR unterstütz wird...

Revision history for this message
Marcus (marcus) wrote :

Hier läd die Karte auch problemlos. Es liegt tatsächlich am Timeout, weil der Rechner vermutlich nicht schnell genug die Karte läd oder das Netzwerk instabil ist, wenn ihr es mit mehreren Personen versucht. Eventuell könnte es helfen, die optimierten Texturen zu deaktivieren, oder beim Spiel mit mehreren Spielern den anderen Spieler zum Host zu machen. Ansonsten wird das Problem hoffentlich bald eh erledigt sein. :-)

Changed in s25rttr:
assignee: nobody → Marcus (marcus)
importance: Undecided → Low
status: Incomplete → Won't Fix
Revision history for this message
Trebxson (trebxson) wrote :

Marcus (marcus) schrieb:
> Es liegt tatsächlich am Timeout

Und als offenbar einfache Lösung auf ein gravierendes Problem, lässt sich der Timeout nicht erhöhen? Wenigstens bis "bald" vorbei ist? :) ...ich und zwei drei andere haben vermutlich die selben Probleme beim Laden der Karte als Einzelspieler.

Vertex Buffer Objets: Aus
Optimized Textures: Aus
Gibt es weitere Möglichkeiten?

Prozessor: X4 955

> weil der Rechner vermutlich nicht schnell genug die Karte läd

Du scherzt hoffentlich.

Spannend ist unter anderem, dass ein neues Spiel "SpikeWorld" 780 MB belegt, der Ladevorgang später bei 220 MB in den zweiten Status überspringt (780+220=1000 MB, eine weitere Grenze?).

---

Benjamin Wettstein schrieb:
> Diese Map kann nicht mehr geladen werden es meldet immer den Fehler Verbindung zum Server abgebrochen.

Hast du für mich eine Zeitspanne in Sekunden, wann was erscheint?

Bei mir:

Spiel auf -> Einzelspieler -> Spielstand laden
Nach einigen (20?) Sekunden

loading aijh: Computer 1 (KI)
loading aijh: Computer 3 (KI)
loading aijh: Computer 7 (KI)
Verbinde mit 127.0.0.1:3665
Verbindung erfolgreich hergestellt mit localhost:3665

Und im Spiel "Bitte warten"-Fenster.
Nach weiteren (20?) Sekunden

aaahh
SERVER: Reserved slot 3 freed due to ping timeout
Receiving Message from server failed
client forced to stop

Revision history for this message
Trebxson (trebxson) wrote :
Revision history for this message
Benjamin Wettstein (beni-wettstein) wrote :

Folgende Information:
Heute mal als Singleplayer versucht den Spielstand zu laden hat funktioniert.
Im Multi online ging es gestern nicht

Revision history for this message
Trebxson (trebxson) wrote :

> Vertex Buffer Objets: Aus
> Optimized Textures: Aus
> Gibt es weitere Möglichkeiten?

Framerate auf z.B. 30 fps begrenzen.

Hatte 100% CPU-Last (auf einem Kern). Seit dem (und ggf. nach einem Neustart?) nur noch 0-1%.

Spiel lässt sich seit dem im Einzelplayer laden! Multiplayer wird die nächsten Tage geprüft.
Vielen Dank maqs+Spike!

PS: FPS-Begrenzung war vorher auf Default=Deaktiviert (ggf. ein uralter Wert? rttr ist bereits seit Jahren installiert). Spiel lief dabei mit ~200 FPS (im Menü >600).

Revision history for this message
Trebxson (trebxson) wrote :

Spiel Meldung "Verbindung zum Server abgebrochen!" alias "Lost connection to server!" fliegt nach Haltepunkt in src\dskSelectMap.cpp:357

  s25client.exe!dskSelectMap::CI_Error(ClientError ce) Zeile 357 C++
 s25client.exe!GameClient::ServerLost() Zeile 1806 + 0x1d Bytes C++
  s25client.exe!GameClient::Run() Zeile 246 C++
  s25client.exe!GameManager::Run() Zeile 164 C++
  s25client.exe!main(int argc, char * * argv) Zeile 348 + 0xc Bytes C++
  s25client.exe!__tmainCRTStartup() Zeile 555 + 0x19 Bytes C
  s25client.exe!mainCRTStartup() Zeile 371 C

Revision history for this message
Trebxson (trebxson) wrote :

> aaahh
> SERVER: Reserved slot 3 freed due to ping timeout
> Receiving Message from server failed
> client forced to stop

Ping? Pong!

Bitte einbauen und ausliefern. :) (Vielen Dank für die nette Falle :))

GameProtocol.h
---
     NP_LOCAL
 };

 // Wie lange maximal warten, bis Rausschmiss des Spielers
-const unsigned PING_TIMEOUT = 30000;
+const unsigned PING_TIMEOUT = 300000; // mind. 60

 // Ziele fürs Chatten (Ingame)
 enum ChatDestination

---

Habe aufs erwürgen setsockopt(socket, SOL_SOCKET, SO_RCVTIMEO, ...) (#7) vor und hinter jede erdenkliche Stelle mit 3..300s eingesetzt, ohne, dass es irgendwas am Timeout/Verhalten änderte. Folglich habe ich heute die GameClient::Run() und dazu die Logzeilen etwas beobachtet.
Die Logzeilen sagen einem: nicht der Client bricht ab, sondern der Server. Server lädt Karte, Client verbindet Client lädt Karte, Client braucht zu lange -> rausschmiss.

Jeder der "aaahh" und "SERVER: Reserved slot 3 freed due to ping timeout" gesehen hat und den Code kennt, hätte in Nanosekunden auf PING_TIMEOUT=30 kommen müssen, da die Zeilen keine 2 Zeilen auseinander stehen.

void GameServerPlayer::doTimeout()
{
     if( (ps == PS_RESERVED) && ( ( VideoDriverWrapper::inst().GetTickCount() - connecttime ) > PING_TIMEOUT ) )
    {
        puts("aaahh");
        LOG.lprintf("SERVER: Reserved slot %d freed due to ping timeout\n", playerid);
...

Wieso diese Abstandshaltung? Ich finde es schade, dass Spikes Arbeiten nicht in der Form unterstützt werden, wie es eigentlich für S25 notwendig wäre (http://www.siedler25.org/index.php?com=forum&mod=forum&action=thread&id=1154&start=1).

Revision history for this message
quorzom (quorzom) wrote :
Revision history for this message
FloSoft (flosoft) wrote :

habe den Timeout nun mal auf 2min erhöht

tags: added: all-rev
Changed in s25rttr:
status: Won't Fix → Fix Committed
milestone: none → nightly
Revision history for this message
Marcus (marcus) wrote :

Trebxson:
> Vertex Buffer Objets: Aus
> Optimized Textures: Aus
> Gibt es weitere Möglichkeiten?

Die Vertex Buffer Objects kannst du aktiviert lassen. Sinnvollerweise deaktiviert man sie nur, wenn die Grafikkarte sie nicht unterstützt. Die optimierten Texturen erhöhen die Ladezeit, beschleunigen aber bei einigen Grafikkarten das Zeichnen, da viele winzige Texturen und die damit verbundenen Texturwechsel zu extrem bescheidener Performance führen können. Optimierte Texturen baut die kleinen Texturen zu großen Texturen zusammen, die die Anzahl der Wechsel reduzieren. Da das Problem eine sehr hohe Komplexität aufweist, dauert es eine Weile. Daher hatte ich darauf getippt, dass dies der Auslöser sein könnte.

Die Größe der Karte im RAM liegt am Overhead der Objekte, die tatsächlich als solche im RAM liegen. Karten mit 1024x1024 und größer sind erfahrungsgemäß nicht unbedingt spielbar. Es ist nicht unwahrscheinlich, dass einige Dinge nicht besonders effizient gespeichert werden. Es dürfen gerne Patches eingereicht werden, um das zu ändern, aber die Prioritäten liegen vermutlich nicht darin, gigantische Karten zu unterstützen, selbst wenn mein Map-Generator das z.B. unterstützt.

> Jeder der "aaahh" und "SERVER: Reserved slot 3 freed due to ping timeout" gesehen hat und den Code kennt, hätte in Nanosekunden auf PING_TIMEOUT=30 kommen müssen, da die Zeilen keine 2 Zeilen auseinander stehen.

Einen Kommentar hierzu verkneife ich mir besser mal.

> Wieso diese Abstandshaltung? Ich finde es schade, dass Spikes Arbeiten nicht in der Form unterstützt werden, wie es eigentlich für S25 notwendig wäre

Was genau meinst du damit jetzt?

Revision history for this message
Trebxson (trebxson) wrote :

Vielen lieben Dank.

> Was genau meinst du damit jetzt?

Ich meine Spikes Karte hat offenbar neue Spieler (und halbwissende Programmierer ;)) an-/zurückgelockt. Durch das Ladeproblem war diese jedoch nicht spielbar.
Hoffen wir das beste.

n1 euer S25. Aus unserer Sicht, habt ihr einen enorm stabilen Stand erreicht, sicher mit Lücken und Tücken.

Revision history for this message
Zaszuś (zaszus) wrote :

Hi!

I confirm that this issue also repeats when we try to load a large map in a direct ip game (when our network connection is slow). Funnily, with really small maps of something like 48x48 we can create and play well, but when we try to load a 128x128 map, we get "Connection failed" and the log indicates time-out... So I believe it's really the ping timeout issue, although you can see better.

And by the way, thanks for the cool reimplementation of the game! I have noticed some changes, but they are for the better! Super job!!!

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.