代码之家  ›  专栏  ›  技术社区  ›  Olie

如何使用谷歌应用引擎制作客户端/服务器游戏

  •  3
  • Olie  · 技术社区  · 15 年前

    我正在尝试使用谷歌AppEngine作为我的后端(规格要求)来做我的第一个客户/服务器游戏。我已经做了教程(Java),但是所有这些都是以浏览器为中心的。

    基本上,我希望我的(手机,不重要)应用程序:

    • 允许用户创建游戏帐户( 不是 他们的谷歌账户!)
    • 用那个帐户登录。
    • 按“marco”按钮向服务器发送一个已识别的帐户请求。
    • 从服务器获取“polo”响应。
      • 作为数据(如JSON对象、XML-DOM或类似对象),而不是作为网页。

    有人能给我指出一个好的教程/示例项目/详细的阅读来帮助我实现这一点吗?我很肯定,一旦我能做到这一点,我就可以完成剩下的所有工作——但我有一个“卡在起点”的问题,无法完成基本的帐户登录和非HTML数据交换。

    谢谢!

    5 回复  |  直到 12 年前
        1
  •  4
  •   Bryce Cutt    15 年前

    不幸的是,我所有的AppEngine知识都在使用他们的Python SDK,但是它应该被翻译成Java。

    您需要先构建一个用户系统。我已经构建了一些围绕谷歌帐户系统的包装器,但是如果你不想要谷歌帐户,那么你可以自己构建一个简单的用户表和会话系统。这些概念非常简单,但您可以通过查看以下内容来了解如何在外观之上构建一个: http://github.com/aht/suas

    这个示例用户系统有bug(cookie的东西),但是你不会在意,因为你不会使用cookie。实际上,您只需要能够存储用户帐户、对这些帐户进行身份验证、使用经过身份验证的帐户启动会话,并将会话密钥传递回客户端应用程序。客户端应用程序随后使用该会话密钥进行身份验证。要做的大部分工作可以从我上面给出的suas例子中得到启发。

    一旦你有能力启动和验证会话,那么你真的只需要有能力从应用程序对服务器进行RPC。如何启动RPC取决于应用程序平台,但是在与AppEngine对话时,需要与HTTP对话。基本上,客户机将向服务器发出HTTP POST请求,POST的主体是一个JSON/XML对象,其中包含会话密钥、要调用的函数的名称以及该函数的任何参数。服务器的响应将是一个HTTP响应,响应的主体只是一个JSON/XML对象。在python中,可以使用simplejson API轻松地将python dicts转换为json,并且有一个XML库的工作方式类似。必须有一个等价的Java API。

    通过HTTP执行RPC请求以出现(同样在python中,对不起)的示例如下: http://code.google.com/appengine/articles/rpc.html

    您可以跳过所有的客户机内容,除非您使用的是JavaScript(这实际上是一种很好的测试客户机原型的方法)。您将感兴趣的部分是服务器如何确定要调用的函数及其响应方式:

    self.response.out.write(simplejson.dumps(result))
    

    希望其中一些能让你开始这个项目。祝你好运!

        2
  •  1
  •   Gopi    15 年前

    您可以使用 spring-security 用于用户和会话管理。

        3
  •  0
  •   sohilv    15 年前

    我在我的项目中使用了很少的库,它们将最小化您在GAE中的编码工作。

    1)您可以使用Objectify最小化JPA/JDO编码工作。

    2)使用JDOM创建和解析XML

    3)使用JSON谷歌的JSONJAVA API,它们在谷歌翻译器包装器项目中使用 http://code.google.com/p/google-api-translate-java/

        4
  •  0
  •   oberhamsi    15 年前

    您的移动应用程序将通过HTTP与GAE应用程序通信。您应该了解如何在GAE中处理HTTP请求(post/get)。这些请求的内容将是JSON或XML或者双方都很容易理解的东西(不是您自己说的HTML)。

    允许用户创建游戏帐户(而不是他们的Google帐户!)

    查看应用引擎数据库选项以存储用户数据。

    用那个帐户登录。

    移动应用程序向GAE发送一个POST请求,您的GAE代码验证用户名/pwdhash。

    按“marco”按钮向服务器发送一个已识别的帐户请求。

    应用引擎会话-查看它们。如果授权成功,客户端将获得一个cookie。cookie会随所有请求自动发送给gae。这将自动验证客户端会话。

    从服务器获取“polo”响应。

    …用HTTP消息响应。

    作为数据(如JSON对象、XML-DOM或类似对象),而不是作为网页。

    网页响应(HTML)和JSON响应的标题不同。( Content-Type )和有效载荷(HTTP字符数据、JSON字符数据)。两者都可以通过HTTP发送。

        5
  •  -1
  •   Nat    12 年前

    你可以使用其他客户,而不是自己的客户,这会浪费你的时间。我对互联网进行了全面的研究,他们没有给出关于如何创建游戏客户端/服务器的具体说明。