Cómo jugar al cliente / servidor con Google App Engine (en busca de un tutorial)

11

(NOTA: Este es un duplicado de una pregunta que hice en SO, después de haberme olvidado temporalmente de GameDev <cuelgue la cabeza avergonzado>. Cuando responda una, la vincularé de nuevo a la otra).

Estoy tratando de hacer mi primer juego cliente / servidor usando Google Apps Engine como mi back-end (requisito de especificación). He hecho los tutoriales (Java), pero todo parece estar muy centrado en el navegador.

Básicamente, me gustaría que mi aplicación (móvil, no es importante):

  • Permitir al usuario crear una cuenta de juego (¡NO su cuenta de Google!)
  • Inicia sesión con esa cuenta.
  • Presione el botón "MARCO" para enviar una solicitud identificada por la cuenta al servidor.
  • Obtenga una respuesta "POLO" del servidor.
    • Como datos (como un objeto JSON, XML-DOM o similar), no como una página web.

¿Alguien puede señalarme un buen tutorial / proyecto de muestra / lectura detallada para ayudarme a lograr eso? Estoy bastante seguro de que, una vez que empiece a funcionar, puedo hacer todo el resto, pero tengo el problema de "atascado en la puerta de inicio", no poder resolver el inicio de sesión básico de la cuenta, y intercambio de datos no HTML.

¡Gracias!

Olie
fuente
¿El lado del servidor se escribirá en Java o Python? ¿Bastará con una base de datos simple en el servidor o necesita realizar mucha lógica de juego?
Alex Schearer
@ Alex: Estoy escribiendo en Java. Habrá una base de datos simple y algo de lógica del juego, aunque no estoy seguro de por qué eso es importante para mi pregunta. La parte en la que me estoy atorando es en la configuración de la autenticación de usuario. El ejemplo de Marco / Polo fue solo un trivial intercambio de datos del juego, pero la parte clave con la que tengo problemas es la autenticación del usuario.
Olie

Respuestas:

0

Para algo así de simple, recomendaría usar Python (y, en general, la experiencia de Python GAE es bastante buena).

Estoy bastante seguro de que para lo que quieres hacer, el simple tutorial y la documentación del motor de aplicaciones serán suficientes. Desea crear una aplicación que tenga 3 controladores (verificar credenciales, crear credenciales y responder marco-polo).

Hay un montón de ejemplos de código abierto de código python para el motor de la aplicación en github, y mucha documentación en el sitio oficial, diría que vaya a probarlo y si se encuentra con un muro, haga una pregunta específica = D

¡Espero que ayude!

DFectuoso
fuente
Aprender un nuevo idioma (python) no está en la especificación del cliente; Conozco Java, y tengo poco tiempo. La jerarquía de objetos debería ser similar, ¿no? Entiendo que lo que pregunto es muy, muy simple. Pero he hecho los tutoriales, y simplemente no está haciendo clic para mí. Además, los tutoriales no muestran exactamente lo que estoy preguntando, y no puedo entender cómo convertirlos a "no cuentas de Google".
Olie
0

La parte que no estaba haciendo clic para mí, y, como sospechaba, era muy simple, era que solo era cuestión de implementar la rutina doPost () (o doGet (), pero uso POST), y escribir De vuelta al respondedor.

También hubo algunos bits que no seguí correctamente la primera vez sobre la configuración de los nombres de clase y las URL del respondedor, en el archivo web.xml (en la carpeta war).

Una vez que configuré correctamente (web.xml), la rutina doPost () fue simplemente algo similar a:

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?");
}

Hay muchos otros detalles, pero esos fueron los dos que más me colgaron. Una vez que rompí esa simple barrera, todo lo demás fluyó muy rápido.

Olie
fuente
NOTA: Esto todavía no me apunta a un tutorial / tutorial decente, que es lo que pedí originalmente, así que si alguien me señala uno brillante de esos, lo marcaré como la respuesta correcta.
Olie