Real Time Multiplayer: Double zwischen Clients austauschen?

  • Hey,
    ich wollte gerade mit dem von Android vorgeschlagenem Code ein Double Wert zwischen mehreren Geräten, die mit Real TIme Multiplayer verbunden sind, austauschen. Dafür wollte ich es wie folgt umprogrammieren

    Leider kommt dann bei dem message von .sendReliableMessage... folgender Fehler:

    Zitat

    Wrong 1st argument tpe. Found 'double[]', required: 'byte[]'

    Kann man überhaupt einen double Wert zwischen den Clients hin und her senden oder ist das gar nicht möglich?
    Und wenn es möglich ist: Wie kann ich das sonst noch mache?


    MfG
    Timer

  • Hi Schaue dir doch bitte die Definition der Methoden in der googel api an.


    abstract intsendReliableMessage(GoogleApiClient apiClient, RealTimeMultiplayer.ReliableMessageSentCallback listener, byte[] messageData,String roomId, String recipientParticipantId)Send a message to a participant in a real-time room reliably.


    Das ist eine abstrakte Methode die must du selber scheiben da gib es nur den Methoden Rumpf.
    https://www.google.de/url?sa=t…Vaw3f2B7gQtspigAiH5Ozp3j9

  • Leider konnte ich erst jetzt weiterprogrammieren und habe dabei bemerkt, dass das mit dem Message Receive nicht klappt. Wenn ich dort das byte zu double ändere geht das leider nicht (required double[] found byte[]):
    Vom Google Tutorial:


    Code
    private OnRealTimeMessageReceivedListener mMessageReceivedHandler =
                new OnRealTimeMessageReceivedListener() {
                    @Override
                    public void onRealTimeMessageReceived(@NonNull RealTimeMessage realTimeMessage) {
                        byte[] message = realTimeMessage.getMessageData();
                    }
                };

    Das byte[] message habe ich zu double[] message abgeändert

  • Ich habe nun geblickt, welchen Sinn das sendMessage hat. Das ist dafür da, um eine Variable (auch double) als Bytes zu versenden. Dafür muss man den double Wert halt zuerst in Bytes umwandeln. Da hat mir das geholfen:
    https://stackoverflow.com/ques…ay-into-a-double-and-back
    Nun habe ich nur noch das Problem, dass ich verschiedene Variablen versende und ich nicht weiß, wie ich zuordnen kann, zu welcher Variable und zu welchem Spieler (da reichen Zahlen 1-8) dieser Wert gehört. Hat da jmd ne Idee, wie ich das machen kann? Meine Send und Receive Funktionen sehen so aus:

  • Keiner ne Idee, wie man das leicht macht?


    Wenn nein:
    mir ist die Idee gekommen, dass ich das 8. Byte (so groß sind die Zahlen eh nicht) unterschiedlich beschrifte. Z.B. für den Spieler 2 und die Variable stats mit einer 0 (das ist einfach immer ne 0) + 2 (für Spieler 2) + 0 (für die 1. Variable) die Daten beschrifte. Kostet das viele Ressourcen (bzw wird das 8. Byte auch dann übermittelt, wenn da nichts angegeben wird? Denn die Daten sollen jede Sekunde ausgetauscht werden und dadurch weiß ich nicht, ob das zu sehr aufs Internet geht)?
    Oder hat jmd ne bessere Idee?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!