Hamachi

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

 

Hangman

Betreff: Hamachi

BeitragMi, Aug 18, 2010 19:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ahoi kameraden

habe nach ca. 2 monaten weiter programmieren ohne online testen meines spiels heute mal wieder online getestet und mit erschrecken festgestellt, dass ich einen irre hohen datenverlust habe.
Bisher hatte ich noch nie das Problem das überhaupt Pakete verloren gegangen sind, jetzt zeigt hamachi mir von 50% - 400% alle möglichen verlustraten an.

Wie gesagt vor nen paar Monaten noch lag es stets bei 0%!

Arrow läuft über hamachi
Arrow Firewall ist auf beiden Seiten aus machte aber keinen Unterschied zu an^^
Arrow Protokoll: UDP
Arrow bandbreitennutzung: client: bis 100bps, server: bis 300bps
Arrow häufigste senderate: alle 300ms, im normalfall 500ms
Arrow latenz: 49ms
Arrow mit mehreren Personen getestet => gleiches Problem
Arrow paketgröße beträgt nie mehr als 50bytes + header der protokolle

Ich betrachte diesen Thread mal als Smalltalk, wenn jemand anderer Meinung ist darf er ihn gerne verschieben Very Happy

MfG Hangman
Ich habe Berthold gebrochen.

Pummelie

BeitragMi, Aug 18, 2010 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
400%? das ist irrgendwie nicht möglich, versuch mal mit tcp und uck ob die latenz enorm ansteigt, möglich das ein kabel oder so defekt ist...
It's done when it's done.
 

Hangman

BeitragMi, Aug 18, 2010 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
udp ist voll integriert, 12k zeilen code sry kanns nich mal eben auf tcp umschreiben^^
ansonsten ist mein inet auch in ordnung auch bei spielen die über udp laufen etc. ich zweifle das kaputte kabel an.
Ich habe Berthold gebrochen.
 

#Reaper

Newsposter

BeitragMi, Aug 18, 2010 22:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Also mein einziger Tipp wäre, dass du ggf. zu viel auf einmal versuchst zu senden. (Wobei das auch schwerlich vorzustellen ist bei einem Spiel.)
Ansonsten: Taucht das nur bei Hamachi auf..? Oder auch bei anderen Programmen/Spielen über Hamachi..?
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

Hangman

BeitragMi, Aug 18, 2010 23:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Das tritt especially nur bei meinem Programm auf.
Je häufiger hintereinander ich Pakete verschicke desto höher ist auch die Verlustrate hast du schon richtig vermutet.
Der Gedanke kam mir auch habe daher die Senderaten auch schonmal zum testen wesentlich erhöht alles über 1sek aber der Verlust war immer noch bei durchschnittlich 60-80%.
Und bevor überhaupt ein player eingeloggt ist also noch 0 traffic, man sich dann einloggen will kommt des öfteren keine message zurück.
Das ist vielleicht auch noch wichtig zu erwähnen... die Messages zum Server hin kommen immer an^^
nur zurück halt nicht.
Ich schreibe an dem Spiel jetzt schon seit März 2009 und hatte derartige Probleme noch nicht, habe zwar auch nie besonders drauf geachtet aber sobald auch nur ne verlustrate von 10% bestanden hätte, hätte man es spielerisch ja gemerkt.
Ich habe Berthold gebrochen.

das wurgel

BeitragDo, Aug 19, 2010 0:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du es auch mit verschiedenen Servern probiert oder nur mit verschiedenen Clients? Falls ersteres kann es ja nur am Code liegen, versuche den Fehler dann einzugrenzen.
1 ist ungefähr 3
 

Hangman

BeitragDo, Aug 19, 2010 0:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Verschiedene Server, also verschiedene leute die den server gehostet haben. hoffe du meintest das damit.
client war immer ich(mit pc und laptop).
Ich schreibe morgen noch ein paar Sachen um und teste alles durch bis zum erbrechen und wenn ich dann nicht weiter komm meld ich mich nochmal. das ganze wurmt mich ja jetzt doch schon, steckt so viel arbeit in dem spiel und bis dato hatte ich verdächtig wenig probleme, eigentlich alles glatt reibungslos durchprogrammiert, ich glaube die probleme haben sich nur gesammelt und kommen jez in form von netzwerkmist Very Happy
Ich habe Berthold gebrochen.
 

#Reaper

Newsposter

BeitragDo, Aug 19, 2010 0:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Also wenn das nur in einer Richtung nicht richtig funktioniert solltest du kontrollieren, ob du nicht ein Fehler beim empfangen bzw. versenden (je nach Seite) hast. Ich denke da gerade im Moment daran, dass du ggf. zu selten sendest/empfängst..?
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

Hangman

BeitragDo, Aug 19, 2010 8:37
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich programmier ja nun schon recht lange daran und hatte mit solchen verlusten noch nie zu kämpfen beim senden und empfangen habe ich nicht viel verändert. im lan über hamachi habe ich 0% verlust. aber ich debuglogge mir mal heute welche pakete wie oft nicht ankommen und hoffe dass der fehler im code liegt. senderate habe ich ja schon erwähnt und empfangen wird jeden frame per while schleife bis alle nachrichten gelesen sind.
Ich habe Berthold gebrochen.

Jolinah

BeitragDo, Aug 19, 2010 9:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du basierend auf UDP eine Art eigenes Protokoll welches die Datenflusskontrolle übernimmt? Oder sollte das Hamachi erledigen? (Kenne das Programm nicht).

Ich wollte nur anmerken dass UDP selbst keine Datenflusskontrolle durchführt. Das heisst wenn du zu viele Pakete sendest werden diese am anderen Ende ignoriert (gedroppt). Dadurch entsteht dann ein Datenverlust. Was heisst zu viele? Das kann bei jedem Empfänger anders sein, daher sollte das dynamisch ermittelt werden (pro Verbindung/User).

Ein Protokoll wie TCP verwendet die Round Trip Time (Ping) und Smoothed Round Trip Time (Varianz) sowie andere Werte um dynamisch die Senderate zu drosseln und wieder zu steigern etc.

Damit man trotzdem die Vorteile von UDP verwenden kann empfehle ich fertige UDP-Libs mit integrierter Datenflusskontrolle, sowie optional zuverlässigen Paketen zu verwenden, wie z.b. ENET. Aber es gibt sicher auch noch andere.
 

Hangman

BeitragDo, Aug 19, 2010 18:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hamachi ist nur eine tunneling software die ein virtuelles lan über internet erstellt. ka wie weit das dann eingreift, ich denke eher weniger.
nein der datenfluss wird nicht besonders verwaltet, ich sende wenn ich was senden will, habe nur darauf geachtet dass es nicht zu oft wird. hat bis jetzt ja immer so funktioniert.
zur aller größten not würde ich teile auf tcp umschreiben und unwichtigere auf udp basis lassen, ist jetzt so ein hirngespinst das ich habe, noch nicht detailliert drüber nachgedacht.
und ich werd mir mal gnet angucken, habe das gefunden als enet vorgänger (arbeite mit b3d).
thx für alle hilfen erstmal, falls jemandem noch was einfällt kann ers ja schreiben beobachte den thread auf jeden fall.

MfG Hangman
Ich habe Berthold gebrochen.

hazumu-kun

BeitragDo, Aug 19, 2010 20:54
Antworten mit Zitat
Benutzer-Profile anzeigen
UDP hat die gemeine Eigenschaft Pakete weder zwingend in der richtigen Reihenfolge zum Empfänger zu bringen, noch bei Sendefehlern neuzusenden.
Du bist gezwungen dir ein eigenes "TCP" zu bauen.
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent
 

Hangman

BeitragFr, Aug 20, 2010 0:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Dass udp nicht prüft ob was ankommt war mir natürlich vor dem Start des Projekts klar^^ nur habe ich nicht mit einer derartigen Verlustrate gerechnet, was aber an der Sache die Jolinah gepostet hat liegen muss.
Habe mir heute mal Xnet angeschaut durchgetestet und überlegt ob und wie ich die nun implementieren kann...
Ich glaube das geht ziemlich gut^^
anstatt:
Code: [AUSKLAPPEN]
WriteByte Stream, xyz%
WriteByte Stream, klm%
SendudpMsg Stream, IP, Port


dann halt:
Code: [AUSKLAPPEN]
msg = XNetcreateMessage(Object)
XNetsetInt(msg,index,xyz)
XNetsetInt(msg,index,klm)
xNetsendMessage(msg,Session)


Naja gut danke fürs helfen Problem hat sich dann damit erledigt.
Interessieren würde mich ja dennoch für die Zukunft wie ich man manuell die senderate regeln muss damit so etwas nicht nochmal passiert. Ist das einfach nur senderaten-abhängig(z.b. server sendet nur alle 200ms), die bandbreite mal außen vor gelassen

MfG Hangman
Ich habe Berthold gebrochen.

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group