Netzwerk Libs
SimpleUDP 2.0


Hallo

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 :










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")
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 )
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
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 ?

Da Chrise grad beim Frisör ist fang ich jetzt mal an hier zu Posten
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

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