15

我正计划构建一个小型多人游戏,可以在 Web 浏览器中作为 Java 小程序或 Flash 文件运行。我以前没有做过任何服务器编程,所以我想知道我应该拥有什么样的服务器架构。

我很容易在服务器上创建 perl/php 文件,java/flash 代码会联系这些文件以更新玩家位置/动作等。但我正在考虑是否应该获得一个专用的网络主机,哪个操作系统使用哪个数据库等。此外,使用的带宽量和可扩展性也是一个考虑因素。

另一种选择可能是使用云托管系统(而不是专用服务器),因此他们会随着游戏的发展增加额外的机器。只要每台服务器都运行核心 perl/php 文件来更新数据库,它就可以正常工作。

另一种选择可能是使用谷歌应用引擎。

关于服务器架构、操作系统/数据库选择以及我使用 perl/php/python 脚本进行服务器端编程的方法是否是好的方法,我们将不胜感激!

4

3 回答 3

8

你需要更清楚地了解游戏,更多地考虑架构而不是具体的实现细节。

主要问题是您的游戏是实时的、基于回合的还是基于长延迟的(例如,电子邮件国际象棋)。另一个问题是您是否要冻结状态以进行后续重新加载。

我强烈建议提前弄清楚同一游戏中的所有玩家是否都将托管在同一服务器上(例如,4 场比赛中的 1000 场比赛与每场 1000 名球员的 4 场比赛相比)。如果可能,请先使用同一服务器下同一游戏中的每个人。您将很难将多个客户端同步到一个服务器,而不是让多个服务器同步播放器。否则,一致性的定义是有问题的。

如果可能,让每个客户端与服务器通信,然后服务器将更新分发给客户端。这样您就拥有了一个“官方状态”,并且可以进行各种冲突解决、幻像等。点对点在更快的游戏(例如,FPS)中提供更好的性能,但会带来大量问题。

我一辈子都看不到任何令人信服的理由来做这件事和 perl 或 PHP。你的游戏不是基于网络的,为什么要用面向网络的语言编写它?为服务器使用良好的旧 J2EE,并通过 XML 和 AJAX 与您的客户端交换数据。如果可能,请在客户端而不是 servlet 上运行真正的 Java 应用程序。然后,您可以从使用 JMS 中受益,它可以通过为您抽象出大量通信细节来减轻您的负担。

于 2009-03-11T00:24:21.290 回答
6

对于您的服务器架构,您可以查看三环的代码。他们用 Java(客户端和服务器端)编写了许多非常可扩展的游戏。

于 2009-03-11T00:18:56.967 回答
0

我也不鼓励使用 PHP,HTTP 也不是最好的主意,因为它是无状态且健谈的。我在公司工作了一段时间,目前正在开发大型多人游戏。后端是普通的 JVM(由多个客户端通过 tomcat 连接,每个客户端从手机连接)。因此,我知道您传输的数据越少,服务器上所需的缓冲区就越小 -> 一台机器上的客户端越多,响应速度也就越快。还要考虑安全性,https 是相当昂贵的,尤其是如果您需要传输图形和声音。您自己的带有非浏览器客户端容器的二进制协议会做得最好(好的选择是开发调试时间的可切换协议)。也许听起来很复杂,但事实并非如此。

@Sarah 很好的提示,也谢谢 ;)

于 2011-08-20T14:29:29.023 回答