Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

GlowDragon

Frischling

  • »GlowDragon« ist der Autor dieses Themas

Beiträge: 66

Wohnort: Bayern

Beruf: Informatikstudent

  • Private Nachricht senden

1

27.07.2016, 01:25

Eigene Network API entwickeln - Sinnvoll?

Hallo Community.

Ich habe vor, ein Echtzeit-Mehrspieler-Online-Spiel mit Unity und C# zu entwickeln. Dabei schreibe ich zwei verschiedene Server. Der Master-Server (Konsolenanwendung) verwaltet die Datenbank und vermittelt die Spieler zu den Session-Servern (Unity).

Auf der Suche nach einer Network API stieß ich auf NetworkComms, welche soweit auch funktionierte, bis ich versuchte, eine Verbindung zwischen dem Spiel und dem Session-Server herzustellen. Anscheinend funktionieren Verbindungen zwischen zwei Unity-Instanzen nicht und die API wird nicht mehr weiterentwickelt.

Als nächstes kam mir die Idee, die relativ neue Low Level Network API von Unity zu verwenden. Jedoch musste ich schnell feststellen, dass diese nur in der Engine selbst eingesetzt werden kann. Logischerweise könnte ich einfach den Master-Server auch in Unity entwickeln. Dann hab ich aber das Problem, dass ich ohne unsaubere Umwege keine MySQL-Verbindung herstellen kann, da die MySQL Library nicht mit .NET 2.0 kompatibel ist. Und abgesehen davon setze ich doch lieber auf eine Network API, die nicht von einer Game Engine abhängig ist...

Inzwischen bin ich so genervt von diesen Komplikationen, dass ich mit den Gedanken spiele, eine eigene Network API zu schreiben und diese in all meinen Projekten zu verwenden. Diese soll wie Unity's API auch Nachrichten mit verschiedenen QoS (Quality of Service) versenden können. Ich weiß nicht, wie man dieses Feature umsetzt (z. B. Reliable Sequenced Packets mit UDP versenden), bin aber gewillt, dies zu lernen.

Meine Frage ist: Ist dies sinnvoll oder ein unnötiges Neuerfinden des Rads? Und könnt ihr mir Lesestoff zu dem Thema empfehlen?

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

27.07.2016, 12:08

Aus meiner Erfahrung heraus: solange du irgendeine lib nutzen kannst tu es. Denn Netzwerkprogrammierung ist ein Thema bei dem man schrecklich viel falsch machen kann. Z.B. ist allein der Versuch "Reliable Sequenced Packets mit UDP versenden" mMn sträflich. Denn dafür gibt es TCP und die Wahrscheinlichkeit, dass man es per UDP besser macht ist verschwindend gering, während die Wahrscheinlichkeit ein wesentlich schlechteres System zu entwickeln deutlich größer ist. Außerdem benötigt es sehr viel Zeit. Nebenbei gibt es meines Wissens nach eine MySQL connector für .net.
Aber wenn du sehr viel Zeit hast, mehrere Rechner zur Verfügung hast, dich mit Debuggen sehr gut auskennst und verstehen willst wie Netzwerke i.A. funktionieren (und was da so alles schief gehen kann), dann ist neu erfinden eine durchaus valide Option.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Nox« (27.07.2016, 12:13)


Wirago

Alter Hase

Beiträge: 1 193

Wohnort: Stockerau

Beruf: CRM Application Manager

  • Private Nachricht senden

3

27.07.2016, 12:14

Nebenbei gibt es meines Wissens nach eine MySQL connector für .net.

Gibt es. Zum Beispiel hier: http://dev.mysql.com/doc/connector-net/en/

GlowDragon

Frischling

  • »GlowDragon« ist der Autor dieses Themas

Beiträge: 66

Wohnort: Bayern

Beruf: Informatikstudent

  • Private Nachricht senden

4

27.07.2016, 12:52

Zum MySQL Connector:
Es gibt keinen aktuellen Connector für .NET 2.0, worauf Unity läuft. Deshalb werden PHP-Skripte geschrieben, welche die SQL-Befehle ausführen.

Ich bin eben auf Lidgren.Network aufmerksam geworden, welche anscheinend genau die Features besitzt, die ich suche. Die Library basiert auf dem UDP-Protokoll und ermöglicht verschiedene QoS. Mal sehen, ob sie reibungslos funktioniert. :)

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

5

27.07.2016, 13:02

Also laut der MySQL Website laufen die aktuellen Connectors mit 2.x+

Wirago

Alter Hase

Beiträge: 1 193

Wohnort: Stockerau

Beruf: CRM Application Manager

  • Private Nachricht senden

6

27.07.2016, 13:48

Warum überhaupt .Net 2.0 ? Das ist über 10 Jahre alt.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

Wirago

Alter Hase

Beiträge: 1 193

Wohnort: Stockerau

Beruf: CRM Application Manager

  • Private Nachricht senden

8

27.07.2016, 20:31

Oh, ich erinnere mich an nen Blogpost wo eigentlich gesagt wurde "bald" auf eine neuere .Net Version zu gehen, wurde wohl nix :S

Werbeanzeige