Netzwerk Libs
Chat Einladung !

So, wer sich meinen Beitrag in "Projekte" mal angeguckt und sich die SimpleUDP3.0 heruntergeladen hat, und wer zeit und Lust hat, mal in meinen kleinen simplen Chat zu kommen, kann das jetzt tun.
Einfach die Sample_Chat_Global.exe starten und mit einem Nutzernamen anmelden - Fertig !
Edit : So ich musst noch eben einen Bug vom Masterserver beheben - Jetzt sollte aber alles klappen. Würde mich über eure Anwesentheit im Chat freuen !
mfg ToeB
Einfach die Sample_Chat_Global.exe starten und mit einem Nutzernamen anmelden - Fertig !
Edit : So ich musst noch eben einen Bug vom Masterserver beheben - Jetzt sollte aber alles klappen. Würde mich über eure Anwesentheit im Chat freuen !
mfg ToeB
Erste Version !


Ich habe mich entschlossen vor meinem 3 Wöchigen "Urlaub" noch die SimpleUDP3 zu veröffentlichen. Leider flieg ich schon diese Woche Samstag, deswegen blieb mir jetzt nicht allzu viel Zeit die Beispiele mit ausführlichen Kommentaren zu versehen oder eine Dokumentation zu schreiben, geschweige denn den Masterserver so vorzubereiten, das ihn jeder benutzen kann. Allerdings besteht die Möglichkeit, die Lib in dieser Woche zusammen mit einem Masterserver-Account zu bekommen. Die Lib wird veröffentlicht, und wer nicht auf die Features des Masterservers verzichten möchte (Sry, Holepunching ist im moment noch nicht Bugfrei), kann mir das bis Donnerstag, den 28.06.11 per PN Mitteilen (Betreff: Masterserver Account, Nachricht : Spielname + Passwort, über nen Netten Text würde ich mich trotzdem freuen

Edit : https://www.blitzforum.de/foru...101#392101 <- HIER !
mfg ToeB
Fertig !


...naja fast ;D
Ich habe jetzt fast alles außer dem Holepunching so realisiert wie ich es wollte !
Hier nur schonmal ein paar Features die in der jetzigen Version funktionieren:





Masterserver :






Ein Paar Daten :













Mir schweben zwar schon Konzepte, wie ich das Holepunching diesmal umsetzen werde, im Kopf herum, ich werde mich aber dennoch erstmal nur theoretisch damit beschäftigen bevor ich anfange es umzusetzen (wird aber nicht allzulange dauern, ich denke morgen Nachmittag könnte ich schon anfangen)
Bis zum nächsten Eintrag in dem ich hoffentlich stolz von meinem Erfolg, das Holepunching einzubauen, berichten kann !

mfg ToeB
"Bugfixes" - Es geht weiter :)


So, ich habe es jetzt geschafft einen "Bug" zu beheben, welcher war, das der Masterserver auf dem VServer von Pummelie nur datenpackete unter 1461 Bytes durchgelassen wurden. Jetzt musste ich ein paar Sachen umstrukturieren, sodass die Listen in Packete geteilt werden (Highscore / Spieler / Server listen) und somit diese Grenze nicht überschritten wird. Ich muss das nur noch für die Highscore einfügen, dann sollte alles soweit Klappen. Als nächsten Schritt kommt natürlich das Holepunching dran

Wenn ich das habe, werde ich die Funktionalität im Gesammten mal überprüfen (Beim entwickeln überprüfe ich meistens nur das Teil was ich Grad Entwickel, ob die anderen Sachen damit noch kompatibel sind weiß ich da ja nicht). Genaue Zeitangaben zum ersten offiziellen Release kann ich allerdings noch nicht geben, da ich in 3 Wochen ca. nach England fahre und somit keine Zeit haben werde. Davor und danach wird aber (wie ich hoffe) fleißig weiter Programmiert

Ach ja : Meine Tests haben ergeben das selbst übers Internet die Lib immer weit unter 100ms braucht um sich die Listen herunterzuladen - Ich persönlich finde das sehr schnell. Ich werden noch Tests machen mit einer Serverliste von etwa 2000 Serverdaten, was ca 12 Datenpackete wären, und messe die Zeit. Wenn dass dann noch in einem annembahren Zeitraum ist, veränder ich nichts mehr ;D
mfg ToeB
SimpleUDP3.0 - Highscore


Nein, ich möchte hier nicht Chrise die Show stehlen, ich wollte nur grade einen Beitrag schreiben und da seh ich grade das er einen Beitrag verfasst hat

Zum eigentlichen Thema meines Beitrages : Highscore Listen.
Man kann jetzt ziemlich einfach mit einer Funktion eine Score mit Namen und UserID hochladen und diese wird automatisch einsortiert und die Position zurückgegeben. Außerdem kann man die Komplette Liste Herunterladen und auch während des Spiels gucken welchen Platz man erreicht hat (z.B. wie bei Geolaria).
Zudem ist das ganze sehr schnell und dauert um die 40ms, um die komplette Liste abzufragen oder die Daten hochzuladen. Bis jetzt ist die Liste auf 100 Plätze begrenzt, kann aber problemlos auf 255 heraufgesetzt werden (wenn es jemand braucht^^).
Wenn ich jetzt noch ein paar Tests damit mache, und diese erfolgreich waren, dann fange ich mit dem Holepunching an. Leider wird das ein wenig Länger dauern, da ich eine Allgemeine Holepunching Funktion für alle Arten von Nachrichten einrichte, somit kann nicht nur die Willkommensnachricht darüber geschickt werden sondern auch X-Beliebige Nachrichten.
mfg ToeB
PS : Chrise's Beitrag lesen
|
\/
LlamaNet 3.0 (Ankündigung)

Hallo alle zusammen!
Es gibt frohe Botschaften, auch von mir. Abitur ist rum und allmählich finde ich nach langen Zügen Freizeit (fast schon wieder zu langen) wieder Zeit für LlamaNet!
Und ja es gibt sie noch, die Netzwerk Bibliothek.
Unangekündigterweise presche ich diesmal nach vorne und nach der (soweit ich mich noch erinnere) unveröffentlichten 2.0 Version gibt es wahrscheinlich in Kürze gleich die Version 3.0, denn diese war bereits in Arbeit als 2.0 fast fertig war.

Gute Neuigkeiten sind:
- Ich habe den Code ausreichend kommentiert, sodass mir ein Wiedereinstieg in die Arbeit sehr leicht fällt.
- Es gibt bereits sehr lange einen Masterserver (Dank hier an Pummelie), über welchen Holepunching und connecten ohne Hamachi erst richtig möglich wurde.
- Die Performance wurde seit den 1.0x Versionen stark verbessert.
- Es wird ein Usersystem geben (mit Login Logout), ein Freundesystem und die Möglichkeit Variablen auf dem Masterserver zu speichern. 75% sind meines Erachtens bereits fertiggeschrieben.
- Dateien und Ordner Versenden funktioniert nun noch schneller und nach bisherigen Tests einwandfrei.
- LlamaNet3.0 wird rostfrei bleiben
Also hoffe ich, dass sich einige darauf freuen können.
Wenn Fragen an mich bestehen, antworte ich gerne per Nachricht

lg Chrise
SimpleUDP 3.0 - Online User & Highscore


So, nun kann man auch schon die Liste aller Benutzer abfragen mit ID und Namen. Mithilfe der ID kann man dann auf die gespeicherten Daten zugreifen und der Name ist dabei damit man deswegen nicht jedesmal eine Sperate Anfrage starten muss (Der Name ist im Übrigen auf 16 Zeichen begrenzt, sollte aber Ausreichen).
Villeicht ist es einigen Leuten ja schon Aufgefallen, aber in einer UDP Nachricht können Maximal 8096 Bytes versendet werden. Das würde ja für meine User liste bedeuten, dass ich "nur" ca 425 Spieler versenden kann. Was ist aber wenn mehr Angemeldet sind ? Dafür teile ich die Liste in die Entsprechende Anzahl von Blöcken und versende diese dann nacheinander. Dadurch kann man bis jetzt (ist sehr einfach zu erweitern) 7225 Spieler versenden. Toll nicht ? Das gleiche müsste ich noch für die Serverlisten machen, obwohl man bei einem Nachrichtenblock locker 1346 Server verschicken kann... Aber ich mach es auf jeden Fall

Außerdem habe ich mir überlegt, ein kleines Highscore-System einzubauen, bei dem man sehr einfach auf 100 Plätzen Scores mit Namen verteilen kann. Das sortieren würde der Server dann von alleine machen, man müsste nur noch schreiben wie der Name ist und wie viele Punkte, dann wird es Hochgeladen und man soll dann den Platz zurück bekommen, auf welchem der Hochgeladene Spieler sich befindet. Außerdem wird warscheinlich noch eine verknüüfung zu den Online-Usern hergestellt werden, sodass man auch bspw. in seinem Profil seinen Platz stehen hat, das muss ich mir aber nochmal überlegen.
So das war es bis jetzt, schöne Nacht noch und biszum nächsten Eintrag

Edit
Habe jetzt noch die Funktionen Angepasst, sodass man sofort erkennt, wozu diese gehören. Dazu haben Funktionen, die mit dem Masterserver arbeiten ein "UDP_Master" Präfix, die mit der Session arbeiten ein "UDP_Session" Präfix. Befehle, die es Momentan gibt :
BlitzBasic: [AUSKLAPPEN]
UDP_SessionCreate(Insgesamt 59 Funktionen, ~52Kb die Lib)
UDP_SessionConnect
UDP_SessionUpdate
UDP_SessionDisconnect
UDP_SessionKickClient
UDP_SessionChangeHost
UDP_SessionCountClients
UDP_SessionGetClientID
UDP_SessionGetClientIP
UDP_SessionGetClientPort
UDP_SessionGetClientPing
;------------------------------------------------
UDP_MasterConnect
UDP_MasterDisconnect
UDP_MasterSetServer
UDP_MasterDeleteServer
UDP_MastergetServerList
UDP_MasterCountServer
UDP_MasterGetServerData
UDP_MasterRegistUser
UDP_MasterLoginUser
UDP_MasterLogoutUser
UDP_MasterDeleteUser
UDP_MasterUploadUserData
UDP_MasterDownloadUserData
UDP_MasterGetUserList
UDP_MasterCountUser
UDP_MasterGetUserID
UDP_MasterGetUserName
;------------------------------------------------
UDP_GetEvent
UDP_SendMsg
UDP_wByte/Short/Int/Float/String/Bank
UDP_RecvMsg
UDP_rByte/Short/Int/Float/String/Bank
UDP_MsgFromID
UDP_MsgHeader
UDP_AddBannedIP
UDP_IPBanned
UDP_WaitMsg
UDP_FreeMsg
UDP_FreeList
;------------------------------------------------
;Private Funktionen der Lib
;[ ... ]
mfg ToeB
SimpleUDP 3.0 - Online User


Man kann jetzt den Online-User Ausloggen & Löschen, auch kann man wie folgt Daten hochladen (z.B. Punktzahl, Nickname, Level, Freigeschaltete Features etc. etc.) :
BlitzBasic: [AUSKLAPPEN]
UDP_LoginUser( "TheToeB", "1234" )
UDP_wString( "Hallo, ich heiße ToeB." )
UDP_wString( "Die Welt ist Toll !!" )
UDP_UploadUserData( 0 )
UDP_wInt( 591993 )
UDP_UploadUserData( 1 )
UDP_DownloadUserData( UDP_UserID, 1 )
DebugLog "UserData[3]: "+UDP_rInt( )
UDP_DownloadUserData( UDP_UserID, 0 )
DebugLog "UserData[1]: "+UDP_rString( )
DebugLog "UserData[2]: "+UDP_rString( )
Man kann also wie eine ganz normale Nachricht bytes, ints, shorts etc. hintereinander schreiben und dann Hochladen auf einen Slot (0-255). Maximal darf ein Slot ca 8000byte besetzten (Sonst kann es nicht Hochgeladen werden). Runterladen dann genauso mit den Read-Befehlen.
Die Ein/Auslogg Funktion und das Up/Downloaden der Daten nimmt jeweils so um die 32ms zeit in Anspruch, sollte zu verkraften sein (Also bei einem Lokalen Masterserver, ich probiers gleuich mal übers Internet)
So sieht der Debuglog aus mit Zeitmessung und wenn der Masterserver übers Internet erreicht wird :Code: [AUSKLAPPEN]
REGIST : 50ms
LOGIN : 66ms
UPLOAD : 51ms
UPLOAD : 33ms
DOWNLOAD : 50ms
UserData[3]: 591993
DOWNLOAD : 66ms
UserData[1]: Hallo, ich heiße ToeB.
UserData[2]: Die Welt ist Toll !!
LOGIN : 66ms
UPLOAD : 51ms
UPLOAD : 33ms
DOWNLOAD : 50ms
UserData[3]: 591993
DOWNLOAD : 66ms
UserData[1]: Hallo, ich heiße ToeB.
UserData[2]: Die Welt ist Toll !!
mfg ToeB
SimpleUDP 3.0 - Online User


In der letzten und der nächsten Zeit kann/konnte ich nicht so viel an der SimpleUDP3.0 arbeiten, da ich mich auf meinen Führerschein vorbeireiten muss und das schöne Wetter mich zum nichtstun veranlasst

Wie dem auch sei, ich habe es jetzt endlich geschafft einen großen Bug im Masterserver zu beseitigen und ihn um das Registrieren und Einloggen von Online-Usern erweitert - Klappt perfekt. Damit kann man jetzt einen User beim Masterserver registrieren und mit dem Passwort sich auch einloggen. Eingeloggt sein ist wichtig, da man nur so die Daten des Spieles verändern können darf (Passwort ändern, Daten Hochladen, User Löschen). Andere spieler sollen sich später die komplette Userliste ansehen dürfen und auch die hochgeladenen Daten.
Bis ich das mit den Spielern komplett eingebaut habe, könnten noch gut 2 Wochen vergehen, dann kommt das Holepunching, und dann die erste Beta

Edit: So, jetzt wird, wenn man sich doppelt mit dem Spieler einloggt beim anderen ein Event ausgelöst, das der Spieler Automatisch ausgeloggt wurde (wegen z.B auch noch Timeout oder wegem doppeltem Einloggens)
mfg ToeB
SimpleUDP 3.0


Man kann jetzt mit diesen Befehlen Serverlisten sowohl im Lan als auch über den Masterserver Abfragen :
Code: [AUSKLAPPEN]
Liste = UDP_GetServerList( [Mode] [,Port] [,TimeOut] )
Count = UDP_CountServer( Liste )
IP_Port$ = UDP_GetServerData( Liste, index )
UDP_FreeServerList( Liste )
Count = UDP_CountServer( Liste )
IP_Port$ = UDP_GetServerData( Liste, index )
UDP_FreeServerList( Liste )
Damit kann man dann auch beide Serverlisten (Lan/Internet) seperat ansprechen.
mfg ToeB
Gehe zu Seite 1, 2, 3, 4, 5, 6 Weiter