Du bist nicht angemeldet.

Werbeanzeige

Toemsel

Treue Seele

  • »Toemsel« ist der Autor dieses Themas

Beiträge: 310

Wohnort: OÖ

Beruf: Student und Programmierer

  • Private Nachricht senden

11

28.05.2016, 05:11

  • Bluetooth support wurde hinzugefügt
  • UDP unterstützt Ping/RTT
  • Unbekannte Typen werden automatisch synchronisiert. Somit können Assemblyübergreifende Pakete ohne Voranmeldung versendet werden.
  • Fehlerbehebungen (Speziell bei Paketen > short.Max)

Toemsel

Treue Seele

  • »Toemsel« ist der Autor dieses Themas

Beiträge: 310

Wohnort: OÖ

Beruf: Student und Programmierer

  • Private Nachricht senden

12

28.11.2016, 16:02

  • Logging kann aktiviert werden
  • RawData kann mit weniger Aufwand versendet werden (Boolean, Char, String,...)
  • Projekt befindet sich nun auf GitHub

13

28.11.2016, 22:38

Für welche Use Cases ist die Library eig. geeignet?
Game Services, MMOs usw.?
Reflection ist was Performance angeht, ja ziemlich teuer.
Indie Game-Dev Programmierer beim 2D MMORPG Pentaquin | Pentaquin Foren Vorstellung

Thoran

Alter Hase

Beiträge: 516

Wohnort: Stuttgart

Beruf: Senior Software Engineer

  • Private Nachricht senden

14

29.11.2016, 10:32

Bin gerade erst bewusst über Deinen Thread hier gestolpert. Lustig ist, dass ich seit einiger Zeit auch eine Netzwerkbibliothek für mein Spiel baue. Allerdings verwende ich ProtocolBuffers und Qt als Basis. So wie ich das sehe ist mein Overhead identisch zu Deinem (16bit+32bit). Danach folgt der Datenbereich. Lediglich die Programmiersprache ist bei mir C++.
Am meisten hat mir das Auflösen des im Datenbereich enthaltenen Typs bereitet. Ganz zufriedenstellend und generisch konnte ich das auch nicht lösen. Aber manchmal muss man halt auch in gewisser Weise pragmatisch bleiben.
Außerdem ist Deine Lib wesentlich weiter was Funktionen angeht. Auf UDP hab ich z.B. verzichtet. Bin mal gespannt wie das bei Dir weitergeht und ob ich es jemals hinkriege meinen ersten Applikationsserver fertigzustellen ;)
Auf jeden Fall :thumbsup: für Dein Projekt.
Mein Entwicklertagebuch
Aktuelles Projekt: Universum Espionage
Eingestellt:Spieleengine SilverCore
Organisator "Spieleentwickler Stammtisch Stuttgart"

Toemsel

Treue Seele

  • »Toemsel« ist der Autor dieses Themas

Beiträge: 310

Wohnort: OÖ

Beruf: Student und Programmierer

  • Private Nachricht senden

15

30.11.2016, 11:31

Für welche Use Cases ist die Library eig. geeignet?
Game Services, MMOs usw.?
Reflection ist was Performance angeht, ja ziemlich teuer.


Für MMOs vermutlich nicht gut skalierbar. Für jede Verbindung werden mehrere Threads erstellt und so etwas wie "Hot-Swapping" zwischen Servern wird noch nicht unterstützt. Sonst RTT befindet sich unter 5ms für kleine Pakete. (Client Code -> Network Lib -> Cloud -> Network Lib -> Server Code) Sehr performant und leicht zu verwenden. (Objektorientiert, Eventbasierend, Async etc.) Prinzipiell kannst du die Lib überall verwenden. Ausschließen würde ich sofort große File-Transitions. Auch wird SSL (noch) nicht unterstützt. D.h sollte die Anwendung empfindliche Informationen transferieren, wäre diese Lib wohl auch eine schlechte Wahl.


Bin gerade erst bewusst über Deinen Thread hier gestolpert. Lustig ist, dass ich seit einiger Zeit auch eine Netzwerkbibliothek für mein Spiel baue. Allerdings verwende ich ProtocolBuffers und Qt als Basis. So wie ich das sehe ist mein Overhead identisch zu Deinem (16bit+32bit). Danach folgt der Datenbereich. Lediglich die Programmiersprache ist bei mir C++.
Am meisten hat mir das Auflösen des im Datenbereich enthaltenen Typs bereitet. Ganz zufriedenstellend und generisch konnte ich das auch nicht lösen. Aber manchmal muss man halt auch in gewisser Weise pragmatisch bleiben.
Außerdem ist Deine Lib wesentlich weiter was Funktionen angeht. Auf UDP hab ich z.B. verzichtet. Bin mal gespannt wie das bei Dir weitergeht und ob ich es jemals hinkriege meinen ersten Applikationsserver fertigzustellen
Auf jeden Fall für Dein Projekt.

Bezüglich der Typen Auflösung. Prinzipiell ist für beide Seiten ein Typ unbekannt. Sendet der Client oder Server ein Paket eines unbekannten Typs, wird zuvor noch Informationen über den "neuen" Typen ausgetauscht. Quasi: "Hey, neue Klasse aus der Assembly 1.0.0.0 NetworkLib mit der UID 0xF1". Somit sind beide konsistent und UIDs können per Laufzeit festgelegt werden. D.h wer meine Library verwendet, sendet wirklich seine Objekte und kümmert sich nicht um UIDs. (Keine Konstanten, Attribute oder sonstige statische Mappings) Vielen Dank :thumbsup: Wünsche dir auch viel Erfolg :D Hast du einen Link zur deiner Lib? Falls ich mal eine C++ Network Lib benötige könnte ich darauf zurück greifen :)

16

30.11.2016, 15:12

Interessantes Projekt! Ich bin neulich auf einen Netty-Port von Microsoft für .NET gestoßen - DotNetty genannt. Wenn das Ding annähernd so angenehm zu nutzen ist, wie Netty für Java, dann würde ich mir das auf jeden Fall mal anschauen.

Toemsel

Treue Seele

  • »Toemsel« ist der Autor dieses Themas

Beiträge: 310

Wohnort: OÖ

Beruf: Student und Programmierer

  • Private Nachricht senden

17

01.12.2016, 09:43

Interessantes Projekt! Ich bin neulich auf einen Netty-Port von Microsoft für .NET gestoßen - DotNetty genannt. Wenn das Ding annähernd so angenehm zu nutzen ist, wie Netty für Java, dann würde ich mir das auf jeden Fall mal anschauen.

Vielen Dank! Werde mich in ihrer Lib mal einlesen.

Thoran

Alter Hase

Beiträge: 516

Wohnort: Stuttgart

Beruf: Senior Software Engineer

  • Private Nachricht senden

18

04.12.2016, 11:36

Hast du einen Link zur deiner Lib? Falls ich mal eine C++ Network Lib benötige könnte ich darauf zurück greifen :)

Hallo Toemsel. Aktuell habe ich keine Link zu meiner Bibliothek. Ich schreibe gerade letzte Testprogramme, um die Grundfunktionalität zu testen. Existieren tut das ganze nur in meinem Mercurial-Repo. Außerdem ist die Bilbiothek zwar an sich generisch, aber in meinen Projektereigen meines Spiels eingebettet. Z.B. kann man bei mir neue Typen aktuell nicht zur Laufzeit generieren. Man muss praktisch die Typen über Protobuf erzeugen, dann werden diese in einer extra Lib abgelegt und diese wird wiederum in meiner Netzwerkbibliothek verwendet. Ich gehe halt davon aus, das mein Netzwerk-Anwendungsprotokoll zur Compilezeit definiert ist.
Mein Entwicklertagebuch
Aktuelles Projekt: Universum Espionage
Eingestellt:Spieleengine SilverCore
Organisator "Spieleentwickler Stammtisch Stuttgart"

Toemsel

Treue Seele

  • »Toemsel« ist der Autor dieses Themas

Beiträge: 310

Wohnort: OÖ

Beruf: Student und Programmierer

  • Private Nachricht senden

19

30.08.2018, 01:34

Seit langem wieder mal ein update :)
Version 5.x ist nun auf NuGet mit folgenden Neuerungen:

  • Support für .NET Standard 2.0
  • RSA Verschlüsselung
  • Factory ausgebaut
  • Dokumentation up2date

Werbeanzeige