Ігровий сервер для покрокової настільної гри для android / iOS


9

В даний час я програмую гру для iPhone, і я хотів би створити онлайн-режим для кількох гравців. Надалі цей додаток стане портом до пристроїв Android, тому мені було цікаво, як створити ігровий сервер?

По-перше, яку мову я повинен вибрати? Як зробити так, щоб сервер міг спілкуватися як з програмами, написаними на aim-c, так і на Java?

Тоді, як ефективно це зробити? Чи добре, якщо я відкрию розетку клієнтом (буде 2)? Яку інформацію я повинен надсилати на сервер? до клієнтів?

Відповіді:


7

Я не маю на увазі розпочати тут священну війну, але більшість інтернет-сервісів (flickr, twitter, facebook та ін.) Відмовились від SOAP на користь RESTful веб-сервісів та JSON як серіалізованого формату. Хоча по суті те саме, служби REST покладаються на метод url та http, щоб визначити, що слід робити, наприклад

GET /articles - list all articles
POST /articles - add a new article
PUT /articles/123 - update article 123 with new data

JSON - описаний на json.org - також простіший, ніж XML, і хоч, можливо, не має значення, заощадить вам кілька байт на запит. Після попереднього прикладу, ось як описана стаття в нотації JSON:

{ 
 "id": 123,
 "author": "Cyril",
 "content": "Hello, this is an article",
 "tags": [ "gamedev", "webservices", "multiplayer" ] 
}

Для IOS є ця приємна стаття http://petermcintyre.wordpress.com/2010/11/04/consume-json-rest-in-ios/, в якій згадується http://code.google.com/p/json-framework / для аналізу та генерації даних.

Будучи покроковою, ви можете розраховувати на http-сеанси на сервері, щоб підтримувати стан, тому не потрібно підтримувати стійке з'єднання з сервером. Будь-яка мова на стороні сервера підтримує це (php, python, java тощо).

Така архітектура дозволяє масштабувати горизонтально (додаючи більше серверів) прозорим способом.


4

Оскільки ваша гра буде покрокова, оновлення в режимі реального часу не надто важливі. Найпростіший спосіб зробити це - використовувати вже вбудований сервер, я б пішов із веб-сервером. Будь-яка платформа, на яку варто перенести вашу гру, повинна полегшити доступ до веб-служб, розташованих на веб-сервері.

Щоб забезпечити оновлення майже в режимі реального часу, рекомендую переглянути довгі опитування. Код за цим посиланням забезпечує найбільш основну реалізацію тривалого опитування з боку сервера. Але суть полягає в тому, що як тільки запит робиться до ресурсу, сервер виконує виклик блокування, поки запитувані дані не стануть доступними. Потім ви повторюєте процес знову і знову.

З точки зору того, які дані вам слід надіслати назад, завжди ставитесь до клієнта як до ворожих. Клієнт повинен надіслати будь-який його поворотний стан, сервер перевірить його, а потім, якщо все перевіриться, він відправить новий "ігровий стан" назад усім підключеним клієнтам.

-

Веб-сервіси SOAP - це, мабуть, найкраще місце для запуску ( посилання ), їх легко розпочати, а більшість веб-фреймворків надають спосіб їх викриття. Ви також можете заглянути в послуги RESTful, але вони, як правило, залишають трохи більше процесу серіалізації для споживача.

Для використання веб-сервісів SOAP на Android я б тут заглянув .


Привіт і дякую за вашу відповідь. Але я ще не розумію, як надсилати дані в свою веб-службу? як серіалізувати користувальницькі дані (тут перехід на мою дошку 8 * 8, наприклад: гравець 1 від [0,0] до [1,1]), а потім як серіалізувати ігровий стан?
Кирило

Перевірте два додані мною посилання. Вони повинні розпочати роботу з веб-сервісами SOAP, що, мабуть, найпростіший спосіб розпочати роботу.
Нейт

Для Android та iOS вам не потрібно використовувати довгі опитування. Сповіщення Apple Push або Google Cloud Messaging дозволять пересилати дані з сервера на ваші пристрої.
Метт

2

Я думаю, що використання SOAP або навіть HTTP є надмірним. Просто встановіть власний протокол через ванільні TCP-з'єднання. Наприклад, інтерпретуйте кожен рядок тексту, надісланий як команду. Визначте, які команди / відповіді клієнту та серверу дозволено надсилати.

FICS працює таким чином, і він багато років обслуговує тисячі шахістів. IRC працює і так (див. RFC 1459).


HTTP пропонує декілька переваг: він може використовувати проксі, він майже ніколи не розгортається, він пропонує майже прозоре шифрування за допомогою HTTPS, має кілька методів аутентифікації ...
sam hocevar
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.