多人游戏的服务器架构?[已关闭]

2022-09-03 15:02:32

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

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

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

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

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


答案 1

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

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

我强烈建议提前弄清楚同一场比赛中的所有玩家是否都将托管在同一台服务器上(例如,4场玩家比赛中的1000场,而每场1000名玩家中有4场比赛)。如果可能的话,选择第一个,并将同一游戏中的每个人都放在同一台服务器上。您将很难将多个客户端同步到一台服务器,而不是拥有多个同步玩家的服务器。否则,一致性的定义是有问题的。

如果可能,请让每个客户端与服务器通信,然后让服务器将更新分发到客户端。通过这种方式,您拥有一个“官方国家”,并且可以执行各种冲突解决方案,幻影等。点对点在更快的游戏(例如FPS)中提供更好的性能,但会带来大量问题。

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


答案 2

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


推荐