Entwickler-Ecke
Internet / Netzwerk - NBFP Versions-Handshake
Martok - Mi 04.11.09 10:31
Titel: NBFP Versions-Handshake
Hi,
ich nutze für ein Multiplayer-Spiel
Narses' NBFP-Komponenten.
Dabei benötige ich eine Art Handshake, um sicherzustellen dass Client und Server wirklich die gleiche Protokollversion sprechen.
Narses selbst hat sowas im Tutorial zwar rudimentär drin, aber das funktioniert eben nur wenn beide Seiten wirklich wissen was sie tun.
Momentan handhabe ich das so, dass ich Statemachine-Artig nach dem Verbindungsaufbau 2 Sekunden Zeit lasse, in denen bestimmte Pakete ausgetauscht werden müssen. Das ist nur weder sonderlich schön, noch wiederverwendbar (für die reine Server-Statusabfrage steht der gleiche Code nochmal da...). Dass es dann Probleme gibt falls einer der Peers erst noch eine Firewall-Regel anlegen will und das Aufbauen der Verbindung deswegen länger dauert, dürfte klar sein.
Wie macht man sowas "richtig"? Ich will dem User ja auch eine "meaningful error message" geben können, also einfach so Verbindung zu machen ist auch doof.
Dass da ein NBFP-Protokoll ist wird ja vom Protokolladapter schon verifiziert, aber das schließt ja nicht aus dass Client und Server ganz andere Spiele sind.
Ideen werden immer gern genommen...
Sebastian
BenBE - Do 05.11.09 11:19
hmmm, Mach nen Zero Knowledge Proof auf die Versionsnummer. SMP wäre da ne Idee :mrgreen:
Spaß beiseite. Bilde einen Hash über alle relevanten Dateien, bzw. übertrage die Versionsnummer beider. Die jeweilige Gegenseite kann dann mit einem ACK die Verbindung entweder bestätigen oder mit einem NACK ablehnen. Das ganze so lange wiederholen, bis keiner von beiden mehr eine andere Protokoll-Version anbieten kann. Dabei fangen beide Clients jeweils mit der höchsten unterstützen Version an.
Martok - Do 05.11.09 12:12
Das ist schon klar. Ich lasse eh nur genau eine Versionspaarung zu, nämlich die wo beide genau die gleiche haben.
Momentan läuft da ein doppeltes Challenge-Response.
Irgendwo hatte ich das rein kommentiert... ah, hier.
Das Funktioniert auch, prinzipbedingt sehen statemachines mit TNBFP aber immer etwas seltsam aus.
Gleichzeitig lässt sich das recht schlecht modularisieren.
Protokolle sind hier nicht so mein Problem, tatsächlich eher die Implementierung.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!