Google Play SignIn funktioniert nicht/Real Time Multiplayer Game ohne Beitrittsgebühren?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Google Play SignIn funktioniert nicht/Real Time Multiplayer Game ohne Beitrittsgebühren?

    Hey,
    ich hoffe die Frage passt noch zu den Anfängerfragen.
    Da es viel zu lange dauern würde euch meine Spiele Idee vorzustellen stelle ich es einfach sehr sehr stark vereinfacht dar:
    Es gibt 8 Spieler. Jeder Spieler bekommt jede 30 min zufällig viel Geld (welche Menge wird vom Server bestimmt und an denjenigen Spieler weitergeleitet). Dieses Geld kann er jederzeit ausgeben. Wenn er diese ausgibt, soll dies an einen Server gesendet werden. Dieser soll dann einen Wert ausrechnen und der wird dann an alle 8 Spieler weitergegeben.
    Ich hätte dies jetzt mit Androids vorgefertigten Real-time Multiplayer gemacht (developers.google.com/games/se…droid/realtimeMultiplayer ), nur leider weiß ich nicht, wie gut das Spiel wird und ich will nicht vorab 25$ ausgeben, um Google Play Console beitreten zu können. Kann ich das irgendwie (einigermaßen einfach) ohne Google Play Console (nur über eigene Server) umsetzen?

    MfG
    Timer

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Timer ()

  • Hi, Wilkommen im Forum. :)
    Dachte das der Dienst im ersten Jahr kostenlos ist, dem ist wohl nicht so.
    Klar kann man das auch auf anderen Servern machen nur must du dazu auch das API auf dem Server selber schreiben zB. in PHP oder einer anderen Sprache die der FreeServer unterstütz. Bei Goggel ist da schon viel vorgefertigt.

    MfG
    Jörg
    Ein Feedback auf Tipps ist auch schön. :P

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von jogimuc ()

  • Hallo ich glaube du vertauschst da etwas Goggel Play Console brauchst du um eine App Online im Playstore zu stellen. Wenn du die App über andere wege (zB. für deine Freunde) zur Verfügung sellst brauchst du kein Googel Play.

    Ps. auf welcher Seite steht das mit den 25$
    Ein Feedback auf Tipps ist auch schön. :P

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von jogimuc ()

  • Bei dem oben gepostetem Link steht, dass man real time Multiplayer aktivieren muss. Wenn man da drauf klickt, kommt ein Tutorial, wie man das anmacht. Dort steht "1. Open the Game Services page...". Wenn ich das im Internet suche kommt folgende Seite:
    developers.google.com/games/services/
    Dort steht ein Link zur Aktivierung. Wenn man den anklickt, kommt ein Formular, wo man 25$ zahlen muss.
  • Zu allererst:
    - Du brauchst in jedemfall ein Server im hintergrund um Daten unter den spielern auszutauschen und um Daten zu interpretieren.
    - Du kannst die Google game services nutzen, die kosten dich halt das geld.
    - Du musst die app in den play store laden, auch das kostet geld. Nun weiß ich aber nicht ob die 25$ die gleichen 25$ sind die du zahlen musst wenn du dich als developer registrierst, oder ob die zusätzlich gezahlt werden müssen.
    - Du kannst auch einfach selbst ein Backend schreiben und auf einem server laufen lassen, da wirst du aber dann serverkosten zahlen müssen, die je nach anbieter unterschiedlich sind.
  • Ich habe mich jetzt noch ein bisschen mehr eingelesen und bemerkt:
    • Androids Real Time Multiplayer API tauscht nur Daten zwischen den Handys aus (da ist kein Server, der etwas berechnet, sondern nur einer, der weiterleitet)
    • Über einen eigenen Server könnte ich das zwar machen, jedoch wäre das entweder nicht sehr effizient (z.B. über eine MYSQL Datenbank, in der die Daten immer berechnet werden und dann ausgelesen werden) oder über ein sehr kompliziertes Skript, was man für den Server ausführen müsste, was zur Folge hat, dass eine dauerhafte Verbindung zwischen den Usern stattfindet und sehr viel Rechenleistung eines Servers erfordert (um die ganzen Daten den richtigen Lobbys zuzuweisen und dann alles zu berechnen)
    Ich mache die Berechnungen nun doch über das eigene Handy und tausche diese nur über Real Time Multiplayer mit den anderen Spielern aus.
  • Ich habe dies jetzt testweise mit meiner eigenen Datenbank ausprobiert und einfach ein paar Hundert Berechnungen eintragen lassen. Das war leider, wie erwartet, nicht sehr effizient.
    Ich werde nun einfach die Daten auf den Handys berechnen lassen und an die anderen Spieler weitersenden lassen.

    Ich wollte jetzt erstmal einen Google Play Service Login in meiner App machen. Dafür habe ich folgende Anleitung von Google gefunden:
    developers.google.com/games/services/android/signin
    Leider bin ich mir da nicht sicher, ob ich die Silent Sign-In Variante oder die interactive Sign-In Variante benutzen soll.
    Ich habe dazu auch keine wirklichen Unterschiede gefunden.
    Wo liegt der Unterschied?
    Oder habe ich das falsch verstanden und es sind keine zwei Varianten, sondern es muss beides in die App?
  • Hi, so wie ich das auf der Seite Verstehe.
    Kanns du "Silent Sign-In Variante" benuzen wen der Spieler schon einen Account bei googel games hat entweder auf diesem oder einen anderen Gerät.
    Ansonsten must du die "interactive Sign-In Variante" benuzen dazu rufst du einen Intent zu der Anmeldung auf.

    silentSignIn() kannst du benuzen um zu prüfen ob der Benuzer schon angemeldet ist.

    Steht aber alles auf der Seite
    Ein Feedback auf Tipps ist auch schön. :P

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von jogimuc ()

  • Hey,
    ich muss nochmal was fragen:
    Ich habe nun den Code von dem Silent Sign-In Teil kopiert und bei mir eingefügt. Leider bekomme ich jetzt bei allen GoogleSignInClient, GoogleSignIn, GoogleSignInOptions usw folgenden Fehler:
    "Cannot resolve symbol 'GoogleSignInOptions'" (bzw am Schluss die jeweilige Funktion (heißt sowas so überhaupt?))
    Ich habe nun im Internet gesucht und nichts gefunden, was hilft.
    Ist mein foglender Code eigentlich richtig oder muss ich da noch irgendwas hinzufügen? Sollte eigentlich momentan nur der Code von dem Google Tutorial sein:

    Quellcode

    1. package de.[name].[game];
    2. import android.support.v7.app.AppCompatActivity;
    3. public class SignIn extends AppCompatActivity {
    4. private void signInSilently() {
    5. GoogleSignInClient signInClient = GoogleSignIn.getClient(this,
    6. GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN);
    7. signInClient.silentSignIn().addOnCompleteListener(this,
    8. new OnCompleteListener<GoogleSignInAccount>() {
    9. @Override
    10. public void onComplete(@NonNull Task<GoogleSignInAccount> task) {
    11. if (task.isSuccessful()) {
    12. GoogleSignInAccount signedInAccount = task.getResult();
    13. } else {
    14. // Player will need to sign-in explicitly using via UI
    15. }
    16. }
    17. });
    18. }
    19. @Override
    20. protected void onResume() {
    21. super.onResume();
    22. signInSilently();
    23. }
    24. }
    Alles anzeigen
  • Nein. die Dependencies brauchst du. er sagt dir doch das er das symbol den ausdruck nicht kennt.
    schaue dir die Seite developers.google.com/identity…android/start-integrating
    noch mal an, und mache es so. Du brauchst einen Accuont bei goggel play so wie ich das lese. denn du must auch den sah1 schlüssel eintragen. Sieht änlich zu Firebase aus da ist das auch so.


    Wenn du die Dependencies im Build.gadle eingetragen hast und synchronisiert hast dann kanst du mit Alt+Enter den import hinzüfügen den nun kent er deine Symbole.
    Ein Feedback auf Tipps ist auch schön. :P

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von jogimuc ()

  • Ok das habe ich nun auch geschafft :rolleyes:
    Nun habe ich das Problem, dass nach dem starten der App auf meinem Handy nach ca 0,5 Sekunden der Bildschirm grau wird (alles außer oben die Leiste mit Uhrzeit usw.)
    Woran liegt das? Ich habe im Internet nichts vergleichbares gefunden.
    Mein Code:

    Quellcode

    1. import android.content.Intent;
    2. import android.support.annotation.NonNull;
    3. import android.support.v7.app.AlertDialog;
    4. import android.support.v7.app.AppCompatActivity;
    5. import com.google.android.gms.auth.api.Auth;
    6. import com.google.android.gms.auth.api.signin.GoogleSignIn;
    7. import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
    8. import com.google.android.gms.auth.api.signin.GoogleSignInClient;
    9. import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
    10. import com.google.android.gms.auth.api.signin.GoogleSignInResult;
    11. import com.google.android.gms.tasks.OnCompleteListener;
    12. import com.google.android.gms.tasks.Task;
    13. public class SignIn extends AppCompatActivity {
    14. int RC_SIGN_IN;
    15. private void signInSilently() {
    16. GoogleSignInClient signInClient = GoogleSignIn.getClient(this,
    17. GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN);
    18. signInClient.silentSignIn().addOnCompleteListener(this,
    19. new OnCompleteListener<GoogleSignInAccount>() {
    20. @Override
    21. public void onComplete(@NonNull Task<GoogleSignInAccount> task) {
    22. if (task.isSuccessful()) {
    23. GoogleSignInAccount signedInAccount = task.getResult();
    24. } else {
    25. startSignInIntent();
    26. }
    27. }
    28. });
    29. }
    30. private void startSignInIntent() {
    31. GoogleSignInClient signInClient = GoogleSignIn.getClient(this,
    32. GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN);
    33. Intent intent = signInClient.getSignInIntent();
    34. startActivityForResult(intent, RC_SIGN_IN);
    35. }
    36. @Override
    37. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    38. super.onActivityResult(requestCode, resultCode, data);
    39. if (requestCode == RC_SIGN_IN) {
    40. GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
    41. if (result.isSuccess()) {
    42. GoogleSignInAccount signedInAccount = result.getSignInAccount();
    43. } else {
    44. String message = result.getStatus().getStatusMessage();
    45. if (message == null || message.isEmpty()) {
    46. message = getString(R.string.signin_other_error);
    47. }
    48. new AlertDialog.Builder(this).setMessage(message)
    49. .setNeutralButton(android.R.string.ok, null).show();
    50. }
    51. }
    52. }
    53. @Override
    54. protected void onResume() {
    55. super.onResume();
    56. signInSilently();
    57. }
    58. }
    Alles anzeigen
  • hi, hast du auch die "google-services.json" erstellt und unter all gespeichert?
    Wo genau bleibt den die app hängen teste mal mit dem debuger in dem du brackpoinst setzt . Wird der intent zu. Anmelden ausgeführt?
    Könnte aber auch sein das alles ok ist denn du lädst ja gar kein layout hast auch gar keine oncreate.....
    Ein Feedback auf Tipps ist auch schön. :P
  • Fail. Das onCreate habe ich zuvor wohl aus versehen rausgelöscht.
    Nun wird der Hintergrund wenigstens blau angezeigt (wie festgelegt). Leider wird der Bildschirm immer noch nach kurzer Zeit dunkler. Was ich zuvor vergessen hab zu schreiben: wenn ich irgendwo auf den Bildschirm drücke, kommt ein PopUp mit keiner Inschrift und einem Ok Button.
    Ich habe nun in jede Zeile einen Breakpoint gepackt. Leider, wenn ich bei der letzten auszuführenden Zeile weiter drücke, erscheint erst der Bildschirm und wird dann nach ~0,5s dunkler.
    Die Datei hab ich drin
  • Hi, so wie ich das sehe müsstest dich in der "onActivityResult" befinden.
    Denn da erstellst du einen Dialog der wohl beim Klick aufgerufen wird.
    new AlertDialog.Builder(this).setMessage(message)
    .setNeutralButton(android.R.string.ok, null).show();
    Was steht in der "resultCode" Variable? Denke es ist kein OK. Die fragst du gar nicht ab ob derder Intent auch ordentlisch ausgeführt wurde. kommst du überhaupt durch den Intent zu der googel anmeldung?
    Ein Feedback auf Tipps ist auch schön. :P

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von jogimuc ()