适用于多人游戏的可扩展登录/大堂服务器

珀森先生

我正在开发一种多人游戏(客户端-服务器模型),在扩展服务器方面遇到了麻烦。

我了解大多数游戏甚至都无法达到1万多名玩家,而且我也不认为我的游戏会达到。虽然,如果我很幸运地得到了我想要开发服务器的信息,那么以后它们就不会成为一个巨大的障碍。

我已经在互联网上搜索了很多解决问题的方法,检查了GDC的讨论并检查了本网站上的其他帖子,但是似乎没有一个解决我的特定问题。

我当前的设置在下面,并且所有服务器都使用ENet作为我的网络库以C ++编写。

游戏服务器

该服务器处理实际的游戏玩法,并且需要在服务器与其连接的客户端之间发送大量CPU和程序包。但是,该专用服务器由玩家自己托管,因此我根本不必考虑对其进行扩展。

大堂服务器

该服务器处理服务器列表,其中包含当前所有正在运行的服务器。

  • 所有游戏服务器每5秒向该服务器发送一个UDP程序包,以表明它们仍然有效。这样,大厅服务器可以保留当前在线的所有服务器的更新列表。

  • 当所有客户端想要获取所有服务器时(这仅在服务器列表屏幕中),所有客户端都将UDP程序包发送到该服务器,并且大厅服务器会发回所有服务器的列表。这种情况很少发生,并且大厅服务器被限制为每秒向客户端发送4台服务器(而不是包含所有服务器的庞大程序包)。

登录服务器

该服务器处理创建帐户,丢失密码,登录名,朋友及其当前游戏状态,发给其他已登录玩家的私人消息以及指定他们拥有的游戏内物品的玩家资料。

  • 所有客户端每隔5秒钟向该服务器发送一个UDP程序包,以表明它们仍然有效,同时还发送其当前正在玩的游戏。然后,服务器将其好友列表发回在线/离线/游戏中状态。这样,他们的朋友可以保留在线/离线/游戏中哪个朋友的更新列表。

  • 它只发送带有玩家动作的消息,否则,例如创建帐户,登录,更改/重置密码,添加/删除/忽略朋友,发给朋友的私人消息等。

我的问题

我担心的是我的大厅和登录服务器可能无法扩展,并且它们上的流量过多。

1.从理论上讲,它们可以仅托管在一台计算机上吗?还是10 000多名玩家的流量过多?

2.如果可以将它们托管在一台计算机上,那么对于居住在远方的人来说,服务器是否仍然不会出现问题?
在这种情况下,在世界每个区域设置大厅和登录服务器会更好吗?这样做的坏处是,如果玩家居住在欧洲,那么他们将无法看到美国的服务器,并且其他服务器上将不存在他们的帐户和物品。

3.可能牵强,但如果我将两个服务器都重写为改为位于带有数据库的网站上,并使客户端/游戏服务器改为执行Web请求(例如HTTPS或使用特定标头调用php),会不会帮助以某种方式解决我的问题?

4xy

您的所有问题和疑问都可以通过基于无服务器云的解决方案AWS Lambda(例如或类似产品)解决在这种情况下,可伸缩性不是您的问题。只是发展逻辑。这样可以节省您很多时间。

如果您想将服务器作为由您自己的服务器托管的单个应用程序。考虑使用例如Go代替C ++。正是出于这些目的而设计的。我的意思是高负载的Web /网络服务。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

适用于多个服务器环境的Android版Google登录?

来自分类Dev

Intl PHP扩展不适用于xampp服务器

来自分类Dev

适用于服务器的Apple Push Notifications服务

来自分类Dev

CSS不再适用于其他服务器

来自分类Dev

SetState不适用于服务器中的数据

来自分类Dev

适用于服务器的Ubuntu vs Debian

来自分类Dev

jQuery似乎不适用于服务器控制

来自分类Dev

仅适用于Web服务器的域

来自分类Dev

OBS不适用于Wayland显示服务器

来自分类Dev

适用于 Linux Docker 版本的 MSSQL 服务器

来自分类Dev

表格不适用于服务器,仅适用于移动版本

来自分类Dev

Laravel路由适用于内部Web服务器,但不适用于WAMP

来自分类Dev

Symfony 项目适用于实时服务器,但不适用于 wamp

来自分类Dev

散景服务器不适用于条形图,但适用于绘图

来自分类Dev

php 如果查询适用于 wamp 但不适用于实时服务器

来自分类Dev

开发在线多人游戏的服务器端

来自分类Dev

是否可以将Google Play游戏服务实时多人游戏集成到适用于Android和iOS的LibGDX中?

来自分类Dev

Slim终结点可与PHP自己的服务器一起使用,但不适用于Nginx

来自分类Dev

Slim端点可与PHP自己的服务器一起使用,但不适用于Nginx

来自分类Dev

无服务器示例不适用于无服务器本地堆栈插件

来自分类Dev

适用于android应用的gps跟踪器的TCP服务器和适用于网站和网络服务的HTTP服务器

来自分类Dev

HTTP2是否适用于视频流或实时多人游戏?

来自分类Dev

带有Backbone.js路由器的HTML5 pushState不适用于特定服务器,但适用于其他服务器

来自分类Dev

加载〜400(错误请求)。XmlHttpRequest适用于本地,但不适用于服务器端

来自分类Dev

User.find_by([“ name LIKE?”不适用于heroku,但适用于开发服务器

来自分类Dev

Magento:自定义模块适用于本地主机但不适用于服务器

来自分类Dev

Powershell 脚本适用于服务器,但不适用于 cloudformation cfn-init 函数

来自分类Dev

来自 boost 的 udp 服务器不适用于多线程,但仅适用于主线程

来自分类Dev

用于推送部署的Git后接收挂钩仅适用于主服务器

Related 相关文章

  1. 1

    适用于多个服务器环境的Android版Google登录?

  2. 2

    Intl PHP扩展不适用于xampp服务器

  3. 3

    适用于服务器的Apple Push Notifications服务

  4. 4

    CSS不再适用于其他服务器

  5. 5

    SetState不适用于服务器中的数据

  6. 6

    适用于服务器的Ubuntu vs Debian

  7. 7

    jQuery似乎不适用于服务器控制

  8. 8

    仅适用于Web服务器的域

  9. 9

    OBS不适用于Wayland显示服务器

  10. 10

    适用于 Linux Docker 版本的 MSSQL 服务器

  11. 11

    表格不适用于服务器,仅适用于移动版本

  12. 12

    Laravel路由适用于内部Web服务器,但不适用于WAMP

  13. 13

    Symfony 项目适用于实时服务器,但不适用于 wamp

  14. 14

    散景服务器不适用于条形图,但适用于绘图

  15. 15

    php 如果查询适用于 wamp 但不适用于实时服务器

  16. 16

    开发在线多人游戏的服务器端

  17. 17

    是否可以将Google Play游戏服务实时多人游戏集成到适用于Android和iOS的LibGDX中?

  18. 18

    Slim终结点可与PHP自己的服务器一起使用,但不适用于Nginx

  19. 19

    Slim端点可与PHP自己的服务器一起使用,但不适用于Nginx

  20. 20

    无服务器示例不适用于无服务器本地堆栈插件

  21. 21

    适用于android应用的gps跟踪器的TCP服务器和适用于网站和网络服务的HTTP服务器

  22. 22

    HTTP2是否适用于视频流或实时多人游戏?

  23. 23

    带有Backbone.js路由器的HTML5 pushState不适用于特定服务器,但适用于其他服务器

  24. 24

    加载〜400(错误请求)。XmlHttpRequest适用于本地,但不适用于服务器端

  25. 25

    User.find_by([“ name LIKE?”不适用于heroku,但适用于开发服务器

  26. 26

    Magento:自定义模块适用于本地主机但不适用于服务器

  27. 27

    Powershell 脚本适用于服务器,但不适用于 cloudformation cfn-init 函数

  28. 28

    来自 boost 的 udp 服务器不适用于多线程,但仅适用于主线程

  29. 29

    用于推送部署的Git后接收挂钩仅适用于主服务器

热门标签

归档