Aiun Geschrieben 17. April 2009 Geschrieben 17. April 2009 hi, wie Synchronisiere ich Datensätze in einer Client / Server-Anwendung ohne Primärschlüssel / identifier ? um es konkreter zu beschreiben: es geht um ein kleines Strategiespiel bei dem Einheiten bewegt werden und im Netzwerk-Spiel muss synchronisiert werden, - wo die Einheiten sind (x,y) - wem sie gehören (Referenz auf Objekt vom Typ Spieler) - auf welche Einheit sie gerade Zielen oder an welchem Gebäude sie bauen (Referenz auf ein Objekt vom Typ/Interface "Target") Mein Problem: da ich keinen Primärschlüssel habe, weis der Client nicht, zu welcher Einheit die neuen Daten gehören oder ob es sich um eine neue Einheit handelt. Jede Einheit ist schlicht eine Instanz die innerhalb eines java.util.Vector bzw. java.util.list registriert und hat Attribute die auf den Spieler sowie auf ihr Ziel (Gebäude, andere Einheit) gerichtet sind. "Alle" Daten zu versenden klingt nach der Falschen lösung, da jeder Client den ganzen Objekt-Baum in jedem logic-Frame neu Aufbauen müsste. Um nur die Änderungen zu übertragen müsste ich aber irgendwie die Einheiten identifizieren. Wie würdet ihr das machen oder wie machen das Spiele meistens ? danke Zitieren
flashpixx Geschrieben 17. April 2009 Geschrieben 17. April 2009 da ich keinen Primärschlüssel habe, weis der Client nicht, zu welcher Einheit die neuen Daten gehören oder ob es sich um eine neue Einheit handelt. Wenn es um Datenbanken geht, dann stimmt Dein Modell nicht und somit würde ich das überarbeiten. Aber irgendwie mischst Du Objekte und Begriffe aus der Datenbanktechnik. Es wäre vielleicht gut, wenn DU einmal ganz exakt definierst, worum es geht. Klar ist Du willst über das Netz Daten synchronisieren. Phil Zitieren
DominikJ Geschrieben 17. April 2009 Geschrieben 17. April 2009 Reicht es nicht, dem SpielerObjekt noch einen eindeutigen Wert (Spielername, ID o.ä.) hinzuzufügen? Andere Psiele ... hmmm wie machen die das, gute Frage. Aber die meisten Weisen wohl den Spielern eine ID zu wenn sie connecten ... Zitieren
Aiun Geschrieben 17. April 2009 Autor Geschrieben 17. April 2009 danke soweit, ich denke ich habe vorerst eine Lösung. Und zwar wird der Server jedem Objekt (Spieler, Gebäude, Einheit ... whatever) eine ID geben, die nichts weiter ist als ein Integer. Da nur der Server die ID verteilt wird sie wie ein Primärschlüssel funktionieren und die Objekte auf Server und Clients identifizieren. Hätte ja sein können das es noch eine andere, mystische Methode gibt das Problem zu lösen Zitieren
flashpixx Geschrieben 17. April 2009 Geschrieben 17. April 2009 Und zwar wird der Server jedem Objekt (Spieler, Gebäude, Einheit ... whatever) eine ID geben, die nichts weiter ist als ein Integer. Achte dabei darauf, dass keine Kollisionen entstehen. Ich persönlich würde das gar nicht machen, sondern jedes Objekt erhält automatisch bei der Erzeugung schon einen Schlüssel den Du verwenden kannst: Java 2 Platform SE v1.3.1: Class Object) Phil Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.