Netzwerk Libs

Kommentare anzeigen Worklog abonnieren
Gehe zu Seite 1, 2, 3, 4, 5, 6  Weiter

Worklogs Netzwerk Libs

Chat Einladung !

Dienstag, 26. Juli 2011 von ToeB
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

Erste Version !

Montag, 25. Juli 2011 von ToeB
user posted image

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 Very Happy)

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

mfg ToeB

Fertig !

Mittwoch, 13. Juli 2011 von ToeB
user posted image

...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:
Arrow Session Hosten / Connecten / Disconnecten
Arrow Nachrichten senden / empfangen
Arrow Clients kicken / bannen
Arrow Clients mit der UserID des Masterservers verbinden (Nur eine Verbindung möglich -> Gibt es zwei Logins, wir der alte ausgeloggt)
Arrow Host unter den Clients wechseln (für den Fall das der Host nicht mehr zur verfügung stehen kann)

Masterserver :
Arrow Mit Account auf dem Masterserver Connecten (Name + Passwort) / Disconnecten
Arrow Server setzten -> Hostet man, so wird der Server der Serverliste angehängt / Server wieder löschen / Serverliste herunterladen
Arrow User über die Lib Registrieren / Ein-/ausloggen / Löschen
Arrow Spezielle Daten wie bspw. Punkte, Rang oder Freigeschaltete Features des Users können Hoch und runter geladen werden
Arrow Liste alles User kann auch herunter geladen werden
Arrow Highscore : Namen + Score (+UserID) setzten / Gesammte Liste Abfragen

Ein Paar Daten :
Arrow 1500er Serverliste braucht 67ms(Jetzt Sogar mit 33ms Shocked ) zum herunterladen (auch im Internet!)
Arrow 1000er Highscoreliste braucht 150ms zum herunterladen ( " )
Arrow Uploaden bzw. Downloaden von Daten der User dauert auch etwa 67ms ( " )
Arrow Highscoreliste kann wahlweise von 10 bis 1000 Plätze resettet werden (wie man möchte Very Happy)
Arrow User die gleichzeitig auf dem Masterserver sind können bis auf 255 Slots verteilt werden
Arrow Geschwindigkeit und damit auch die CPU-Last ist einstellbar (Masterserver)
Arrow Größe der Packete in denen die Listen geschickt werden ist einstellbar ( " )
Arrow Server läuft im hauptsächlich in der Trayleiste und verbraucht somit kauf Grafikspeicher
Arrow Alle Daten der Spiele (User / Server / Highscore) sind komplett outgesourced -> Eimnfaches Backup möglich, und falls der Server abstürzt gehen die Daten nicht verloren
Arrow sicheres Ticket-Verfahren, sodass sich wirklich nur der Computer, der sich mit dem Masterserver erfolgreich verbunden hat (Name/Passwort richtig), auch wirklich Zugriffsrecht hat. Somit sind die Daten besser geschützt
Arrow Bis jetzt besteht die Lib und der Server insgesammt aus 3876 Zeilen code und die Lib aus 68 Funktionen wobei 9 Funktionen nur Lib intern genutzt werden können


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 ! Very Happy

mfg ToeB


"Bugfixes" - Es geht weiter :)

Dienstag, 12. Juli 2011 von ToeB
user posted image

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 Very Happy

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 Wink

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

Montag, 6. Juni 2011 von ToeB
user posted image

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 Wink Wer ihn also noch nicht gelesen hat, einfach runterscrollen !

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)

Montag, 6. Juni 2011 von Chrise
user posted image

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. Smile

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 Very Happy


Also hoffe ich, dass sich einige darauf freuen können.
Wenn Fragen an mich bestehen, antworte ich gerne per Nachricht Smile

lg Chrise

SimpleUDP 3.0 - Online User & Highscore

Sonntag, 22. Mai 2011 von ToeB
user posted image

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 Wink


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 Wink

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
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
;[ ... ]
(Insgesamt 59 Funktionen, ~52Kb die Lib)

mfg ToeB

SimpleUDP 3.0 - Online User

Mittwoch, 18. Mai 2011 von ToeB
user posted image

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 !!




mfg ToeB

SimpleUDP 3.0 - Online User

Dienstag, 10. Mai 2011 von ToeB
user posted image

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 Confused

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 Very Happy (Alpha Versionen sind schon an zwei User aus diesem Forum rausgegangen - allerdings ohne Masterserver)

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

Freitag, 22. April 2011 von ToeB
user posted image

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 )


Damit kann man dann auch beide Serverlisten (Lan/Internet) seperat ansprechen.

mfg ToeB

Gehe zu Seite 1, 2, 3, 4, 5, 6  Weiter