据我了解,MMORPG是与其他任何普通3d视频游戏一样在您的计算机上运行的游戏,但是随着游戏中发生的每个动作,都会通过对服务器的HTTP调用对Universe进行更改。因此,玩家计算机在渲染图形和动画方面承担了所有繁重的工作,但是Web框架进行了在线交流。
所以我想知道正在使用什么Web框架,Web服务器和数据库来创建MMORPG,例如EVE Online和WOW?
另外,正在使用哪些编程语言和3d游戏引擎来使客户端(3d图形/动画/声音)成为游戏的一部分?
据我了解,MMORPG是与其他任何普通3d视频游戏一样在您的计算机上运行的游戏,但是随着游戏中发生的每个动作,都会通过对服务器的HTTP调用对Universe进行更改。因此,玩家计算机在渲染图形和动画方面承担了所有繁重的工作,但是Web框架进行了在线交流。
所以我想知道正在使用什么Web框架,Web服务器和数据库来创建MMORPG,例如EVE Online和WOW?
另外,正在使用哪些编程语言和3d游戏引擎来使客户端(3d图形/动画/声音)成为游戏的一部分?
Answers:
大多数公司使用C ++。Eve是一个离群值,核心图形引擎使用C ++,而其他人已经指出,游戏逻辑使用Python。CCP还为Stackless本身做出了很多贡献,而Stackless大部分都是C语言。WoW是游戏本身的C ++,尽管UI是用Lua编写的。Cryptic(Champions Online,《星际迷航》在线)使用纯C,但是在业界很少见。例如,Java会不时弹出。Runescape,但我想不出AAA。迪士尼已将Panda3D(用C语言编写的基于Python的引擎)用于许多MMO,但与Eve一样并不常见。
总的来说,对于游戏逻辑和引擎来说,似乎是C ++,对于客户端脚本来说,Lua是最接近标准的。
至于网络方面,一切都结束了。我们(加密)将PHP,C和Python(Django)混合使用以获取各种位。CCP使用ASP来制作网站本身,并使用Python来为后端提供动力(尽管缓慢地漂移在一起)。WAR和LOTRO都在其站点上使用PHP,尽管目前尚不清楚它们使用的是什么特定框架(如果有)。
您提到MMO通过Web API调用工作,但事实并非如此。基于HTTP的协议效率太低,并且HTTP并非设计用于长时间运行的连接。几乎所有MMO(并非像憎恶的王国或城市亡者一样都不是基于Web的)都使用自定义服务器和自定义协议。客户端是高度有状态的,执行诸如提起清单UI之类的操作不会触发对服务器的请求,因为所有这些信息都缓存在客户端上。
EVE Online的一些链接:
基本上,EVE Online在SQL Server 2005和某些其他Microsoft软件上运行。客户端主干大部分是用Python编写的(确切的说是无堆栈Python,据我所记得)和一些C ++很有可能。
至于《魔兽世界》,我确实知道他们将Lua用于所有客户端GUI东西,但是除此之外,我认为他们不会将Lua用于其他任何东西。C ++可能使用了。哇,我想也可以使用一些Windows盒子,但似乎它们可能有一些其他类型的盒子专门用于某些任务,而这些任务可能根本不是基于Windows的。
信息不多,但希望对您有所帮助。
这些游戏中有很多都基于功能将服务器分开,因此它们将具有仅负责存储对象/内容的数据库服务器以及实际运行游戏世界(验证玩家动作等)的服务器。
首先,MMORPG或任何在线游戏首先都不使用HTTP或“ Web框架”。
用C ++编程服务器,就像游戏本身一样,通过使用套接字在网络上传输数据包来实现通信。
服务器通常运行其他操作系统,并且仅包含游戏代码,因此许多玩家可以在单个服务器上流畅地玩游戏。
我不知道暴风雪如何管理他们的服务器,也不知道他们是否使用集群。
当然,当我说“ sockets”和“ C ++”时,我说的是实时游戏,而不是游戏可能提供的其他服务,例如带有WoW的武器库。他们可能只是使用可以从多个服务中读取的数据库,例如论坛,军械库,游戏,帐户管理等,但我认为他们有依赖的数据库,该数据库会寻找新条目等,因此所有内容都可以同步很好。
我认为负责《魔兽世界》网络部分的人可能真是个坏蛋。
对于EVE,他们在PyCon 2009上发表了关于StacklessIO的演讲:http : //us.pycon.org/2009/conference/schedule/event/91/