Ich baue ein Online-Multiplayer-Billard-Spiel und ich habe Mühe, über den besten Ansatz zur Multiplayer-Physik-Simulation zu denken. Ich habe über drei mögliche Szenarien nachgedacht, von denen jedes seine eigenen Vor- und Nachteile hat und ich würde gerne eine Meinung von denjenigen hören, die entweder bereits etwas Ähnliches implementiert haben oder Erfahrung in Multiplayer-Online-Spielen haben.Multiplayer Billard Spiel Physik Simulation
1. Szenario: Physiksimulation auf den Clients: Der Spieler wiederum gibt den Schusswinkel und die Leistung an den Server weiter, und der Server aktualisiert alle Clients mit diesen Werten, damit sie den Schuss simulieren können unabhängig.
Vorteile:
- Low-Server überhitzen
Nachteile:
- Probleme mit der Synchronisation. Clients müssen die exakte Simulation unabhängig von ihrer Bildrate simulieren. (Möglich mit einem cleveren Algorithmus zu lösen, wie einer beschrieben here)
- Cheating. Spieler können schummeln, indem sie die Physik-Engine optimieren. (Mögliche zu bestimmen, wann ein Vergleich am Ende des Schusses mit anderen Spielern Kugelpositionen machen Wenn nur zwei Spieler am Tisch sind (dh nicht spectaculars) dann, wer der Betrüger ist.?)
2. Szenario:
Physik Simulation auf einem (dh "Master") Client (zB wer immer die Aufnahme macht) und dann jeden Physikschritt an alle anderen senden.
Vorteile:
- Keine Probleme mit der Synchronisation.
Nachteile:
1.Server hitzen. Jedes Mal wird der "Master" -Client die Koordinaten aller Bälle an den Server senden, und der Server muss sie an alle anderen im Raum senden. 2. Betrug durch den "Master" -Spieler ist noch möglich.
3. Szenario: Die Physik wird auf dem Server simuliert.
Vorteil:
- Keine Möglichkeit zu betrügen als die Simulation unabhängig von Kunden ausgeführt wird.
- keine Synchronisationsprobleme, bedeutet eine Simulation jeder wird das gleiche Ergebnis (Ereignis, wenn nicht zur gleichen Zeit, da der Netzwerkverzögerung)
Nachteile sehen:
- Huge Server-Überlastung. Nicht nur der Server muss die Physik 30/60 Mal pro Sekunde für jeden Tisch berechnen (es können 100 Tische gleichzeitig sein), sondern muss auch alle Koordinaten an alle in den Räumen senden.
EDIT Einige ähnliche Spiele zu der, die ich mache, falls jemand kennt, wie sie diese Probleme überwunden haben:
http://apps.facebook.com/flash-pool/
http://www.thesnookerclub.com/download.php
http://gamezer.com/billiards/
Eine andere Methode, die in den Sinn kommt, ist die Geschwindigkeit/Vektor zu übertragen und nur bei einer Kollision mit einer Schiene, einem anderen Ball usw. erneut zu übertragen ... Auch mehrere Online-Spiele, die ich ausgesetzt worden bin, kommen zu einer endgültigen Einigung positioniert und verdreht alles an den richtigen Ort, sobald die Bewegung gestoppt wurde. – JimR
Danke für den Tipp. Wie ich sehen kann, kann dieser Ansatz in Szenario 1 integriert werden, um sicherzustellen, dass zwei Simulationen synchron sind und Betrug verhindern. – Alex