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

Progater

Treue Seele

  • »Progater« ist der Autor dieses Themas

Beiträge: 119

Wohnort: BW

  • Private Nachricht senden

1

07.04.2009, 16:03

[Netzwerkprogrammierung]

Hallo, ich habe mich an die Netzwerkprogrammierung herangewagt und bin fast daran gescheitert ;)
Was mir fehlt, ist ein bisschen Wissen über die Netzwerkprogrammierung im Allgemeinen.

Kann mir jemand gute Seiten empfehlen, wo folgende Aspekte diskutiert werden.
Sowas wie "Netzwerkprogrammierung für Spieleentwickler. Allgemeine Strategien, Tipps, Tricks usw."
- Kollisionserkennung: Welche Strategien es gibt und wie realisiert man das im Netzwerk
- überhaupt die Netzwerk-Spieleentwicklung: Bewegungen/Animationen (Trigger, Vektoren)
- Cheatingunterdrückung
- Client/Server vs Peer-to-Peer: Vorteile, Nachteile, andere Möglichkeiten
- sonstiges, das empfehlenswert ist, auf das man erst im Nachhinein stößt

Man kann zwar einzelne Aspekte mit google präzise oder auch nicht ansteuern. Falls aber so ein Buch oder Seite existiert, würde ich mich freuen, wenn jemand ein Link auf die Seite postet oder zumindest seine eigenen Erfahrungen teilt, wie man am besten die Netzwerk-Spieleentwicklung in Angriff nimmt ;)
To go back to the drawing board is not everyone's cup of tea! :-)

2

07.04.2009, 16:19

Also ich würde dir empfehlen, ein entsprechendes Buch über die Materie zu studieren.
Warum greifst du nicht auf vorhandene Libraries zurück?
fka tm

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

3

07.04.2009, 16:21

Naja....das alles hängt meist von den verwendeten Konzepten bzw. benötigten Mechanismen ab. Erzähl einfach mal was du machen willst und dann kann ich dir ggf. weiterhelfen :)
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.

4

08.04.2009, 11:30

da reih ich mich ein...such auch scho ne weile nach solchen ressources im internet...aber bisher nur grundlagensachen gefunden "sockets how to" und sowas -.-
gabs nich mal ambitionen, hier ne art kleines tutorial in richtung netzwerkprogrammierung zu schreiben? :P
auch, wenn es nich den genannten rahmen haben wird...
aber immahin n anfnag

Progater

Treue Seele

  • »Progater« ist der Autor dieses Themas

Beiträge: 119

Wohnort: BW

  • Private Nachricht senden

5

08.04.2009, 11:31

Zitat von »"TrikkieMikkie"«

Also ich würde dir empfehlen, ein entsprechendes Buch über die Materie zu studieren.
Warum greifst du nicht auf vorhandene Libraries zurück?

Also wieso denn ein Buch, wenn man Internet hat ;)
Und ja, ich verwende schon RakNet. Das befreit einen aber schon lange nicht von lästigen Aufgaben, die auf einen bei der Netzprogrammierung zukommen.

Zitat von »"Nox"«

Naja....das alles hängt meist von den verwendeten Konzepten bzw. benötigten Mechanismen ab. Erzähl einfach mal was du machen willst und dann kann ich dir ggf. weiterhelfen Smile


Also zuerst habe ich mir überlegt, welche Strategie ich verwenden sollte (Client/Server, Peer-to-Peer) und bin zum Schluss gekommen, dass der Server ein simples DOS-Programm sein sollte. Diesen könnte man dann im Clienten direkt aufrufen.
Dazu habe ich auch passende Funktionen gefunden: http://msdn.microsoft.com/en-us/library/t7y6z6fd(VS.80).aspx. Das klappt zwar wirklich, laut dem Tast-Manager musste ich aber feststellen, dass der gestartete Server-Prozess die CPU zu etwa 45% belastet.

Wenn ich den Server direkt starte (Doppel-Klick oder vom Compiler aus) belastet der Server-Prozess die CPU nun zu etwa 25%. Das ist schon ein krasser Unterschied. Außerdem verstehe ich nicht, wieso so ein simples DOS-Programm die CPU derart belastet. Das kann zwar mit den internen Funktionen zusammenhängen, die das Netz aufrechterhalten, jedoch überschreitet der Client kaum die 5%-Marke. Kann sein, dass ich da was falsch mache. Diesem Problem wollte ich heute auch nachgehen.
Tja so sieht's aus ;)
To go back to the drawing board is not everyone's cup of tea! :-)

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

6

08.04.2009, 11:53

Das liegt wohl an RakNet. Hast du da den Updateinterval auf 0 gesetzt? Übrigens finde ich persönlich RakNet nicht sonderlich. Zunächst sollen wir klären was du überhaupt machen willst. Erst dann kann man zwischen Server-Client oder P2P, SyncSystem oder MessageSystem.

Oder anders gesagt:
Vertraut ihr den Clients und ist Gleichzeitigkeit sowie Konsistenz nicht so wichtig? => P2P ansonsten => Server-Client
Starten alle Client vom selben Punkt an oder ist ein aktueller Spielstand leicht durch Nachrichten darstellbar? Hat das Spiel wenig Objekte, die sich gleichzeitig ändern und es ist genug Bandbreite vorhanden? Ist euer Programm sowieso schon Nachrichtenbasierend? => NachrichtenSystem ansonsten => SyncSystem

Aber ehrlich gesagt weiß ich nicht was ihr wissen wollt. Weil erst dann kann ich euch weiterhelfen.
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.

Progater

Treue Seele

  • »Progater« ist der Autor dieses Themas

Beiträge: 119

Wohnort: BW

  • Private Nachricht senden

7

09.04.2009, 12:42

Upps, da muss ich mich entschuldigen. Hab' außer Acht gelassen, dass der Server in einer Dauerschleife läuft. Um die CPU zu entlasten, könnte man ja die Sleep-Funktion benutzen, nur weiß ich nicht, ob das gut tun würde, wenn der Server mal schnell eine Message von einem Client zu weiteren Clients schicken müsste, er jedoch ein Schläfchen hält.

Ansonsten verstehe ich den Unterschied zwischen SyncSystem und MesageSystem nicht ganz. Ist das eigentlich nicht das selbe?

Auf jeden Fall bin ich auf der Suche nach einer universellen Lösung, d.h. etwas zwischen P2P und Client/Server.
Die Idee (habe das eigentlich schon oben erwähnt): Jeder Client kann seinen eigenen Server mittels neuen Prozesses starten. Diese Server werden dann mit Hilfe eines Master-Servers also Web-Server verwaltet. Weiß nicht, ob es dafür kostenlose Varianten für paar Tage gibt.

Ansonsten, habe ich mir dieses Interview angeguckt: http://electronics.howstuffworks.com/halo-network.htm
Danach war ich wirklich verwirrt, was man nun dem Server mitteilen sollte, was eher nicht, was der Server zuerst erlauben sollte, was zu Gunsten der Performance übersprungen werden sollte, wie man am besten das Smoothing einbauen sollte usw. Ist wohl eine Philosophie für sich.

Wenn was spezielles sein sollte, lass ich's wissen. Ansonsten freue ich mich, wenn jemand seine Erfahrungen mitteilt. Denn, wie gesagt, wäre sowas wie ein "Netzwerkführer für Gameentwickler" gut. Ich programmiere sozusagen blind und hoffe, das am Ende was gescheites rauskommt ;)
To go back to the drawing board is not everyone's cup of tea! :-)

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

8

09.04.2009, 14:49

Also du willst eigentlich 2 Sachen. Eine Lobby und einen Spielserver ;) . Das mit dem Sleep ist natürlich so eine Sache, aber ein sleep(0) reicht meist und meine Netzwerklib unterstützt 2 Callbacks (einmal synchron und einmal asynchron).

Message und Sync ist nicht das selbe! Beim einen prüft der Server nur ob die Nachricht korrekt ist und leitet sie dann an alle betroffene Clients. Diese müssen natürlich das ganze dann 1:1 umsetzen, was problematisch ist, wegen Latenzen unterschiedlichen Genauigkeiten usw. Beim anderen wird die Nachricht direkt beim Server umgesetzt und dann der ist-Zustand serialisiert und an alle betroffene Clients geschickt. Somit ist kann man mehrere Nachrichten "bündeln", das System ist leichter konsistent zu halten, ist allerdings weniger direkt.
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.

Progater

Treue Seele

  • »Progater« ist der Autor dieses Themas

Beiträge: 119

Wohnort: BW

  • Private Nachricht senden

9

10.04.2009, 17:57

Danke für die Aufklärung. Wenn ich soweit bin, informiere ich mich gründlich darüber.

Zitat von »"Nox"«

Also du willst eigentlich 2 Sachen. Eine Lobby und einen Spielserver Wink .

Also, Lobby kommt noch ;) Da sowas aber Datenbanken-Unterstützung benötigt, habe ich die Implementierung vorerst nach hinten gestellt.
To go back to the drawing board is not everyone's cup of tea! :-)

Chef-Koch

Treue Seele

Beiträge: 115

Wohnort: Ulm

  • Private Nachricht senden

10

11.04.2009, 16:31

eine richtig gute netzwerk bibliothek, extra für Spiele ist Zoidcom : http://www.zoidcom.com/

Ich hab sie sleber erst vor paar wochen entdeckt, find sie aber richtig gut und vorallem leicht verständlich :D

Werbeanzeige