Show whole topic Dec 16, 2007 12:44 pm
Duke Offline
Mitglied
Registered since: Jun 04, 2004
Location: Bochum


Subject: M.A.X. IPX Packete
Heyho,

Ich und SAL sind ja schon seit jahren am tüfteln, wie wir das original MAX spielbar bekommen.

Aufgrund der Tatsache, dass MAX seine Frames synchonisiert, sprich der Host schickt so schnell wie möglich hintereinander ein neuen Sync an die Clients, und diese führen Aktionen aus (alle EInheiten ein Feld bewegen, Schiessen etc.).

Bei Spielen über IPX/TCP Router oder über serielle Verbindung ist der Ping wesentlich höher und die Clients scheinen zwischen den Frames mehr zeit zuhaben die Aktionen abzuarbeiten. Aufjedenfall haben wir bei diesen Spielvarianten deutlich weniger Fehler, bzw bei seriell sogar mal garkeinen Sync fehler gehabt.

Daher hab ich mich an die Arbeit gemacht einen IPX-Server zu basteln, der die Rolle des Hosts übernimmt, sprich zum einen die Syncs zu übernehmen und den Clients immer genug Zeit zu lassen, zum anderen später evntl. ein Abbild des aktuellen Spiels zu machen, so dass man im Spiel einzelne Clients neu verbinden lassen kann um Positionsfehlern der Einheiten zu korrigieren.

Das dumme, MAX scheint bei den Packeten eine kleine Checksum eingebaut zuhaben. Aufjedenfall bin ich soweit, dass ein Client meinen Host sieht, sobald er sich aber in das Spiel einloggen soll, schickt der Client eine kurzes Packet und ohne verzögerung sofort eine Bestätigung an dne Host, dass man sich einlogen will.
An meinen Server schickt er nur dieses kurze erste Paket.

In dem Packet, welches der Host an alle Broadcastet, gibt es 2x 2Bytes, welche irgendein Zeitstempel oder eine Checksumme darstellen, soweit ich vermute. An denen scheint es zu hacken, dass der Client den Host nicht akzeptiert, das scheint er also beim generieren seines Antwort-Packets festzustellen.

Naja wollte nur mal berichten, was wir so treiben ;-)