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

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

21

20.09.2012, 21:57

Ich bin mir nicht so sicher, ob Du wirklich die richtigen Ziel-IPs angibst. Denn in einem LAN sollte das sonst kein Problem sein. Können sich die Rechner denn sehen? Kannst Du sie gegenseitig pingen?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

22

21.09.2012, 13:56

Ping gerade eben getestet.
Es wurde erst erfolgreich empfangen, als ich die IP (IPv4) beider Computer angepasst hatte: 192.168.10.**
Bei beiden kam dann 128 raus:
Gesendet: 4
Empfangen: 4

Außerdem hab ich noch ein Testprogramm ausprobiert. Die Verbindung klappte nur, als PC1 der Client war und PC2 der Server. Andersrum kam das selbe Ergebniss raus, wie beim Spiel.
Programmiersprache: C++
Fortschritt: Grundkenntnissse

Durza

Treue Seele

Beiträge: 104

Beruf: Student (MSc Cyber Security)

  • Private Nachricht senden

23

21.09.2012, 23:27

Benutz beim bind Befehl des Servers als Adresse die Konstante INADDR_ANY.

24

22.09.2012, 14:21

Hab es endlich hinbekommen :D Auch wenn es extrem laggt.
Das Problem war, dass die Variable "NServerAddress" dauernd die IP vom HamachiServer bekam, anstatt die Zugewisene.
void DoClientTCP(unsigned short Port, sf::IPAddress NServerAddress);

Der Aufruf der Funktion: Network.DoClientTCP (50002, C_IP);
C_IP war immer die Eingegebene IP "192.169.10.**" (per "cout" festgestellt).
Wieso eine andere IP für NServerAddress rauskommt, ist mir unklar. Ich muss jetzt leider die IP immer im Code festlegen. :(

Danke für die Antworten :)

Würden UDP Sockets Laggs bei einem 2D Sidescrolling Game verhindern?
Programmiersprache: C++
Fortschritt: Grundkenntnissse

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »RunRanger« (22.09.2012, 14:35)


Durza

Treue Seele

Beiträge: 104

Beruf: Student (MSc Cyber Security)

  • Private Nachricht senden

25

22.09.2012, 23:08

Du kannst für die Methode zum Versenden und Empfangen der Spielerpositionen einen eigenen Prozess mit CreateProcess erstellen, dies sollte Laggs ein wenig einschränken. Dazu würde ich noch zwei Variablen lastX und lastY deklarieren, die jeweils die X & Y - Koordinaten des vorgängigen Frames speichern. Vor dem Versenden der Positionen würde ich noch prüfen, ob sich die Werte überhaupt geändert haben. Wenn nicht, dann ist es eigentlich sinnlos, die Daten zu Verschicken.

So habe ich einmal ein kleines Online-Spiel programmiert und hatte so gut wie keine Laggs.


Durza

EDIT: Ach ja, wie schon einmal vorgeschlagen, benutze doch bitte INADDR_ANY als Serveradresse. Dann musst du dich nicht mehr darum kümmern ;). Ich hatte dein Problem übrigens auch schon einmal selbst.

26

23.09.2012, 16:58

Vielen Dank für die Tipps :D
Das Vergleichen der Daten werde ich aufjedenfall einführen.

Würde INADDR_ANY das Hamachi-Problem lösen?

mfg. RunRanger
Programmiersprache: C++
Fortschritt: Grundkenntnissse

Durza

Treue Seele

Beiträge: 104

Beruf: Student (MSc Cyber Security)

  • Private Nachricht senden

27

23.09.2012, 19:12

Bei mir hatte es jedenfalls geklappt. Denn ich hatte einmal das Problem, dass, wenn ich den Server an die Adresse 127.0.0.1 gebunden habe, ihn dann über die richtige IP (von meinem PC aus) nicht mehr erreichen konnte. Band ich ihn an meine IP, so funktionierte überhaupt nichts mehr. INADDR_ANY hat dieses Problem aber behoben.

Durza

Werbeanzeige