EVE OnlineやWOWなどのMMORPGの開発にはどの言語が使用されますか?[閉まっている]


22

私が理解しているように、MMORPGは他の通常の3dビデオゲームと同じようにコンピューター上で実行されるゲームですが、ゲームで発生するアクションごとに、サーバーへのHTTP呼び出しを介してユニバースが変更されます。そのため、プレーヤーのコンピューターはグラフィックスとアニメーションのレンダリングに関してすべての面倒な作業を行いますが、Webフレームワークはオンライン通信を行います。

  • EVE OnlineやWOWのようなMMORPGを作成するためにどのWebフレームワーク、Webサーバー、データベースが使用されているのでしょうか?

  • また、クライアントサイド(3Dグラフィックス/アニメーション/サウンド)をゲームの一部にするために、どのプログラミング言語と3Dゲームエンジンが使用されていますか?


ほぼすべてのMMOは既製のテクノロジーで始まり、特定のサイズに成長し、ツールを本当に専門化し始めたら、それを徹底的にカスタマイズしていると思います。EVE OnlineのスタックレスI / Oは素晴らしい例です。eveonline.com
Michael Stum

サーバーへのTCP呼び出しを意味しますか?HTTP(HyperText Transfer Protocol)は、WebサーバーやWebページのブラウザーで使用され、都会的なデッドのようなブラウザーベースのゲームを意味する場合を除き、MMOとは関係ありません。
ストーンメタル

Michael Stum、Stackless I / OはStackless Pythonで作成されていますか?

@Adamは、これら2つが関連しているかどうかはわかりません。
マイケルスタム

@Michael Stumこのビデオからであることがわかりましたus.pycon.org/2009/conference/schedule/event/91

回答:


30

ほとんどの企業はC ++を使用しています。Eveは外れ値であり、コアグラフィックエンジンはC ++であり、ゲームロジックは他の人が指摘しているようにPythonである。CCPはまた、ほとんどCにあるStackless自体にも多くの貢献をしています。WoWはゲーム自体のC ++ですが、UIはLuaでスクリプト化されています。Cryptic(Champions Online、Star Trek Online)はプレーンCを使用しますが、業界ではやや珍しいことです。時々、Javaがポップアップします。Runescape、しかし私は何も考えられないAAA。ディズニーは、多くのMMOにPanda3D(Cで記述されたPythonベースのエンジン)を使用しましたが、Eveと同様にそれは一般的ではありません。

全体的には、ゲームロジックとエンジン用のC ++と、クライアントスクリプト用のLuaが標準に最も近いようです。

Web側については、以上です。私たち(Cryptic)は、さまざまなビットにPHP、C、Python(Django)を組み合わせて使用​​します。CCPはWebサイト自体にASPを使用し、Pythonを使用してバックエンドに電力を供給します(ただし、ゆっくりとドリフトします)。WARとLOTROはどちらもサイトにPHPを使用していますが、使用している特定のフレームワーク(存在する場合)は明確ではありません。

ただし、MMOはWeb API呼び出しを介して機能すると述べましたが、そうではありません。HTTPベースのプロトコルは非常に非効率的であり、HTTPは長時間実行される接続用に設計されていません。ほとんどすべてのMMO(King of LoathingやUrban DeadのようなWebベースではない)は、カスタムサーバーとカスタムプロトコルを使用します。クライアントは非常にステートフルであり、インベントリUIを表示するなどの操作を行っても、すべての情報がクライアントにキャッシュされるため、サーバーへのリクエストは実行されません。


あなたは「クライアントは非常にステートフルです」と言うとき、あなたはクライアントアプリがそこにすべてのデータを保存していて、常にサーバーにリクエストを送信しているわけではないことを意味しますか?また、カスタムサーバーとカスタムプロトコルの開発についてどのように学びますか?

2
はい、ネットワークトラフィックを減らすために、クライアントは多くの情報をローカルにキャッシュします(通常、すべてがサーバーから直接送られるWebゲームの場合とは異なります)。ただし、不正行為を防ぐために、サーバーは依然として権限があります。この種のことを開発する方法について学ぶことに関して。「ネットワークプログラミング」に関する本を探します。などなど、ツイスト、プロトコルバッファのA多くは、あなたが最も快適であるかの言語やフレームワークにもよるが、ツールの多くは、その缶の助けはそこにあります。
coderanger

3
Panda3dはCではなくC ++でプログラミングされています。
jokoon

5

EVE Onlineのリンク:

基本的に、EVE OnlineはSQL Server 2005およびその他のMicrosoftソフトウェアで実行されます。ただし、クライアントのバックボーンは主にPython(正確にはスタックレスPython)で記述されており、おそらくC ++で書かれています。

World of Warcraftに関しては、クライアントGUIのすべてにLuaを使用していることは知っていますが、それ以外は、他のことにLuaを使用しているとは思いません。C ++が使用される可能性があります。うわー、私もいくつかのWindowsボックスを使用すると思いますが、それらはWindowsベースではないかもしれない特定のタスクに固有の他のタイプのボックスを持っているようです。

多くの情報はありませんが、役立つことを願っています。

これらのゲームの多くは、機能に基づいてサーバーを分離しているため、オブジェクト/その他の保存のみを担当するデータベースサーバーと、ゲームワールドを実際に実行するサーバー(プレイヤーアクションの検証など)があります。


3

EVEとWoWについてはよくわかりませんが、MMOゲームではC ++、C#、Java、さらにはPHPを使用します(後者は単純なブラウザベースのゲームにのみ使用されます)。

クライアントは、ほとんどの場合C ++(またはブラウザベースのゲームの場合はFlash)で記述されています。私は一度.NETベースのクライアントで作業したことがあります(C#とC ++ / CLIの混合)。

そして、ほとんどの場合、「デザイナー」コンテンツの開発を容易にするために、ある種の動的スクリプト言語が使用されます-例えば、能力、クエストなど-頻繁に変更され、プログラマーではなくゲームデザイナーによって変更できるもの。


3

まず、MMORPGまたはオンラインゲームは、最初はHTTPまたは「Webフレームワーク」を使用しません。

サーバーは、ゲーム自体と同じようにC ++でプログラムされ、ソケットを使用してネットワーク経由でパケットを送信することで通信が実現されます。

多くの場合、サーバーは別のOSを実行し、ゲームコードのみを含むため、多くのプレーヤーが1台のサーバーでスムーズにプレイできます。

ブリザードがどのようにサーバーを管理しているか、クラスターを使用しているかどうかはわかりません。

もちろん、「ソケット」と「C ++」と言うときは、リアルタイムゲームについて話しているのです。たとえば、WoWを備えた武器庫など、ゲームが提供する他のサービスではありません。彼らは、フォーラム、武器庫、ゲーム、アカウント管理などの複数のサービスから読み取ることができるデータベースを使用するだけかもしれませんが、私の考えでは、新しいエントリなどを探す従属データベースがあり、すべてが同期できると思いますうまくできました。

WoWのネットワーク部分を担当している人は、本当に悪い人かもしれません。


3
「WoWのネットワーク部分を担当している人は、本当に悪い人かもしれません。」私の意見では、サーバーの数が少ないこととクライアント側の動きが実際に悪いことをするわけではありません。後知恵も20/20です。


0

そこには数十のゲームエンジンがあります。私の頭に浮かぶ2つは、UnrealエンジンとSourceです。

言語に関しては、タスクに依存します。レンダリングおよびその他のパフォーマンスに重要な部分は、通常、ネイティブ言語の1つで行われます。たとえば、C ++。しかし、このコードは変更される可能性が高く、多くの場合「ハードコア」の少ないプログラマーによって記述されるため、動的言語を使用してスクリプトを定義するのが一般的です:-) Lua、Python、Ruby-これらはすべてここで使用できます。


0

WoWは、すべての内部スクリプトにもLuaを使用します。彼らが言語自体を変更したかどうかはわかりませんが、彼らのニーズに合うようにそれを疑うつもりはありません。デザイナーがスクリプトを簡単に変更/微調整できるようにするさまざまなツールがあることは間違いありません。これは、WoW開発者である/使用されている私の友人からのインサイダー情報です。


Luaのような言語を変更すると、Luaに基づいた独自の個人的なフレームワークを作成していることになります。正しい?もしそうなら、これは開発されたプログラムのパフォーマンス/速度を低下させますか?

@ J3M7OR3-Luaに基づいて独自の内部フレームワークを作成したことは私の理解ですが、パフォーマンス/速度についてはおそらく言えません。
カイルC
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.