dave: Konzeptionelles Problem bei der Umsetzung eines Spiels

Beitrag lesen

Hi,

ich versuche gerade ein Spiel zu programmieren. Alle Hintergrundinfos zu schreiben scheint mir im Moment nicht sinnvoll bzw. notwendig, daher folgend ein vereinfachtes Beispiel, welches mein Problem hoffentlich beschreibt.
Falls doch noch etwas unklar sein sollte bessere ich selbstverständlich nach.

Es sind mehrere Spieler. Jeder Spieler hat eine Hand mit Karten, diese sind grundlegend offen und für jeden einsehbar.

Außer in einer Spielphase. In dieser legt jeder Spieler jeweils eine Karte verdeckt auf ein Spielfeld welches er kontrolliert. Die übrigen Karten legt er verdeckt beiseite.

Wenn alle Spieler ihre Karten platziert haben werden alle umgedreht und sind wieder für alle sichtbar.

Derzeit hat jede Karte eine UID. Wenn eine Karte bewegt wird, getauscht wird oder sonst etwas mit ihr geschieht schicke ich an alle Clients die diese Aktion nicht ausgelöst hatten _was_ passiert, und welche UID betroffen ist.

Ursprünglich hatte ich vor das auch mit den Karten so zu handhaben.
1. Aktion: Drehe Karte #UID# um
  --> Das Bild der Karte wird ausgetauscht, womit nicht mehr sichtbar ist welche Karte das nun war.
2. Aktion: Positioniere Karte #UID# an Position X/Y
  --> Man sieht nur die Rückseite einer Karte die sich an Position X/Y bewegt.

Mein Problem ist nun, dass jeder der den Netzwerkverkehr beobachtet einfach nachverfolgen kann welche UID wo positioniert wird.

Ich sehe keine Möglichkeit, das zu verhindern, also brauche ich eine andere Möglichkeit die verdeckten Karten zu handhaben.

Idee 1: Die verdeckten Karten nicht bei allen Clients verschieben, sondern nur ein Zeichen senden wenn der jeweilige Client _alle_ positioniert hat (und somit bereit zum aufdecken ist).
Problem hierbei ist eher kosmetischer Natur. Ich möchte dass sichtbar ist welche Karten verschoben werden etc.

Idee 2: Jedesmal nach dem verdecken der Karten die UIDs neu verteilen. Relativ aufwändig und fühlt sich nicht schön an.

Habt ihr eine bessere Idee?

~dave