Google App Engine은 온라인 MMO를위한 훌륭한 플랫폼입니까?


10

Java 기반의 smale scale MMORPG 게임을 만드는 아이디어를 찾고 있습니다. 이것은 내 학습 과정을 돕는 측면 / 취미 프로젝트입니다.

이미 GAE와 함께 플레이하고 간단한 웹 앱을 만들었습니다. 이것을 게임의 플랫폼으로 사용하려고합니다.

이것이 좋은 생각입니까? 그러한 플랫폼을 사용하는 게임이 있습니까? 지금까지 Google에서 제한하지 않고 자신이 아닌 '소유'할 수 있습니다.

답변:


3

대기 시간 / 속도의 정도에 따라 다릅니다.

전용 서버에 대한 모든 http 요청은 300-600ms 사이에 걸립니다. 600-900ms 이상으로 보이는 앱 엔진에서 (많은 쿼리가있는 경우). 동시에 GAE에 대한 단일 연결은 30 초 미만이어야하므로 ...

그 의미는 느린 폴링을 수행해야한다는 것인데, 이는 실시간 게임이 아닌 일부 턴 기반 게임에 충분할 수 있습니다.

실시간 게임을하려면 HTTP를 그대로두고 TCP 또는 UDP (특히 UDP)로 이동해야합니다.

대기 시간이 느리거나 실시간이 아닌 연결이 게임에 충분할 경우 GAE는 상당히 저렴하게 확장되며 많은 문제를 해결합니다 (DB의 크기에 대한 제한 없음, 많은 양의 이메일에 대한 스팸 문제 없음) 등)


실시간을 원한다면 TCP는 실제로 옵션이 아닙니다.
o0 '.

4
^^^ 일반적인 신화
U62

* 다른 실시간 값.
DFectuoso

1
패킷을 올바르게 관리하면 TCP가 실시간을 잘 처리합니다. 패킷을 그룹화 할 수있는 경우 몇 밀리 초 내에 동일한 대상에 10 개의 패킷을 보낼 필요가 없습니다.
스티븐 벨랑 게르

@Stephen : 그렇습니다. 올바른 기술을 사용하면 연결 속도 만 남게되는 속도와 안정성을 얻을 수 있습니다.
모쉐 레바

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과 같은 웹 서버 인 경우 거의 실시간으로 또는 실시간으로 가짜 전략을 세울 수 있습니다.

  • 실시간 통신 피어 투 피어를 수행하고 중요한 순간에만 서버를 업데이트 할 수 있습니다.
  • "폴링 요청"이라고도하는 긴 폴링과 같은 전략으로 실시간 통신을 시도 할 수 있습니다.이 요청을 웹 서버에 요청하면 서버가 응답을 "완료"하여 요청이 너무 길지 않습니다. / polling을 사용하지만 웹 서버가 새로운 데이터를 계속 사용할 수있게합니다. 로드맵에 따르면, 딥 혜성 지원은 App Engine에서 곧 제공 될 기능입니다.
  • App Engine의 경우 XMPP / Jabber (개방 IM 프로토콜)를 사용하여 게임 서버와 신속하게 (실시간 거의) 통신 할 수 있습니다. 완전한 실시간 게임을 제작하기에는 좋은 곳은 아니지만 App Engine의 XMPP 지원으로 작성된 재미있는 채팅 봇이 많이 있습니다.

이것은 Comet 지원에 대한 이슈 트래커입니다 (실제 게시물에 링크를 아직 포함시킬 수 없었기 때문에 분명히 명성이 더 필요하기 때문에) : code.google.com/p/googleappengine/issues/detail?id=377
WorldMaker
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.