Seperti yang saya pahami, MMORPG adalah gim yang berjalan di komputer Anda seperti gim video 3d normal lainnya, tetapi, dengan setiap tindakan yang terjadi dalam gim tersebut, perubahan dilakukan ke alam semesta melalui panggilan HTTP ke server. Jadi para pemain komputer melakukan semua pekerjaan berat dalam hal rendering grafik dan animasi tetapi, kerangka kerja web melakukan komunikasi online.
Jadi saya bertanya-tanya apa kerangka kerja web, server web, dan basis data yang digunakan untuk membuat MMORPG seperti EVE Online dan WOW?
Juga, bahasa pemrograman apa dan mesin game 3d yang digunakan untuk membuat sisi klien (grafis 3d / animasi / suara) bagian dari game?
Jawaban:
Sebagian besar perusahaan menggunakan C ++. Eve adalah outlier, mesin grafis inti dalam C ++, sedangkan logika permainan, seperti yang telah dicatat orang lain, dalam Python. CCP juga membuat banyak kontribusi untuk Stackless sendiri, yang sebagian besar dalam bahasa C. WoW adalah C ++ untuk game itu sendiri, meskipun UI ditulis dalam Lua. Cryptic (Champions Online, Star Trek Online) menggunakan plain C, tetapi agak jarang di industri. Java muncul setiap sekarang dan kemudian, ex. Runescape, tapi saya tidak bisa memikirkan apa pun AAA. Disney telah menggunakan Panda3D (mesin berbasis Python yang ditulis dalam C) untuk sejumlah MMO mereka, tetapi seperti Eve, hal itu tidak umum.
Secara keseluruhan sepertinya C ++ untuk logika game dan engine, dengan Lua untuk scripting klien adalah yang paling dekat dengan standar.
Adapun sisi web, semuanya sudah berakhir. Kami (Cryptic) menggunakan campuran PHP, C, dan Python (Django) untuk berbagai bit. CCP menggunakan ASP untuk situs web itu sendiri, dan Python untuk memberi daya pada backend (meskipun perlahan-lahan melayang bersama). WAR dan LOTRO sama-sama menggunakan PHP untuk situs mereka, meskipun tidak jelas kerangka kerja apa yang mereka gunakan (jika ada).
Anda menyebutkan bahwa MMO bekerja melalui panggilan API web, yang sebenarnya tidak demikian. Protokol berbasis HTTP akan terlalu tidak efisien, dan HTTP tidak dirancang untuk koneksi yang berjalan lama. Hampir semua MMO (yang tidak berbasis web seperti Kingdom of Loathing atau Urban Dead) menggunakan server khusus dan protokol khusus. Klien sangat stateful, melakukan sesuatu seperti memunculkan UI inventaris tidak akan memadamkan permintaan ke server karena semua informasi itu di-cache pada klien.
sumber
Beberapa tautan untuk EVE Online:
Pada dasarnya, EVE Online berjalan pada SQL Server 2005 dan beberapa perangkat lunak Microsoft lainnya. Tulang belakang klien sebagian besar ditulis dalam Python (Stackless Python tepatnya, dari apa yang saya ingat) dan beberapa C ++ kemungkinan besar.
Adapun World of Warcraft, saya tahu mereka menggunakan Lua untuk semua hal-hal GUI klien, tetapi selain itu saya tidak berpikir mereka menggunakan Lua untuk hal lain. C ++ kemungkinan adalah apa yang digunakan. WoW, saya pikir juga menggunakan beberapa kotak Windows tetapi sepertinya mereka akan memiliki beberapa jenis kotak khusus untuk tugas-tugas tertentu yang mungkin tidak berbasis Windows sama sekali.
Tidak banyak info, tapi semoga membantu.
Banyak dari game-game ini yang memisahkan server berdasarkan fungsionalitas, sehingga mereka akan memiliki server database yang hanya bertanggung jawab untuk menyimpan objek / apa pun dan server yang benar-benar menjalankan dunia game (memvalidasi tindakan pemain, dll.).
sumber
Saya tidak begitu yakin tentang EVE dan WoW, tapi saya pernah melihat game MMO menggunakan C ++, C #, Java dan bahkan PHP untuk server (yang terakhir hanya untuk game berbasis browser yang sederhana).
Klien paling sering ditulis dalam C ++ (atau Flash jika itu adalah game berbasis browser); Saya pernah bekerja dengan klien berbasis NET. (C # dicampur dengan C ++ / CLI).
Dan hampir selalu beberapa jenis bahasa scripting dinamis digunakan untuk memfasilitasi pengembangan konten "perancang" - mis. Kemampuan, pencarian, dll - hal-hal yang sering berubah, dan dapat diubah oleh perancang gim sebagai lawan pemrogram.
sumber
Pertama, MMORPG atau game online apa pun tidak menggunakan HTTP atau "kerangka kerja web".
Server diprogram seperti gim itu sendiri, dalam C ++, dan komunikasi dicapai dengan menggunakan soket untuk mengirimkan paket melalui jaringan.
Server sering menjalankan OS lain, dan hanya menyertakan kode permainan, sehingga banyak pemain dapat bermain di satu server dengan lancar.
Saya tidak tahu bagaimana badai salju mengelola server mereka, saya tidak tahu apakah mereka menggunakan cluster atau tidak.
Tentu saja ketika saya mengatakan "soket" dan "C ++", saya berbicara tentang permainan waktu nyata, bukan layanan lain yang mungkin ditawarkan permainan, seperti gudang senjata dengan WoW misalnya. Mereka mungkin hanya menggunakan database yang dapat dibaca dari beberapa layanan, seperti forum, gudang senjata, permainan, administrasi akun dll, tetapi saya berpikir bahwa mereka memiliki basis data dependen, yang mencari entri baru dll, sehingga semuanya dapat disinkronkan dengan baik.
Saya pikir orang yang bertanggung jawab atas bagian jaringan WoW mungkin benar-benar badass.
sumber
Untuk EVE, mereka memberikan ceramah tentang StacklessIO di PyCon 2009: http://us.pycon.org/2009/conference/schedule/event/91/
sumber
Ada puluhan mesin game di luar sana. Dua yang muncul di pikiran saya adalah mesin dan Sumber Unreal.
Adapun bahasa, itu tergantung pada tugas. Render dan bagian penting kinerja lainnya biasanya dilakukan dalam salah satu bahasa asli. C ++ misalnya. Tetapi adalah umum untuk menggunakan beberapa bahasa dinamis untuk mendefinisikan skrip karena kode ini lebih cenderung berubah dan sering ditulis oleh lebih sedikit programmer 'hardcore' :-) Lua, Python, Ruby - semuanya dapat digunakan di sini.
sumber
WoW menggunakan Lua untuk semua skrip internal mereka juga. Saya tidak yakin apakah mereka memodifikasi bahasa itu sendiri, tetapi saya tidak akan meragukannya sehingga itu bisa sesuai dengan kebutuhan mereka. Anda bisa bertaruh mereka memiliki alat yang berbeda yang memudahkan desainer mereka untuk memodifikasi / mengubah skrip. Ini adalah informasi orang dalam dari teman saya yang dulunya adalah WoW devs.
sumber