Netzwerk, welche methode?

Übersicht BlitzBasic Blitz3D

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

 

Dreamora

BeitragMi, Nov 21, 2007 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau in den code den nils oben gepostet hat und befasse dich mit "netzwerk Nachrichten / Packeten"
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Noobody

BeitragMi, Nov 21, 2007 18:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Was lustig ist - einige Ports schein HGL von selbst zu Forwarden.
Nur beim Port 4306 hat er Mühe - zumindest sagt das das Überwachungsfenster.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

Dreamora

BeitragMi, Nov 21, 2007 18:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ports < 6000 sind auch nicht legitim (eigentlich net ma die, aber Blizzard ist auch auf 6112 wodurch sich der zu einer Art standard gemausert hat für spiele), die sind reserviert für spezielle standardisierte Protokolle.
Deswegen gibts darunter verschiedene Ports die automatisch durchgehen sofern nicht deaktiviert, da sie mit anderen Diensten "verbunden" sind
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

nils2771989

BeitragMi, Nov 21, 2007 20:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Sry das mit ruckeln war etwas ungenau ausgedrückt:
In der ersten Methode(nur Übermittlung von Position und Drehung) war es eher so, dass der Gegenspieler bei mir (besonders, wenn er langsam ist) immer am zittern ist d.h. er bewegt sich zwar aber er macht keine gerade bahn, sondern ist in jedem frame ein ganz kleines bisschen woanders(manchmal ist der abstand aber auch nen bisschen größer)

Bei der zweiten Methode bewegt sich der Spieler zwar ohne zittern, aber er springt ab und zu zu einer anderen Position, wenn die position von anderen Spieler übertragen wird.

Dies kann aber, wie du gesagt hast dadurch kommen, da es im mom frameabhänig ist, daran hatten wir gar nicht gedacht...bei mir sind (denk ich) mehr Frames als bei Miridian...

Ich bin mir im mom nicht sicher, was meinst du mit interpolation? Dass der pc die bewegung zwischen den Datenpaketen vorrausberechnet?
Hab zwar Mathe-LK...aber davon hab ich bis jetzt noch nichts gehört Embarassed

Dreamora hat Folgendes geschrieben:

Allerdings bringt uns der Code da ja nicht viel.
Das ist ja der Client Code, könnten wir auch noch den Server Code dann haben, denn ich vermute, da machst du den fehler.


hmm bis jetzt ist das bei beiden so, wir sind im mom noch am anfang, was den Multiplayer betrifft, im mom ist der code, bei beiden gleich.
Da im mom nur zwei Spieler gegeneinander spielen und nur der eine es auf macht...d.h. der Eine senden dem Anderen seine daten und anders rum, das mit mehreren Spielern wollten wir erst machen, wenn das Problem mit dem ruckeln behoben ist...
Schummle nicht, aber spiele nach eigenen Regeln.
Sei nicht verrückt, sondern einfach nur wahnsinnig.
Sei nicht böse, führ nur nichts Gutes im Schilde.
Verändere dich nicht, bleib immer anders.

Miridian

BeitragMi, Nov 21, 2007 23:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Das problem mit dem Springen/Zittern etc haben wir jetzt behoben, es lag wirklich daran, dass es nicht Frameunabhängig war...danke für den Tipp...jetzt haben wir jedoch ein weiteres problem...das schiff des gegners hängt immer so ca ne sec hinterher...so hatte jeder von uns bei sich auf dem pc gewonnen...
 

Dreamora

BeitragDo, Nov 22, 2007 0:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Nils: naja was heisst bei beiden?
Wenns nur 2 spieler sind, kein problem
wenns mehr spieler sind geht das allerdings nimmer das alle allen schicken, damit würdest du eine massive überlastung der verbindung herbeiführen ...

Da das anpassen später recht haarig werden kann, würde ich empfehlen mir jetzt schon zu überlegen für wieviele Spieler das ganze ausgelegt sein soll und es jetzt zumindest in seiner Grundstruktur zu definieren (seis in Code oder via sonstiger Designmöglichkeit) denn du musst schliesslich die ganzen noch ausstehenden anderen Packete auch noch integrieren und das baut alles auf dem Client - Server System auf.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
  • Zuletzt bearbeitet von Dreamora am Do, Nov 22, 2007 0:04, insgesamt einmal bearbeitet
 

BIG BUG

BeitragDo, Nov 22, 2007 0:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein "Hinterherhinken" entsteht ganz einfach dadurch, dass die Übertragung der Daten von einem PC auf den anderen eine gewisse Zeit dauert. Hier wird dann von Latency(eine Richtung) bzw. Ping-Zeiten(hin und zurück) gesprochen.
Die Latency im LAN sollte normalerweise weit unter 10 ms, im Internet je nach Verbindung unter 50 ms liegen(ISDN oder DSL).

1 Sekunde ist hier schon ein sehr hoher Wert, evtl haben sich hier die Datenpakete gestaut(kann passieren, wenn man jeden Durchlauf ein Paket schickt).
Ca. 20 Pakete pro Sekunde mit Positionsdaten und der aktuellen Bewegungsrichtung, -geschwindigkeit sollten eigentlich reichen. Gegebenfalls kann man auch noch bei Tastenstatusänderungen ein Paket losschicken(z.b. ein Paket, wenn Spieler Links-Taste drückt oder eben eines, wenn er die Linkstaste wieder loslässt). Kommt natürlich auch immer auf das Spielprinzip an.

So wie ich das in Deinem Code sehe, wird neben den Positionsdaten(alle 50 ms) aber bei jeden Durchlauf der Tastenstatus übertragen, wodurch der Empfänger "zugemüllt" wird. Vermutlich werden dadurch die Päckchen mit den Positionsdaten ausgebremst und es kommt zu der großen Verzögerung.
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

nils2771989

BeitragDo, Nov 22, 2007 0:27
Antworten mit Zitat
Benutzer-Profile anzeigen
@Dreamora...im mom ist es noch so, dass das nur mit zwei Spielern geht, wir haben geplant das für 6-8 zu machen, dass dann nicht jeder jedem was schicken kann ist klar, der code war erst ma nur dafür gedacht, überhaupt zu testen, wie wir das realisieren wollen.
Es wird sicherlich eine art server geben, der die Daten von allen empfängt und dementsprechent weiterleitet, ich denke, diese aufgabe wird immer derjenige übernehmen, der Host des Spieles ist.

@Bigbug...Das Ergebnis, mit der einen Sekunde Verzögerung haben wir bei der Methode gehabt, in der in (jetzt frameunabhängigen) Zeitabständen die Position und Rotation des Gegenspielers übermittelt wird, dies war bei uns jetzt 60 updates in der sekunde (vermutlich massig zu viel).
Also wird nicht der gepostete code genutzt, sondern es werden nur positions- und rotationsdaten(insgesamt 6 Variablen) in den stream gepackt und an den anderen spieler übermittelt, der dann bei jedem update die position des Schiffes auf die des empfangenen Stream setzt.

also liegt es dann wohl daran, dass man einfach zugemüllt wird(was warscheinlich auch bei dem geposteten code die Ungenaugkeiten verursacht hat)...

wir werden ma versuchen, die daten irgwie auf ein minimum zu beschänken...
Schummle nicht, aber spiele nach eigenen Regeln.
Sei nicht verrückt, sondern einfach nur wahnsinnig.
Sei nicht böse, führ nur nichts Gutes im Schilde.
Verändere dich nicht, bleib immer anders.

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group