我即将发布MMORPG。在我的游戏中,每1秒,每个玩家发送30条TCP消息并从服务器30返回。每条消息都不长。像20~chars一样。
重点是我从未接触过多人游戏。我编写了所有服务器和客户端,但我不知道我需要什么服务器。我的意思是,RAM,CPU等...我仍然不知道该做什么准备,但让我们说15K的同时客户。如上所述,每个客户端每1秒钟需要获取和发送30条TCP消息,在大多数情况下,我还需要使用数据更新非SQL数据库。
更新:这是一个多人游戏,我必须有30个消息/秒。大多数消息都是针对播放器的当前位置。我也在使用C ++。
答案 0 :(得分:0)
如果您知道每秒发送30封邮件,为什么不将它们捆绑到1个请求中,每秒一次?在服务器资源方面有很大的不同......
您要使用哪种语言运行服务器?我希望你写一些专门用于处理/管理这些连接的东西?如果是这样的话:做一些分析,只测量你需要的东西...... 你的处理器每秒钟做什么,处理那些30 * 15K的消息?
您的问题没有通用的答案。这一切都取决于你的软件。
答案 1 :(得分:0)
这取决于您(已实施)服务器所需的内容。在您尝试某些特定硬件之前,您永远不会知道。租一个强大的专用服务器一个月,并配置您的游戏服务器。至少只检查CPU使用情况。您需要多线程异步网络。
您提供的详细信息仅用于计算您需要的带宽: ~94 bytes (TCP + IP + Ethernet headers) + ~20个字节(您的数据)=每个数据包114个字节*每秒30个* 15000个用户= ~50MBps * 8位=〜400Mbps的传入和传出流量。看来你在这里遇到了麻烦。考虑比在单独的TCP帧中发送每个数据包更聪明的东西。例如,实现缓冲区,收集准备发送的数据,并由游戏逻辑线程和将此数据发送到网络的单独线程填充。在这种情况下,您可以将多个软数据包合并为一个TCP数据包,从而大大降低了带宽要求。
但即使在此之后,你仍然遇到麻烦。在投资复杂的解决方案之前,我建议先等待用户。当你拥有它们时,你需要实现某种聚类。这是一个独立的故事,比简单的网络复杂得多。
尝试通过单个服务器处理至少1K用户。这可以为你带来一些资金来雇佣有游戏网络/集群经验的人。