Чи є Google App Engine хорошою платформою для онлайн-MMO?


10

Я дивлюся на деякі ідеї створення гри MMORPG в масштабі невеликого розміру, що базується на Java, це проект, який допомагає моєму навчальному процесу

Я вже грав із GAE і створив простий веб-додаток, я думаю використовувати це як свою платформу для гри

Це гарна ідея? Чи є там ігри, які використовують таку платформу? Я поки що не бачу жодних обмежень, окрім Google, можливо, я зможу "володіти" ним, а не я

Відповіді:


3

Сортування, залежить від того, скільки вам потрібно затримка / швидкість.

Кожен http-запит (на спеціалізований сервер) займає від 300 до 600 мс. У двигуні програми, який виглядає більше як 600-900 мс або навіть більше (якщо у вас багато запитів). При цьому одне підключення до ГАЕ має тривати менше 30 секунд, тож ...

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

Якщо ви хочете грати в режимі реального часу, вам потрібно залишити HTTP і перейти до TCP або UDP (особливо UDP).

Сказавши, що якщо повільна затримка / не в режимі реального часу досить хороша для вашої гри, GAE масштабує досить дешево і вирішує безліч проблем (немає обмеження на розмір db, ніяких проблем зі спамом з великою кількістю електронних листів тощо)


TCP насправді не є можливим, якщо ви хочете в режимі реального часу.
o0 '.

4
^^^ Поширений міф
U62,

* Для різних значень реального часу.
DFectuoso

1
TCP справляється в режимі реального часу просто чудово, якщо ви керуєте своїми пакетами належним чином. Немає сенсу надсилати 10 пакетів до одного пункту призначення протягом декількох мілісекунд, коли ви можете згрупувати їх разом.
Стівен Белангер

@Stephen: правильно. використовуючи правильну техніку, ви можете домогтися швидкості та надійності, що єдиним лівим хвилюванням буде швидкість з'єднання.
Moshe Revah

3

Це не зовсім MMO, але ось одна стаття, яку я нещодавно прочитав про використання App Engine як бек-енду ігрового сервера:

http://gamesfromwithin.com/google-app-engine-as-back-end-for-iphone-apps

Я використовував GAE як бек-енд для декількох моїх проектів, жоден з яких не був MMO, але я, безумовно, ціную це як сильну платформу для веб-розробок, з якою легко працювати в цілому, і рішуче дешево експериментувати і завантажувач від.

Як зазначає @DFectuoso, для MMO в режимі реального часу у вас виникнуть деякі проблеми за допомогою будь-якого веб-сервера, особливо менше App Engine. Однак покроковий та / або соціальний MMO цілком можливо може використовувати App Engine як єдиний бек-енд.

Зрештою, це залежить від вашої архітектури гри. Існують стратегії роботи в режимі реального часу або підробленого реального часу, коли основним сервером є веб-сервер, як App Engine:

  • Ви можете робити комунікації в режимі реального часу одноранговими, лише оновлюючи сервер у ключові моменти.
  • Ви можете спробувати спілкуватися в режимі реального часу з такими стратегіями, як тривале опитування, яке останнім часом також називають "кометними запитами", в яких ви робите запити на веб-сервер і сервер ніколи не "закінчує" відповідь, що призводить до дуже тривалих запитів / опитування, але дозволяє веб-серверу постійно надсилати нові дані, коли вони стають доступними. (Поглиблена підтримка комет - це майбутня функція в App Engine, відповідно до дорожньої карти.)
  • У випадку App Engine ви також можете використовувати XMPP / Jabber (відкритий протокол чату) для швидкої комунікації (майже в режимі реального часу) зі своїм ігровим сервером. Це може бути не чудовим місцем для створення повноцінної гри в режимі реального часу, але є багато цікавих чатів для чатів, написаних за допомогою підтримки XMPP App Engine.

Це інструмент відстеження проблем підтримки Comet (оскільки я ще не зміг вставити посилання у фактичну публікацію - очевидно, мені потрібно більше балів репутації): code.google.com/p/googleappengine/isissue/detail?id=377
WorldMaker
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.