Netzwerk Libs

Kommentare anzeigen Worklog abonnieren
Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6

Worklogs Netzwerk Libs

SimpleUDP 2.0

Samstag, 22. Mai 2010 von ToeB
user posted image

Hallo Very Happy

Ich wollte hier mal mal meine neue SimpleUDP (2.0) vorstellen. Ihr fragt euch sicherlich, warum ich die Lib nochmal neu schreibe. Die alte SimpleUDP ist gut, wenn man Netzwerk Spiele machen möchte. Gehts aber um Internet, egal ob Hamachi oder über "Portforwarding", kann man sie in die Tonne kloppen. Dafür gibts dann die SimpleUDP 2.0 . Diese soll außerdem noch viele weiter Features bieten, unter anderem das Hochladen / Runterladen von Serverlisten, wechseln zwischen Lan und Netgame, einrichten eines Dedizierten Servers, Server wechsel, so wie machne Features die in Der LAmaNetwork auch vorhanden sind, wie sicheres Senden, Dateien / Banken verschicken etc.

Was kann die Lib schon ?
ICh programmiere nun erst schlappe zwei Tage an der Lib, aber das ergebniss kann sich schon sehen lassen :
Arrow Sitzung / Spiel Hosten
Arrow Sitzung / Spiel Beitreten
Arrow Sitzung Beenden / Verlassen
Arrow Senden von "Commands" (gleich mehr dazu)
Arrow Empfangen von "Commands"
Arrow Senden der "Commands" an eine Bestimmte ID
Arrow Ping berechnung
Arrow Server auf "LanGame" oder "NetGame" einstellen
Arrow Server Dediziert machen oder nicht
Arrow Events (um zu erfahren wer z.B. grade gejojnt ist oder wer das Spiel verlassen hat)

Was zum Teufel sind "Commands" ??
Also.. Ich hab mir folgendes überlegt :
In der Alten SimpleUDP konnte man immer einen String versenden. Dazu kommte man einen String zusammen packen / entpacken mit UDP_AddCommand / UDP_GetCommand. Das musste allerdings alles manuell erfolgen. Da hab ich mir gedacht, man könnte das ja direkt von der SimpleUDP erledigen lassen.
Das ganze sieht dann so aus, man erstellt am anfang einen "Command" oder "Cmd", und gibt an, welche wert TYPEN der Cmd enthält (Also Integer, Float, STring, Byte oder Short). Dann kann man über das Handle eine Nachricht mit den Entsprechenden Werten senden, und wieder empfangen. Das hört sich kompliziert an, ist es aber für den Benutzer nicht. Das erstellen der Cmd's sieht so aus :
Code: [AUSKLAPPEN]
;Vor der Schleife
Global cmd_Position = UDP_AddCmd("int,int")
Global cmd_Speed = UDP_AddCmd("float,float")
Global cmd_Shoot = UDP_AddCmd("byte")
Global cmd_Chat = UDP_AddCmd("string,int,int,int")


Wenn man etwas senden möchte, geht das so :
Code: [AUSKLAPPEN]
;In der schleife
UDP_SendCmd(cmd_Chat, ChatText$ + "," + color_r + "," + color_g + "," + color_b )
UDP_SendCmd(cmd_Shoot, ShootOn )


Das tolle dabei ist, wenn man die Funcktion "UDP_SendCmd" aufruft, dann wird nicht direkt gesendet, sonder das Passiert in der "UDP_Update" funktion. Da wird alles untereinander geschrieben und abgesendet. So sieht das Empfangen aus :
Code: [AUSKLAPPEN]
;In der Schleife
While UDP_RecvCmd()
    Select UDP_CmdID
    Case cmd_Chat
         PlayerID = UDP_CmdFromID
         ChatText$ = UDP_Parameter[0]
         color_r = UDP_Parameter[1]
         color_g = UDP_Parameter[2]
         color_b = UDP_Parameter[3]
    Case cmd_Shoot
         PlayerID = UDP_CmdFromID
         ShootOn = UDP_Parameter[0]
    End Select
wend


Und zu Technik : Es wird hier nicht Intern doch eine String kette verschickt. Dazu dient ja das erstellen der Cmd's. Dadurch weiß die SimpleUDP, welchen Datentyp es senden soll, also int wird mit WriteInt gesendet usw. Dadurch werden die NAchrichtenpackete viel viel kleiner, und bei einem String wäre die Maximale Sendegröße von UDP-Datenpackete schnell erreicht. Außerdem Geht das senden so schneller.

mfg ToeB

Warum dieser Worklog ?

Freitag, 21. Mai 2010 von ToeB
Da Chrise grad beim Frisör ist fang ich jetzt mal an hier zu Posten Wink

Dieser Worklog soll uns beiden (Mir & Chrise) dazu dienen, unsere Netzwerk libs vorzustellen, Features bekannt zu geben, Tutorials reinzusellen oder die Fortschritte zu Dokumentieren. Jetzt Fragt ihr euch sicher, warum Chrise, der hat doch schon einen Worklog ? Ja hat er, aber wir haben uns gedacht, das wir die SimpleUDP und die LlamaNetwork als gemeinsames Projekt vorstellen wollen. Heißt, man hat dann die Wahl, welche Lib man benutz. Das kann zum Vorteil werden, wenn man z.B. nur ein Kleines langame schreiben möchte, dann würde man sich für die SimpleUDP entscheiden, oder wenn man z.B. Dateien verschicken möchte oder andere Sache bindet man die LlamaNetwork ein. Da ich grad an einer SimpleUDP2 sitze, wird diese warscheinlich auch noch in das Packet mit rein.

Hier die Letzten Versionen der Beiden Libs :
>> Download LlamaNetwork <<
>> Download SimpleUDP <<

mfg ToeB

Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6