Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

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 ...

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 ;)

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.