Forum



OLiver am 21.01.2006 17:07 #419

FloSofts Coding-Sklave
Da wir leider feststellen mussten, dass SDLnet für unsere Zwecke zu unflexibel ist, haben wir uns nun entschlossen die jeweilige Socket - API des entsprechenden Betriebssystems zu benutzen ( d.h. Winsock für Windows ) Allerdings lässt sich das leicht portieren, da die API eigentlich überall fast gleich ist.
Da wir nun erstmal viel mit dem Netzwerkzeug zu kämpfen haben, kann man in nächster Zeit evtl. weniger Screenshoots erwarten. Also nicht dass einer denkt, das Projekt wäre tot.  ;)

---
Warum heißt der Staatsbürger "Staatsbürger"?
-> Weil er für den Staat bürgt.


FloSoft am 21.01.2006 17:24 #422

Großmeister
Jep, eigene Libs nutzen klingt eh viel kewler ;)

---
mfg
Flo



Nocte am 22.01.2006 13:37 #425


>.< ich könnte euch jetzt hauen. Ich habe euch doch schon eine Lib geschrieben, schon vergessen, aber ihr wolltet lieber SDL nutzen tztztz ;) :D


FloSoft am 22.01.2006 14:07 #431

Großmeister
nur haste uns nur ne lib gegeben und nicht den source, d.h können wir nich benutzen.

---
mfg
Flo



Nocte am 22.01.2006 14:31 #434


Na die source könnt ihr auch haben, nur glaube ich das er recht unleserlich ist. Aber an welche Mailaddy soll es gehen?


FloSoft am 22.01.2006 17:18 #437

Großmeister
danke mal schaun ob wir ihn brauchen können in der form

---
mfg
Flo



Nocte am 22.01.2006 17:41 #438


Ich glaube kaum, aber ich kann es für euch gerne abändern so wie ihr es haben wollt.


Nocte am 23.01.2006 15:41 #445


Man sollte niemals Änderungen zwischendurch machen >.< . Ich musste feststellen das der Code und die Lib in der Form vollkommen unbrauchbar ist und erstmal überarbeitet werden müssen. Mit ein wenig Glück dürfte ich aber das Prob bis heute Abend im Griff haben.


Nocte am 23.01.2006 23:53 #448


So nach langem Kampf bin ich endlich soweit zlib auf Herz und Nieren testen zu können. Sobald dies durch ist schicke ich euch die neue Version.


Nocte am 24.01.2006 23:42 #449


Also die zlib ist recht flott, daher stellt das zippen in keinster Weise ein Problem dar. Es sollte unter Win alles funktionieren, wenn ihr jedoch Fehler findet bitte mir weitergeben,damit ich sie ausmerzen kann. Von wegen Linux und Mac muss ich mal schauen, dass ich das noch anpasse, dafür muss ich aber erstmal meine CD wiederfinden *kram in seiner Müllhalde*

Achja mir hilft stillschweigen nicht weiter, was ich brauche ist Kritik ;) .


Nocte am 24.01.2006 23:43 #450


P.S: ihr solltet mal Edit aktivieren...natürlich ist die neue Version per Email unterwegs.


Nocte am 28.01.2006 17:10 #462


Einer im Spieleprogrammierer Forum hat noch eine Alternative genannt: http://www.rakkarsoft.com/


FloSoft am 28.01.2006 17:24 #463

Großmeister
hab directplay gelesen, da hab ich das fenster sofort wieder zu gemacht ...

---
mfg
Flo



OLiver am 28.01.2006 17:26 #464

FloSofts Coding-Sklave
Eigentlich reichen mir normale Sockets.

Zu deiner Lib: Ich hab mal nen Blick drauf geworfen, ich fands alles ein bisschen argh kompliziert. Warum zum Beispiel brauchst du Threads? Die eröffnen immer eine Büchse der Pandora von Komplexitäten und Problemen, deswegen verwende ich die normalerweise nur, wenns gar nicht mehr anders geht. Bis jetzt komme ich ganz gut ohne die zurecht.  ;)


Zitat:

hab directplay gelesen, da hab ich das fenster sofort wieder zu gemacht ...


DirectPlay war nur zum Vergleich.  ;)

---
Warum heißt der Staatsbürger "Staatsbürger"?
-> Weil er für den Staat bürgt.

Editiert von OLiver am 28.01.2006 17:28

Nocte am 28.01.2006 21:46 #465


Machst du es per select?


Nocte am 28.01.2006 22:02 #466


Wie händelst du große Pakete? Wie stellst du die Größe des benötigten Buffers fest beim Empfangen? Nutzt du UDP oder TCP? Wie machst du die Problembehandlung?


OLiver am 29.01.2006 17:14 #467

FloSofts Coding-Sklave
1. ja
2. bin bis jetzt noch nicht über 100 Bytes gekommen, deswegen vertrauche ich (bis jetzt) einfach mal darauf, dass es zusammen ankommt, wenn nicht, wird der Client einfach gekickt. :D
3. ? Die weiß ich halt.
4. TCP
5. Nun, falls die Verbindung verloren gegangen ist oder halt ne unerwartet kurze Nachricht eingetroffen ist, wird der Client rausgeworfen.

---
Warum heißt der Staatsbürger "Staatsbürger"?
-> Weil er für den Staat bürgt.


Nocte am 29.01.2006 17:38 #468


zu 2: es kommt garantiert alles in richtiger Reinfolge an, aber ich meine gelesen zu haben, dass sehr große Packete das Netzwerk ausbremsen.
zu 3: Du musst doch recv einen Buffer zum Speichern übergeben. Welche Größe hat dieser Buffer bei dir?
zu 4: und was machst du wenn der Server weg bricht? Dann ist erstmal Essig, da finde ich die Lösung von WC3 sehr gut. Die legen nämlich die Kommunikation unabhängig vom Server, wobei ich nicht weiß, ob die das per UDP geregelt haben. Auch lässt sich mit UDP die Serversuche schön machen.
zu 5: ein wenig rustikal für meinen Geschmack in Bezug auf die kurzen Nachrichten...


OLiver am 29.01.2006 17:49 #469

FloSofts Coding-Sklave
2. ja, in der richtigen Reihenfolge kommt es immer an bei TCP, allerdings kann es passieren, dass bei größeren ( > 1K ) unter Umständen nur einzelne Teile ankommen. Da ich aber sowas nicht sende, brauche ich im Moment mir darüber keinen Kopf zu machen.
3. Das kommt auf die Nachricht an, die ich erwarte, wenn ich weiß dass eine bestimmte Struktur erwarte, übergebe ich die halt. Bei variablen Sachen ( z.B. Strings ) wird halt die eigentliche Nachricht in 2 Teilmessages aufgeteilt und als erstes die Länge gesendet.
4. Stimmt, das ist nen ernstes Problem. Man könnte aber z.B. sich beim Spielstart vom Server die Adressen der Clients übergeben lassen. Wenn der Server wegbrechen sollte, könnte z.B. immer ein exakter Thronfolger :D festgelegt werden ( z.B. der mit der nächstgrößeren ID ) und alle Spieler wissen den und connecten dann halt dorthin. Das wird sicher schwierig aber ist nicht unmöglich.
5. Wieso? Normalerweise wird das nicht vorkommen. Wenn allerdings versucht jemand zu cheaten oder irgendwelchen Mist sendet, muss er halt rausgeworfen werden.

---
Warum heißt der Staatsbürger "Staatsbürger"?
-> Weil er für den Staat bürgt.


Nocte am 29.01.2006 20:34 #470


zu 5. tja es kommt vor wenn beim senden das packet gesplitet wurde und erst ein Teil angekommen ist-> damit hatte ich zu kämpfen

zu 4. tja dafür hat meine Lib ein UDP system worüber man Nachrichten versenden kann udn zwar entweder an das gesamte lokale Netz oder einen einzelnen oder eben allen in der BListe, die vom Server übermittelt wurde.

zu 3. woher kannst du sicher sein das immer genau das gerade ankommt was du erwartest? Was wenn ein Paket mal einen längern Weg genommen hat und daher den recv Vorgang verzögert? Auch die Annahme das nichts größeres an Paket ankommt ist viell. nicht gerade der Königs Weg, was wenn z.b.aus Versehen ein anderes Programm genau den selben Port benutzt und daher fälschlich an dein Programm gerät(Hats alles schon gegeben)? :wink:


FloSoft am 30.01.2006 08:23 #471

Großmeister
udp über internet läuft halt nicht, das läuft auch bei wc3 nicht :-) da läuft die internetkommunikation über die masterserver.

---
mfg
Flo



OLiver am 30.01.2006 14:08 #472

FloSofts Coding-Sklave
5. Ja, ich hab doch gesagt, dass ich keine großen Pakete sende? Und angenommen, dass es dann wirklich häufiger auftritt, ist es nicht das große Problem, da noch was einzubauen. Aber ich denke mal, dass das nicht passiert.
4. Ja, das wäre das gleiche Prinzip.
3.

Zitat:

woher kannst du sicher sein das immer genau das gerade ankommt was du erwartest?


Ich kann mir überhaupt nicht sicher sein. Deswegen kicke ich ja auch die Spieler, die zu kurze Pakete senden.

Zitat:

Was wenn ein Paket mal einen längern Weg genommen hat und daher den recv Vorgang verzögert?


Was für einen längeren Weg und wieso sollte sich der recv Vorgang verzögern? Dafür ist ja select da, dass nur was empfangen wird via recv, wenn auch wirklich was da ist.

Zitat:

uch die Annahme das nichts größeres an Paket ankommt ist viell. nicht gerade der Königs Weg, was wenn z.b.aus Versehen ein anderes Programm genau den selben Port benutzt und daher fälschlich an dein Programm gerät(Hats alles schon gegeben)?


Dafür sind ja Ports da, das darf es halt nicht geben. Und wenn der Benutzer ein solches Programm hat das, ZUFÄLLIG ( gibt ja wohl genug Ports ) genau diesen Port benutzt, ist das wohl sein Problem und nicht meins.

---
Warum heißt der Staatsbürger "Staatsbürger"?
-> Weil er für den Staat bürgt.


Nocte am 30.01.2006 20:20 #473


Mit längern Weg meinte ich die schöne Sache, dass ab und zu ein Paket eine Router über andere Knoten nimmt, als die andern. So nun schickt Client A ein Paket der Größe 1000 Byte, dieses wird gesplitet. Nun verzögert eins der Pakete das Empfangen, aber dennoch kann per recv schon das Empfange entnommen werden. Leider ist die Menge aber nicht die erwartete. So das war ein Problem womit ich zu kämpfen hatte. Auch ist es mir schon passiert, dass mein Wlan Pakete verschlampt hat, was auch ziemlich böse war, wobei ich das Prob noch nicht wirklich gelöst habe.


Nocte am 30.01.2006 20:28 #474


P.S: Das mit dem Masterserver ist eine feine Sache, aber UDP Port gibt es doch auch im inet nur funzt Broatcasting nicht.


Nocte am 30.01.2006 23:11 #475


Hmmm ich werde das mit der Kommunikation über einen Masterserver mal versuchen hinzubekommen und mal zu schauen, wie sich die Paketgröße auf die Geschwindigkeit auswirkt. Viell. kann ich ja noch ein wenig Overhead aus meinem Programm rausbekommen.
@Oliver Wenn du fertig bist, könntest du mir deine Lib bitte schicken, damit ich vergleichen/schauen kann, was ich an meiner verbessern kann?


OLiver am 31.01.2006 13:59 #476

FloSofts Coding-Sklave
Zitat:

@Oliver Wenn du fertig bist, könntest du mir deine Lib bitte schicken, damit ich vergleichen/schauen kann, was ich an meiner verbessern kann?


Naja, ich hab aber eigentlich gar keine Extra-Lib, die Server und Client - Klasse sind so halb im Programm mit verankert.

---
Warum heißt der Staatsbürger "Staatsbürger"?
-> Weil er für den Staat bürgt.