Web 服务器和游戏服务器有啥区别?

Posted

技术标签:

【中文标题】Web 服务器和游戏服务器有啥区别?【英文标题】:What's the difference between a Web Server and a Game Server?Web 服务器和游戏服务器有什么区别? 【发布时间】:2011-03-14 20:31:55 【问题描述】:

我想构建一款基于回合制的多人 iPhone 游戏,它需要一个游戏服务器来连接玩家并输出世界状态数据。我试图了解游戏服务器将如何工作,以便我可以开始设计和构建它。到目前为止,我只有构建 Web 应用程序的经验,所以我很自然地想设计游戏服务器以与 Web 服务器类似的方式工作,但是可以吗?

我过去使用的 ASP.NET MVC Web 服务器通过客户端向服务器发送对某些网页数据的请求,服务器生成 html 或 XML 或 JSON 并将其以HTTP 数据包。对于多人游戏,这个过程听起来完全一样,除了客户端可能不会请求 HTML,但请求 XML 或 JSON 数据是有意义的,对吧?

所以我的问题是......

    是否可以使用 ASP.NET MVC 编写游戏服务器并使用我设计的 RESTful API 与 Web 服务器一样工作? 有没有比使用包含 XML 或 JSON 数据的 HTTP 数据包更好的方法来请求和接收游戏数据?从游戏服务器返回的数据会很小。 使用 RESTful API 从 Web 服务器访问数据很有意义,但使用 RESTful API 从游戏服务器请求游戏数据没有意义,事实上,这听起来可能会导致安全问题,您的想法? 最后,谁能推荐一些好的游戏书籍,展示如何构建一个像样的游戏服务器的例子?

非常感谢您的帮助!

【问题讨论】:

WCF 服务可能比 MVC 更有意义,因为实际上没有 UI,只有数据交换。 【参考方案1】:

主要区别在于 Web 服务器使用(相对)很少或不使用状态信息来生成大量相对静态的内容。即使使用状态,它通常也特定于会话或用户。读取比写入频繁得多,因此缓存可以帮助提高吞吐量。您还可以信任 Web 浏览器以(相对)可靠的方式传递一些状态数据和 cookie。

相反,游戏服务器大部分时间处理来自客户端的更新,保留大量全局状态(所有游戏、玩家、状态状态)并在客户端请求时将状态更新发送给客户端。缓存是不可能的,您不能相信您的客户会告诉您一天中的时间 - 您必须假设他们会尝试以任何方式作弊。

使用 REST API 不是问题,因为您可以使用您已经使用的标准身份验证机制。

“Beautiful Architecture”一书的第 3 章描述了 Darkstar(现为 RedDwarf)项目的架构,这是一个用于在线游戏和虚拟世界的可扩展应用服务器。虽然 RedDwarf 的规模比您想要的要大得多,但本书确实描述了您在创建游戏服务器时需要解决的问题。

【讨论】:

【参考方案2】:

网络服务器缺少一个重要组件...

IE。他们是无国籍的。 Web 的整个平台(以及一般的 HTTP 服务器)基于它们是无状态的模式,这意味着当您从一个页面切换到另一个页面时它们不会保留数据。

有一些方法可以绕过限制。在客户端:您可以在浏览器打开时使用会话来保存数据;或 cookie 以长期存储数据。在服务器端:数据库通常用于长期存储状态。所以...

    是的,但是根据您希望存储游戏会话状态的数量和时间,您可能会发现单独运行游戏服务器/引擎(而不是作为网络服务器)会给您带来很多好处未来有更大的扩展/增长空间。

    是的,不是... XML/JSON 几乎是在 Internet 上传递对象状态的方式,因为它简单且独立于平台。由于您可能/不会编写自己的服务器后端,我建议您在考虑从头开始推出自己的解决方案之前先使用XML-RPC。

    我不确定您为什么对安全性如此偏执。如果您针对可接受的请求/响应周期实施非常严格的访问策略,则应该没有任何问题。就像我之前所说的,看看 XML-RPC。关键是,不要让用户访问超出他们需要的任何游戏服务器数据。

    不,主要是因为我不写游戏。虽然,我确实有编写客户端/服务器架构应用程序的经验,而且这不是火箭手术。我建议您加入即将推出测试版的 Game Development Stack Exchange 常见问题解答网站。

【讨论】:

谢谢,Evan,这个 XML-RPC 看起来很不错。您曾经使用过任何 .NET 实现吗?如果有,有什么建议/建议吗? @BeachRunnerJoe 不,我没有。我只提出 XML-RPC 是因为它是一种众所周知的良好的 Web 服务架构。如果您想开始使用它,Stack Overflow 应该有大量信息可以从实际使用它的人那里获得。请参阅此开始。 ***.com/questions/1348503/how-to-use-xmlrpc-in-c

以上是关于Web 服务器和游戏服务器有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

桌面云与云桌面有啥区别

UE和UI有啥区别?

windows server 有啥用处啊?

egret eui和gui有啥区别

我想开发一款网络游戏,请问有啥语言写客户端,用啥语言写服务器端

ubuntu server版与桌面版使用有啥区别