Bahasa apa yang digunakan untuk mengembangkan MMORPG seperti EVE Online dan WOW? [Tutup]

22

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?

Vaillancourt
sumber
Saya pikir hampir setiap MMO memulai dengan teknologi yang tidak tersedia dan kemudian menyesuaikannya begitu mereka tumbuh dengan ukuran tertentu dan mulai benar-benar mengkhususkan alat mereka. I / O Stackless di EVE Online adalah contoh fantastis: eveonline.com/devblog.asp?a=blog&bid=584
Michael Stum
Apakah maksud Anda panggilan TCP ke server? HTTP (HyperText Transfer Protocol) digunakan oleh server web dan browser untuk halaman web dan tidak ada hubungannya dengan MMO kecuali Anda maksudkan game berbasis browser seperti urbandead.
stonemetal
Michael Stum, Apakah Stackless I / O dibuat dengan Stackless Python?
@Adam tidak tahu apakah keduanya terkait atau tidak.
Michael Stum
@Michael Stum Baru tahu bahwa itu dari video ini us.pycon.org/2009/conference/schedule/event/91

Jawaban:

30

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.

pembuat kode
sumber
coderanger jadi ketika Anda mengatakan 'klien sangat stateful' maksud Anda bahwa aplikasi klien menyimpan semua data di sana dan tidak selalu mengirim permintaan ke server? juga, bagaimana seseorang belajar tentang mengembangkan server khusus dan protokol khusus?
2
Ya, untuk mengurangi lalu lintas jaringan, klien menyimpan banyak informasi secara lokal (tidak seperti dalam game web yang biasanya semuanya datang langsung dari server). Server masih berwibawa, untuk mencegah kecurangan. Adapun belajar tentang bagaimana mengembangkan hal semacam ini. Saya akan mencari buku tentang "pemrograman jaringan". Ada banyak alat di luar sana yang dapat membantu, Twisted, Protokol Buffer, dll. Banyak tergantung pada bahasa apa dan kerangka kerja Anda yang paling nyaman.
coderanger
3
Panda3d diprogram dalam C ++, bukan C.
jokoon
5

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.).

Dalin Seivewright
sumber
3

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.

Sudahlah
sumber
3

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.

jokoon
sumber
3
"Saya pikir orang yang bertanggung jawab atas bagian jaringan WoW mungkin benar-benar badass." Populasi server kecil dan pergerakan sisi klien tidak benar-benar membuat buruk, menurut pendapat saya. Meski melihat ke belakang juga 20/20.
0

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.

Sergio Tulentsev
sumber
0

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.

Kyle C
sumber
ketika seseorang memodifikasi bahasa seperti Lua, maksud Anda mereka menciptakan kerangka kerja pribadi mereka sendiri yang didasarkan pada Lua. Benar? Jika demikian, apakah ini mengurangi kinerja / kecepatan program yang dikembangkan?
@ J3M7OR3 - Ini adalah pemahaman saya bahwa mereka membuat kerangka internal mereka sendiri berdasarkan Lua, tapi saya tidak bisa mengatakan tentang kinerja / kecepatan.
Kyle C