Как сделать игру клиент / сервер с помощью Google App Engine - PullRequest
3 голосов
/ 27 июля 2010

Я пытаюсь сделать свою первую клиент-серверную игру с использованием Google Apps Engine в качестве бэкэнда (требования спецификации). Я прошел учебные курсы (Java), но все это в значительной степени ориентировано на браузер.

По сути, я бы хотел, чтобы мое (мобильное, неважное) приложение:

  • Разрешить пользователю создавать игровую учетную запись ( НЕ свою учетную запись Google!)
  • Войдите в систему с этой учетной записью.
  • Нажмите кнопку «MARCO», чтобы отправить запрос идентифицированный учетной записью на сервер.
  • Получить ответ "POLO" с сервера.
    • Как данные (например, объект JSON, XML-DOM или аналогичные), а не как веб-страница.

Может кто-нибудь указать мне хороший учебник / пример проекта / подробное чтение, чтобы помочь мне достичь этого? Я почти уверен, что, как только я получу эту работу, я смогу сделать все остальное - но у меня проблема «застрял у стартовых ворот», я не в состоянии работать с базовым входом в учетную запись и обмен данными не в формате HTML.

Спасибо!

Ответы [ 5 ]

4 голосов
/ 28 июля 2010

К сожалению, все мои знания AppEngine используют их Python SDK, но он "должен" переводить на Java.

Для начала вам необходимо создать пользовательскую систему.Я создал несколько в качестве оболочки для системы учетных записей Google, но если вам не нужны учетные записи Google, вы можете создать простую систему пользовательских таблиц и сеансов.Концепции довольно просты, но вы можете увидеть, как он построен поверх AppEngine, взглянув сюда: http://github.com/aht/suas

В этом примере пользовательской системы есть ошибки (файлы cookie), но вам все равновы не будете использовать куки.На самом деле вам просто нужна возможность хранить учетные записи пользователей, проходить аутентификацию на этих учетных записях, запускать сеанс с аутентифицированной учетной записью и передавать ключ сеанса обратно клиентскому приложению.Затем клиентское приложение использует этот ключ сеанса для аутентификации в будущем.Части, которые выполняют большую часть этого, можно найти в примере suas, который я привел выше.

Если у вас есть возможность запускать и проверять подлинность сеансов, тогда вам действительно нужна возможность выполнять RPC-операции на сервере из приложения.,То, как вы инициируете RPC, зависит от платформы приложения, но при общении с AppEngine вам нужно поговорить по HTTP.По сути, клиент будет отправлять HTTP-запросы POST на сервер, причем тело POST представляет собой объект JSON / XML, содержащий ключ сеанса, имя функции, которую вы хотите вызвать, и любые аргументы этой функции.Ответ от сервера будет HTTP-ответом, а тело ответа будет просто объектом JSON / XML.В Python вы можете использовать API simplejson для простого преобразования Python-диктов в JSON, и есть XML-библиотека, которая работает аналогично.Должен быть эквивалентный Java API.

Пример выполнения запросов RPC через HTTP к AppEngine (опять же на Python, извините) можно найти здесь: http://code.google.com/appengine/articles/rpc.html

Вы можете пропустить всеклиентский материал, если вы не используете JavaScript (который на самом деле является отличным способом для создания прототипа тестового клиента для этого).Вам будет интересно узнать, как сервер определяет, какую функцию вызывать и как она реагирует:

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

Надеюсь, что это поможет вам начать работу над этим проектом.Удачи!

1 голос
/ 28 июля 2010

Вы можете использовать spring-security для управления пользователями и сеансами.

0 голосов
/ 05 сентября 2013

Вы можете использовать других клиентов и не использовать свой собственный клиент, который будет глупо тратить ваше время. Я исследовал весь интернет, и они не дают конкретных инструкций о том, как создать клиент / сервер для игр или чего-либо еще.

0 голосов
/ 26 марта 2011

Ваше мобильное приложение будет связываться с вашим приложением GAE через HTTP.Вы должны прочитать о том, как обрабатывать http-запросы (POST / GET) в GAE.Содержимое этих запросов будет в формате JSON или XML или чего-то, что легко понять с обеих сторон (не в формате html, как вы говорите сами).

Разрешить пользователю создавать игровой аккаунт (НЕ его Googleучетная запись!)

Просмотрите параметры базы данных механизма приложений для хранения данных ваших пользователей.

Войдите в систему с этой учетной записью.

Мобильныйприложение отправляет запрос POST в GAE, ваш код GAE проверяет имя пользователя / pwdhash.

Нажмите кнопку «MARCO», чтобы отправить на сервер запрос, идентифицированный с учетной записью.

Сеансы ядра приложения - проверьте их.Клиент получает cookie, если авторизация прошла успешно.Cookie автоматически отправляется со всеми запросами в GAE.Это автоматически проверяет сеанс клиента.

Получить ответ «POLO» от сервера.

... ответить сообщением HTTP.

Как данные (например, объект JSON, XML-DOM или аналогичные), а не как веб-страница.

Ответ веб-страницы (html) и ответ JSON отличаются толькозаголовки (Content-Type) и полезные данные (символьные данные http, символьные данные json).Оба могут быть отправлены через http.

0 голосов
/ 28 июля 2010

Я использовал несколько библиотек в своем проекте, которые сведут к минимуму ваши усилия по написанию кода в GAE.

1) вы можете использовать objectify для минимизации усилий по кодированию JPA / JDO

2) использовать JDOM для создания и анализа xml

3) использовать JSON JAVA API Java от Google, который они использовали в проекте оболочки переводчика Google http://code.google.com/p/google-api-translate-java/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...