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

Gelöschter Benutzer

unregistriert

21

10.01.2014, 14:18

danke euch allen :) ich glaube ich mache es zum Anfang mal so wie es ERROR gesagt hat, und dann gehe ich mal zu den anderen Möglichkeiten über

Gelöschter Benutzer

unregistriert

22

20.01.2014, 20:45

Jetzt hätte ich mal ne Frage (nicht direkt zu nem Buch, aber indirekt zu UDP):
wenn ich Daten versende, verwende ich chars. Int, float, usw. werden dann halt mit itoa und co. umgewandelt. Jetzt ist aber das Problem, dass ich in meinem kleinen RPG z. B. Spieler und Mapdaten schicken muss. Also habe ich mir folgendes ausgedacht:
-ich verschicke float Werte
-die Vorkommastelle sagt (z. B. 1,0), um welchen Typ es sich handelt, z. B. 1 = Spieler, 2 = Map, ...
-die Nachkommastellen verraten mir dann die Werte, z. B. 1,20 = Spieler hat 20 Leben (einfach ausgedrückt)
Wie kann ich es machen, dass ich Nachkommastellen in int abspeichern kann, bzw. nur Teilstücke, z. B. 1,0256 oder 1,365469? Leider hilft mir die Websuche nicht weiter, weil wenn man Begriffe wie "C++ Float Nachkommastelle in Int speichern" verwendet, kommen casting, Grundlagen-Tutorials, usw :dash: Ich hoffe mir kann jemand weiter helfen.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

23

20.01.2014, 20:59

schau dir mal protobuf an. Ggf hilft dir das bei der Problemlösung weiter. Grundidee ist, dass man statt wild rumzumachen ein (char) array anlegt und darin die Werte komplett speichert. Dann verschickt man das array als ein Block.
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.

Gelöschter Benutzer

unregistriert

24

20.01.2014, 21:10

Ok, hab mal "gebingt", allerdings frage ich mich ob die ganzen Ergebnisse mit "google" richtig sind, weil eigentlich alles dort von google kommt ?( kann mir sonst jemand Tutorials oder so zu diesem Thema empfehlen?

25

20.01.2014, 22:00

protobuf wurde von Google entwickelt, daher steht da so viel Google. Es ist vor allem eine Bibliothek zur Serialisierung. Hier die offizielle Seite: https://code.google.com/p/protobuf/ Protobuf wurde übrigens auch in Diablo 3 für die Client Server Kommunikation eingesetzt. Ich habe es praktisch auch schon einige Male erprobt. Das letzte Mal in einem kleinen Mehrspielerspiel: http://www.youtube.com/watch?v=ETYXdlPm4to Wir hatten dabei Java für den Server und Ruby für den Client eingesetzt. Protobuf hat da wunderbar als gemeinsames Transportformat funktioniert. Mit PHP und Objective-C habe ich es auch schon mal erfolgreich eingesetzt. (edit: hehe habe das hier auch schon mal geschrieben: Netzwerk Server Java - Clienten Android und iOS?).

Serialisierung ist Dein Stichwort. Nimm am besten was großes bestehendes wie z.B. protobuf, dann hast Du auch andere Sprachen im Sack und kannst die Daten auch leicht mit anderen Sprachen einlesen.

Thoran

Alter Hase

Beiträge: 520

Wohnort: Stuttgart

Beruf: Senior Software Engineer

  • Private Nachricht senden

26

21.01.2014, 09:59

Also protobuf-Fan muss ich auch meinen Senf loswerden: Ich verwende auch protobuf, sowohl zur Netzwerkkommunikation als auch zum Speichern von bspw. 3D-Szenen. Bisher immer aus C++. Bin super zufriden damit. Einzig beachten muss man wohl, dass die Messages nicht zu groß werden dürfen (laut Google) da protobuf da wohl an seine Grenzen stößt, aber bisher hab ich davon noch nichts gemerkt. (Zum Vergleich,mein Szenenformat aus nem anderen Thread).
Mein Entwicklertagebuch
Aktuelles Projekt: Universum Espionage
Eingestellt:Spieleengine SilverCore
Organisator "Spieleentwickler Stammtisch Stuttgart"

Gelöschter Benutzer

unregistriert

27

22.01.2014, 22:40

Eine Frage nebenbei: Wie hoch ist die Wahrscheinlichkeit, dass UDP-Pakete NICHT ankommen?

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

29

23.01.2014, 17:00

Wenn du bereits einen konkreten Anwendungsfall hast, könntest du mit Hilfe eines Pings (bspw. über die Konsole) testen, wie viele Pakete im Schnitt verloren gehen. (Damit dieser Test einigermaßen Aussagekräftig ist, sollten einige Pakete in unterschiedlichen Situationen bzw. zu unterschiedlichen Zeiten verschickt werden.)

Und nur so am Rande: es ist genauso wahrscheinlich, wie der Verlust von TCP-Paketen. Allerdings gibt es bei TCP ein paar Mechanismen, wodurch Verluste festgestellt werden kann und entsprechende Pakete neu verschickt werden.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Gelöschter Benutzer

unregistriert

30

23.01.2014, 22:56

Kennt jemand zum "Ping" ein gutes Tutorial (habe noch keine Suchmaschine verwendet, weil a) mein Internet gerade so schlecht ist, dass ich mit meinem iPod gefühlte 5min braucht, bis er überhaupt auf der Seite ist und b) weil ich auf Nummer sicher gehen will, dass richtige zu finden :) ). Zur Frage davor, wie hoch (oder niedrig) ist euer Ping (verbinde das Wort immer mit Minecraft-Multiplayer :) ) in euren Programmen? Bei mir wäre der Anwendungsfall folgender: 1 Thread (wir reden von Windows) ist für das eigentliche Spiel zuständig, d. h. hier werden die ganzen Daten in Klassen und Co. abgelegt. Thread 2 schnappt sich dann die Daten (kann es dabei zu Problemen kommen, wenn zwei nicht synchronisierte Threads auf dieselben Variablen und Funktionen zugreifen?) und sendet sie dann an ein Serverprogramm (beliebiger Rechner). Dieses Programm speichert die Daten zwischen und schickt sie an die, bzw. vermutlich den anderen Spieler weiter. Wo kann es bei diesem System zu Problemen kommen? Wie viele UDP-Pakete (char[10]) kann der entsprechende Rechner mit dem Serverprogramm empfangen und senden (2x wegen 2 Clients) wenn er angenommen 50mbits Downloadgescheindigkeit hat? Hoffe ich durchlöchere euch nicht mit meinen Fragen :) alex41018

Werbeanzeige

Ähnliche Themen