Apakah Google App Engine platform yang baik untuk MMO online?

10

Saya melihat beberapa ide untuk membuat game MMORPG skala smale, yang berbasis di Jawa, ini adalah proyek sampingan / hobi untuk membantu proses pembelajaran saya

Saya sudah pernah bermain dengan GAE dan telah memasang aplikasi web sederhana, saya berpikir untuk menggunakan ini sebagai platform saya untuk sebuah game

Apakah ini ide yang bagus? Apakah ada game di luar sana yang menggunakan platform seperti itu? Saya tidak bisa melihat batasan apa pun sejauh ini, selain Google mungkin bisa "memilikinya" daripada saya sendiri

pengguna155695
sumber

Jawaban:

3

Semacam itu, tergantung pada seberapa banyak latensi / kecepatan yang Anda butuhkan.

Setiap permintaan http (ke server khusus) memakan waktu antara 300-600 ms. Di mesin aplikasi yang terlihat lebih seperti 600-900 ms atau bahkan lebih (jika Anda memiliki banyak pertanyaan). Pada saat yang sama satu koneksi ke GAE harus bertahan kurang dari 30 detik, jadi ...

Apa artinya semua itu adalah Anda harus melakukan polling lambat, yang mungkin cukup baik untuk beberapa game berbasis giliran, bukan waktu nyata.

Jika Anda ingin melakukan permainan waktu nyata Anda harus meninggalkan HTTP dan pergi ke TCP atau UDP (terutama UDP).

Karena itu, jika latensi yang lambat / koneksi non-real time cukup baik untuk gim Anda, GAE berskala cukup murah, dan menyelesaikan banyak masalah (tidak ada batasan pada ukuran db, tidak ada masalah spam dengan sejumlah besar email , dll)

DFectuoso
sumber
TCP sebenarnya bukan pilihan jika Anda menginginkan waktu nyata.
o0 '.
4
^^^ Mitos umum
U62
* Untuk nilai realtime yang berbeda.
DFectuoso
1
TCP menangani real-time dengan baik, jika Anda mengelola paket dengan benar. Tidak ada gunanya mengirim 10 paket ke tujuan yang sama dalam beberapa milidetik, ketika Anda dapat mengelompokkannya.
Stephen Belanger
@Stephen: benar. menggunakan teknik yang tepat, Anda dapat mencapai kecepatan & keandalan yang hanya dikhawatirkan adalah kecepatan koneksi.
Moshe Revah
3

Ini bukan MMO, tapi inilah satu artikel yang saya baca baru-baru ini tentang menggunakan App Engine sebagai server game back-end:

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

Saya telah menggunakan GAE sebagai back-end untuk beberapa proyek saya, tidak ada yang merupakan MMO, tapi saya tentu menghargai itu sebagai platform pengembangan web yang kuat yang mudah untuk bekerja dengan secara umum, dan jelas murah untuk bereksperimen dengan dan bootstrap dari.

Seperti @DFectuoso tunjukkan, untuk MMO real-time Anda akan memiliki beberapa masalah menggunakan server web apa pun, apalagi App Engine pada khususnya. Namun, MMO berbasis giliran dan / atau sosial sangat mungkin dapat menggunakan App Engine sebagai satu-satunya back-end.

Pada akhirnya itu tergantung pada arsitektur gim Anda. Ada strategi untuk melakukan real-time dekat atau memalsukan real-time di mana server utama adalah server web seperti App Engine:

  • Anda dapat melakukan komunikasi real-time peer-to-peer, hanya memperbarui server pada saat-saat penting.
  • Anda dapat mencoba beberapa komunikasi waktu nyata dengan strategi seperti polling panjang, yang juga disebut belakangan ini sebagai "permintaan komet", di mana Anda membuat permintaan ke server web dan server tidak pernah "menyelesaikan" respons yang menghasilkan permintaan yang sangat panjang / polling, tetapi memungkinkan server web untuk terus mendorong data baru saat tersedia. (Dukungan komet yang lebih dalam adalah fitur yang akan datang di App Engine, sesuai dengan peta jalan.)
  • Dalam kasus App Engine, Anda juga dapat menggunakan XMPP / Jabber (protokol IM terbuka) untuk berkomunikasi dengan cepat (hampir real-time) dengan server game Anda. Ini mungkin bukan tempat yang bagus untuk membangun gim real-time penuh, tetapi ada banyak bot obrolan menarik yang ditulis dengan dukungan XMPP App Engine.
WorldMaker
sumber
Ini adalah pelacak masalah untuk dukungan Comet (karena saya belum bisa menyematkan tautan di pos yang sebenarnya - tampaknya membutuhkan lebih banyak poin reputasi): code.google.com/p/googleappengine/issues/detail?id=377
WorldMaker