Comment jouer au jeu client / serveur à l'aide de Google App Engine (Recherche d'un didacticiel.)

11

(REMARQUE: il s'agit d'un doublon d' une question que j'ai posée sur SO, ayant temporairement oublié GameDev <pendre la tête de honte>. Lorsque l'une répondra, je la lierai à l'autre.)

J'essaie de faire mon premier jeu client / serveur en utilisant Google Apps Engine comme back-end (exigence de spécification.) J'ai fait les tutoriels (Java), mais cela semble très centré sur le navigateur.

Fondamentalement, j'aimerais que mon application (mobile, pas importante):

  • Autoriser l'utilisateur à créer un compte de jeu (PAS son compte Google!)
  • Connectez-vous avec ce compte.
  • Appuyez sur le bouton "MARCO" pour envoyer une demande identifiée par le compte au serveur.
  • Obtenez une réponse "POLO" du serveur.
    • En tant que données (comme un objet JSON, XML-DOM ou similaire), pas en tant que page Web.

Quelqu'un peut-il m'indiquer un bon tutoriel / exemple de projet / lecture détaillée pour m'aider à y parvenir? Je suis à peu près sûr qu'une fois que cela fonctionne, je peux faire tout le reste - mais je rencontre le problème "coincé à la porte de départ", je ne peux pas travailler avec la connexion de base au compte, et échange de données non HTML.

Merci!

Olie
la source
Le côté serveur va-t-il être écrit en Java ou en Python? Une simple base de données sur le serveur suffira-t-elle ou avez-vous besoin d'exécuter beaucoup de logique de jeu?
Alex Schearer
@Alex: J'écris en Java. Il y aura à la fois une base de données simple et une logique de jeu, même si je ne sais pas pourquoi cela compte pour ma question. La partie où je suis bloqué se trouve dans la configuration de l'authentification des utilisateurs. L'exemple de Marco / Polo n'était qu'un échange de données de jeu insignifiant, mais l'élément clé avec lequel je rencontre des problèmes est l'authentification des utilisateurs.
Olie

Réponses:

3

J'ai un exemple de travail d'un jeu client / serveur basé sur App Engine. Vous pouvez le bifurquer sur GitHub et essayer la démo en direct .

Je n'ai pas encore écrit à ce sujet ou quoi que ce soit, mais le code est relativement bien commenté. S'amuser!

richtaur
la source
0

Pour quelque chose d'aussi simple, je recommanderais d'utiliser python (et en général, l'expérience GAE python est assez bonne.)

Je suis à peu près sûr que pour ce que vous voulez faire, le simple didacticiel et la documentation du moteur d'application suffiront. Vous souhaitez créer une application qui dispose de 3 contrôleurs (vérifier les informations d'identification, créer des informations d'identification et répondre à marco-polo).

Il y a un tas d'exemples open source de code python pour le moteur d'application dans github, et beaucoup de documentation sur le site officiel, je dirais allez l'essayer et si vous rencontrez un mur posez une question spécifique = D

J'espère que cela pourra aider!

DFectuoso
la source
L'apprentissage d'un nouveau langage (python) n'est pas dans la spécification client; Je connais Java et je suis soumis à des contraintes de temps. La hiérarchie des objets doit être similaire, non? Je comprends que ce que je demande est très très très simple. Mais j'ai fait les tutoriels, et ce n'est pas en cliquant pour moi. De plus, les tutoriels ne montrent pas tout à fait ce que je demande, et je n'arrive pas à comprendre comment convertir en "non-compte Google".
Olie
0

La partie qui ne cliquait pas pour moi - et, comme je le soupçonnais, était très très simple - était qu'il s'agit simplement d'implémenter la routine doPost () (ou doGet (), mais j'utilise POST), et d'écrire retour au répondant.

Il y avait aussi quelques bits que je n'ai pas suivis correctement la première fois à propos de la configuration des noms de classe et des URL des répondeurs, dans le fichier web.xml (dans le dossier war).

Une fois que j'ai installé (web.xml) correctement, la routine doPost () était simplement quelque chose comme:

public void doPost(HttpServletRequest req, HttpServletResponse resp)
  throws IOException {
    String reqTypeStr = req.getParameter("reqType");
    if (reqTypeStr.equalsIgnoreCase("marco")
        resp.getWriter().println("Polo!");
    else
            resp.getWriter().println("huh?");
}

Il y a une myriade d'autres détails mais ce sont les deux qui m'ont le plus suspendu. Une fois que j'ai franchi cette simple barrière, tout le reste a coulé très rapidement.

Olie
la source
REMARQUE: cela ne me pointe toujours pas vers un didacticiel / procédure pas à pas décent, ce que j'ai demandé à l'origine, donc si quelqu'un me pointe vers un brillant, je marquerai cela comme la bonne réponse.
Olie