Not logged in
FAQ  •  Advanced search  •  Login

Asynchronität

<<

Blubberbaerchen

Fast Nova
Fast Nova

Posts: 32

Joined: 27.07.2011, 21:55

Post 28.07.2011, 22:50

Asynchronität

Heyho,

ich hatte jetzt schon in gut 20-30% meiner Spiele nen Asynchronitätseffekt. entweder bei mir oder bei einem Mitspieler., das stört, und einige klare Spiele verkehrten sich dann genau ins Gegenteil. Sowas find ich ärgerlich.

Ließe sich die Asynchronität nicht einfach dadurch lösen, dass den Clients regelmäßig (also z.B. alle 30 Sekunden) die kompletten Spieldaten zugeschickt werden, und er dann die Ansicht aktualisiert?

Beste Grüße und vielen Dank, dass ihr Creepsmash weiterentwickelt! Wenn die Bugs noch aufgelöst werden, wird das Spielen hier saugeil! :mrgreen:

Sponsor

Post 28.07.2011, 22:50

Re: Asynchronität

<<

me_1000

Mako
Mako

Posts: 10

Joined: 09.07.2011, 07:35

Post 28.07.2011, 23:14

Re: Asynchonität

Eine noch einfachere Lösung wäre folgende:

Immerhin wird ja bereits erkannt wer asynchron ist (Meldung im Chat)
Dann könnte man bei der Wertung diesen Spieler einfach "auslassen" und das Game so auswerten als ob der eine Spieler nicht mitgespielt hätte. Dumm wirds dann nur bei 1on1 und Team...
<<

Seraph07

User avatar

Mothership
Mothership

Posts: 2785

Joined: 09.07.2011, 13:26

Location: Hildesheim

Post 28.07.2011, 23:15

Re: Asynchonität

Asynchonität entsteht wie weitläufig bekannt dadurch dass Daten bei der Übertragung verloren gehen.
Das Spiel wird auf dem Rechner berechnet, dein Vorschlag setzt voraus dass das Spiel auf dem Server berechnet wird und dort immer richtig ist.
Da wir derzeit bei einem Asyncronen Spielvorgang mindestens zwei verschiedene Versionen des aktuellen Games haben müsste man schauen ob der Server erkannt hat welche Seite asyn ist.
Wenn alle 30 Sekunden ein erheblicher Datenverkehr entsteht ist die Gefahr sehr groß dass dann wieder Daten verloren gehen.
Asyncronität entsteht meist durch schwache Internetverbindungen oder (seltener) durch langsame Computer.
Die ganzen Spieldaten alle paar Sekunden zuzusenden ist keine praktikable Lösung.

Wir hatten die Idee ein laufendes Game als Zuschauer zu joinen. Dies ist auch nur deshalb schwierig, weil es so schwer ist den aktuellen Stand komplett zu übertragen und dann flüßig weiter zuberechnen.

Ansich war deine Idee nicht schlecht, doch die Ursache der Asyncronität macht diese Idee zunichte.

[Dies ist meine persönliche Meinung welche nicht durch staatlich geprüfte Abschlüße außreichend belegt werden kann]
<<

Blubberbaerchen

Fast Nova
Fast Nova

Posts: 32

Joined: 27.07.2011, 21:55

Post 29.07.2011, 22:21

Re: Asynchonität

Okay, wenn das Spiel nur auf den Rechnern, nicht auf den Servern berechnet wird, verstehe ich das Problem.

In dem Fall sollte sich das spiel doch aber auf den Rechnern synchronisieren lassen. Nehmen wir mal an, ein Spieler erkennt, dass sein Spiel asynchron läuft. Dann könnte er doch eine Information an den Server geben, und der Server weist die anderen Clients an, ihm die Spieldaten zu schicken. Am besten noch mit Kontrollsumme, damit ganz sichergegangen wird.

Umsetzungsidee:

Befehl "/syn"
--> Server fordert Spieldaten von allen an
--> Server sendet Spieldaten an Befehlsgeber (bei Übereinstimmung)

Sollte keine Überinstimmung vorliegen, hat der Host immer recht.
<<

dcode

User avatar

Mothership
Mothership

Posts: 2200

Joined: 09.07.2011, 00:59

Post 29.07.2011, 22:24

Re: Asynchonität

Rein theoretisch ist das möglich ja, das Problem ist aber die hohe Anzahl von Creeps - das sind je nach Spiel auch schon mal 1000 Stück. Je nach Verbindung, manche sollen ja z.B. noch ISDN haben, wären das sehr viele Daten und das Resync würde einige Sekunden dauern. Ich vermute, dass das im Endeffekt dann nicht praktikabel wäre.

Im Moment ist es so geregelt, dass das Spiel trotz Async weiterläuft und für verlorene Leben ein Voting unter den Spielern durchgeführt wird. Das heißt, dass der asynchrone Spieler nur ein klein weniger besser als nötig deffen muss, um sicher zu gehen, dass er keine Leben verliert, die er so nicht sehen würde. Beim Großteil der Asyncs kommt es nur auf 1-2 Creeps an.
Think it, design it, build it, run it. That's what I do.
<<

dcode

User avatar

Mothership
Mothership

Posts: 2200

Joined: 09.07.2011, 00:59

Post 29.07.2011, 22:30

Re: Asynchonität

Vielleicht für das Verständnis, wie es überhaupt dazu kommt: Der Server läuft immer 2,5 Sekunden "vor". Das erklärt auch die Bau- und Upgradezeit von 2,5 Sekunden. Erhält der Client nun eine Nachricht vom Server für Runde X, der Client ist aber schon bei Runde X+1, dann hat das Paket länger als 2,5 Sekunden gebraucht und ist demnach nicht mehr synchron. Dann erfolgt die asynchron Meldung. Das Problem ist dann, dass der Client z.B. einen Towerbau eines Mitspielers oder das Empfangen eines Creeps, egal ob es ihn betrifft oder einen Mitspieler, "zu spät" erhält, egal ob das nun 1 Millisekunde oder 10 Sekunden sind. Durch das Voting am Ende, das nach Mehrheitsbeschluss (50%+1 Regel) funktioniert, wird der interne Spielstand dadurch aber nicht gefährdet. Der Client muss nur dafür sorgen, dass ein Creep, das theoretisch ein paar Millisekunden später kam (mehr sind das normalerweise nicht), trotzdem im Spielstand der anderen Spieler gedefft wird (wo das Creep eventell schon ein paar Millimeter weiter ist). Das erreicht man in der Regel durch ein klein wenig mehr Defensive - für den Fall der Fälle.

Das heißt auch, dass es nur zu Asyncs kommt, wenn die Verbindung vom Client zum Server so langsam ist, dass mal mehr als 2,5 Sekunden vergehen können um ein Paket vom Server zu empfangen. Das entspricht einem Ping von 2500.
Think it, design it, build it, run it. That's what I do.
<<

chucknorris4ever

Mercury
Mercury

Posts: 2

Joined: 29.07.2011, 22:47

Post 29.07.2011, 23:13

Re: Asynchonität

Die Client könnte seine letzte 2,5 sek. Aktionen speichern, für den Fall das er Asynchron wird. Falls er vom Server eine Nachricht erhält die in Vergangenheit liegt dann muss er auf die Stand zurückspringen und ab den Zeitpunkt bis aktuelle Zeitpunkt das Spiel neu berechnen. Wenn das Nachricht mehr als 2,5 sek. ist dann kick(ping > 5 sek. ist unspielbar). Das Spiel bleibt synchron(für alle gleich), nur der asynchrone Client muss zurecht benachteiligt werden (wie bei Counter Strike, du hast den Gegner getötet und in nächsten Augenblick wirst du von ihm getötet weil sein ping schneller war.)

wenn ping 99% < 2,5 sek. ist, dann ist das Spiel mit 99% Wahrscheinlichkeit synchron(genießbar)
und ping 99.99% < 5 sek., dann dann ist das Spiel mit 0.99% Wahrscheinlichkeit asyncron aber reparierbar
dann mit 0.01% Wahrscheinlichkeit wird das Spiel abgebrochen.

Wenn ich noch die ping-werte zu anderen Spieler in Oberfläche live(jede 5 sekunde aktualisiert) sehen kann, wäre echt cool. Ich könnte schlechtere Spieler kicken, in dem ich selber abschätze, dass das Spiel verkackt.
<<

dcode

User avatar

Mothership
Mothership

Posts: 2200

Joined: 09.07.2011, 00:59

Post 30.07.2011, 21:26

Re: Asynchonität

Die Zurückberechnung ist leider etwas problematisch. Je nach aktuellem Spielstand müssten dann etliche Frames zurückberechnet werden. Das, was er sonst einmal pro Tick macht, müsste er also auf einmal vielfach in einem Tick machen. Je nachdem wieviel auf dem Board los ist und wie schnell der PC ist, könnte das so lange dauern, dass das nicht nur dazu führt, dass das Spiel laggt, sondern auch, dass der Client sofort wieder asynchron wird und sich das ganze Prozedere hochschaukelt bis bei 100% CPU nichts mehr geht.

Die Alternative wäre nicht zurück zu rechnen sondern den Spielstand zwischenzeitlich, z.B. einmal pro Sekunde, als Kopie komplett in den Ram zu schreiben, um ihn später zurücksetzen zu können. Würde natürlich den ursprünglichen Speicherbedarf das Clients mit jeder Kopie um 100% erhöhen und da man, wenn man async ist, erst weiß, wann man async war, wenn man async ist, könnten das mehrere Kopieren sein.

Ist alles nicht so einfach und selbst große Spieleentwickler tun sich daran schwer. Wie oft ist mir schon ein Multiplayer-Game wegen sync abgeschmiert, selbst im LAN ^^ Allerdings ist es eine schöne Herausforderung :D
Think it, design it, build it, run it. That's what I do.
<<

dcode

User avatar

Mothership
Mothership

Posts: 2200

Joined: 09.07.2011, 00:59

Post 12.08.2011, 13:40

Re: Asynchonität

Die Synchronisation habe ich für 1.0 auch nochmal komplett überarbeitet. Müssen wir einmal schauen, was da raus kommt :)
Think it, design it, build it, run it. That's what I do.
<<

manuel

Express Raptor
Express Raptor

Posts: 1978

Joined: 09.07.2011, 12:25

Location: 127.0.0.1

Post 15.08.2011, 16:58

Re: Asynchronität

Hatte eben auch mehrmals Verbindungsprobleme, hat mich ~70 Skillpunkte gekostet.
Und zwar kam beim ersten Mal die Medlung vom System, dass ich async bin und kruz darauf ist das Spiel bei mir gahangen, während ich bei den anderen Game Over war. Danach war es noch so, das es ohne Vorankündigung einfach hängen geblieben ist, vermutlich aber aus dem selben Grund.
<<

ChaosX

Ray
Ray

Posts: 129

Joined: 24.07.2011, 09:56

Post 06.09.2011, 21:13

Re: Asynchonität

hatte heute 9/10 spiele unspielbar asynchron .. meine mitspieler sagten das gleiche.
hoffe das ändert sich ab verion 1.0

das war am anfang von creeptd doch auch nich so extrem oder ?
naja ich mach nen monat pause mit ctd => momentan is das einfach nur frustig !
hoffe bis dahin is das gefixt.
<<

Darkblades

User avatar

Express Raptor
Express Raptor

Posts: 1400

Joined: 10.08.2011, 15:54

Location: Bei dir Daheim

Post 24.06.2015, 20:40

Re: Asynchronität

Behemoth, ich glaube ich spreche für alle aktiveren Forumleser: Halt die Klappe, wenn du nichts produktives schreibst.
Man sieht einfach nur überall im Forum rote ungelesene Forumeinträge. Dann denkt man: "Oh, was neues im Forum? Und dann noch soviel!"...und was ist? Nichts ist. Es war mal wieder nur Behemoth, der seit gestern hirnloses Spamming betreibt bzw. trollt.

Falls es ein Moderator/Administrator hier liest (wahrscheinlich Seraph), der kann das gerne wieder verschieben, da die Posts eigentlich nicht hier reingehören. Keine Ahnung, ob Behemoth deswegen schon gebannt worden ist oder verwarnt wurde...wenn nicht, bitte machen.

PS: Und klar kann man unproduktives Zeug schreiben, aber dann nur im OT..wir werden ja auch gleich verwarnt, falls wir etwas sinnloses außerhalb des OTs schreiben.
Ingame-Name: Egoistic

~ Gibt es spielerische Fragen, dann fragt Seraph07

EPIC STATISTIK

Aussagekräftige Turmstellung
<<

Seraph07

User avatar

Mothership
Mothership

Posts: 2785

Joined: 09.07.2011, 13:26

Location: Hildesheim

Post 24.06.2015, 21:23

Re: Asynchronität

6 Stunden Bann und diverse Verwarnungen sind bereits raus.

Bitte grab keine alten Threads aus.

Return to Bugs

Who is online

Users browsing this forum: No registered users and 16 guests

cron
© CreepTD.com · Powered by phpBB · Style by ST Software