Google Web App Engine - Serveranwendungen?
-
Hi,
ich schaue mir gerade die Google Web App Engine an. Die bietet sich ja sehr an, wenn man einen Spielserver schreiben möchte, der eben Verbindungen verwaltet und für den Datenaustausch zuständig ist usw. Dachte ich mir jedenfalls.
Stimmt das denn und wenn ja, wie mache ich das gescheit? Ich habe schon eine einfache Anwendung gebaut, die über das Googleframework eine Seite baut, auf der man chatten kann. Ich möchte aber gerne einfach nur einen Server bereitstellen, sodass sich beliebige Clients verbinden können. D.h. ich will auch nicht zwangsläufig über den Browser den Server nutzen, sondern eben über eine komplett andere Anwendung.
Lässt sich so ein Anwendungsserver damit basteln oder habe ich da etwas missverstanden? Die Suche ergab wenig, da "Google Web App Engine Server" oder "Service" oder "create server" oder "create own server" usw. nicht viel ergab, Server wird einfach in dem Zusammenhang nicht als das verstanden, was ich möchte.
Dankeschön
-
Du kannst in der App Engine einen Webservice erstellen und auf diesen in deinem Spiel zugreifen. Zum Thema Webservice wirst du mit Google auch massig Informationen finden.
So als Vorwarnung, wenn du damit sowas wie Spielerpositionen in Echtzeit übertragen willst, wirst du damit höchstwahrscheinlich nicht glücklich. Für Highscores, Serverlisten oder vielleicht auch für ein rundenbasiertes Spiel könnte es aber durchaus reichen.
-
Ja, an Echtzeit dachte ich. Webservices sind ja wegen dem erheblichen Overhead nicht gerade schnell, daher würde ich gerne andere Möglichkeiten nutzen. Aber da gibt es nichts?
-
Eisflamme schrieb:
Ja, an Echtzeit dachte ich. Webservices sind ja wegen dem erheblichen Overhead nicht gerade schnell, daher würde ich gerne andere Möglichkeiten nutzen. Aber da gibt es nichts?
Es gibt Sockets. Oder du probierst die in [1] genannte Bibliothek kryonet [2] mal aus.
[1] http://stackoverflow.com/questions/1634345/real-time-game-networking-libraries-for-games-in-java-and-objective-c
[2] http://code.google.com/p/kryonet/
-
Das Problem ist, dass GAE Sockets blockiert. Will ich ServerSocket aufbauen, sagt er mir "ServerSocket not supported by GAE".
Und Kryonet hat ein ähnliches Problem, dort gibt es zwar zunächst keine Fehler, aber beim Starten meldet er das Problem, dass keinerlei Klassen gefunden wurden. Diese sind aber als JARs normal eingebunden. Und wenn ich Kryonet in einer normalen Java Application teste, funktioniert es wie gehabt.
Jetzt habe ich gelesen, dass GAE Channel anbietet, die aber wiederum nur für JavaScript taugen. Das ist natürlich auch nicht in meinem Sinne.
Gibt es einen anderen kostenlosen Cloud-Services, die real-time Server anbieten? Auf der Basis, wie es jetzt ist, könnte ich mir ja auch einfach über PHP was zusammenbasteln, das ist nicht sehr erfüllend... Andererseits verstehe ich natürlich, dass Google diese Möglichkeiten nicht bietet, die wären ja schon eine erhebliche Sicherheitslücke. Aber zumindest für Java statt JavaScript wär doch so was wie ein Channel eine nette Erweiterung.
-
Hm, also da GAE ja auch keine geöffneten Verbindungen anbietet, wäre die einzige Möglichkeit eines rundenbasierten Spiels ja tatsächlich das permanente Senden von Anfragen.
Denkt ihr, so 2-3 Anfragen pro Sekunde je Client sind in Ordnung? Oder wird das wegen Flooding abgeblockt?