网络游戏服务器架构设计.PDFVIP

  • 262
  • 0
  • 约1.09万字
  • 约 9页
  • 2018-12-13 发布于天津
  • 举报
网络游戏服务器架构设计

网络游戏服务器架构设计 标签: 架构设计服务器网络游戏 2013-12-18 16:52 9690 人阅读 评论(2) 收藏 举报 目录(?)[+] 有一天,我突然不想做游戏了。于是写点开发总结,于是就有了这篇文档。 入手 假如,我现在接手一个新项目,我的身份还是主程序。在下属人员一一到位之前,在和制作 人以及主策划充分沟通后,我需要先独自思考以下问题: 1、服务器跑在什么样的操作系统环境下? 2 、采用哪几种语言开发?主要是什么? 3、服务器和客户端以什么样的接口通讯? 4 、采用哪些第三方的类库? 除了技术背景之外,考虑这些问题的时候一定要充分考虑项目需求和所能拥有的资源。 我觉得,先不要想一组需要几台机器各有什么功能这样的问题,也不要想需要多少个daemon 进程。假设就一台服务器,就一个进程,把所需要的资源往最小了考虑,把架构往最简单的 方向想,直到发现,“哦,这么做无法满足策划要求的并发量”,再去修改设计方案。 操作系统:越单一越好。虽然FreeBSD 的网络性能更好、虽然Solaris 非常稳定,但选什么 就是什么,最好别混着来。前端是FreeBSD ,后端是 Solaris,运营的人会苦死。也不要瞧 不起用Windows 的人,用Windows 照样也能支持一组一万人在线,总之,能满足策划需求, 好招程序员, 运营成本低是要点。不同的操作系统有不同的特性,如果你真的对它们都很 熟悉,那么必定能找到一个理由,一个足够充分的理由让你选择A 而不是B 而不是C 。但 做 决策的时候要注意不要因小失大。 Programming Language :传统来说,基本都是C/C++ 。但是你也知道,这东西门槛很高,好 的C/C++程序员很难招。用Perl/Python/Lua 行不行?当然可以。但是纯脚本也不好,通常 来说是混合着来。你要明白哪些是关键部分,我是说执行次数最多的地方而不是说元宝,这 些必须用性能高的语言实现(比如C/C++ 比如Java ),其它像节日活动这样很久才执行一 次的,随便吧。脚本的好处是,可以快速搭原型。所以,尽早的,在你做完基本的地图和战 斗模块之后,立马跑机器人测试吞吐量。这时候项目开发进度还不到10%,不行就赶紧改。 此处特别举个例子就是Java GC 的问题。既然你要用java ,而jvm 需要通过执行garbage collection 来回收内存,而garbage collection 会使整个应用停顿,那你不妨试一试,内存在达 到峰值的时候会停多久?策划可以接受吗?如果不可以,你可以采用其它的GC 策略再试一 试。这个问题应该不是Java 独有的。网游和网站应用相比它很注重流畅性。这是你务必需 要考虑的。 至于选择什么样的脚本语言,以及脚本在你的游戏中究竟是占80%还是20% ?需要根据需 求来看。有没有游戏完全不用脚本?有。有没有游戏滥用脚本?也有。 如果你引入脚本的 目的是因为策划不会C/C++而你希望策划能自己独立实现更多的游戏功能。你希望策划去写 脚本?脚本也是程序,策划写的脚本难道就比程序 员写脚本好?还是因为策划工资便宜? 策划因为脚本写错了导致大故障还少吗(此处特别以网易的产品举例)?综合权衡下,还是 算了吧。问问你一起工作的程序员 哥们儿,他们最喜欢什么语言,什么用起来最顺手,就 用什么当脚本。注意不光要考虑开发速度快,还要考虑调试方便。 总体来说,操作系统和编程语言的选择,随大流即可。标新立异没什么好处。小地方的实现 你可以玩玩,整体还是要越保守越好。 通信 然后说通讯的问题。服务器和客户端怎么连接上的? 往最下面看,物理和链路层。有可能是以太网,有可能是ADSL,在北京还有很多像歌华宽 带这样的采用75 欧同轴电缆或者电力线上网的。你不要企图在这一层 做什么优化,你要充 分考虑的是不同的网络传输媒质网络延迟不一样。更恶心的是你正常的数据包可能会被某些 网吧的SB 路由器当做P2P 数据包给封掉,或是甚 至被解析成Wake-On-Lan 这样的含义。 杨建还会给你讲,什么是MTU ,把数据包限制在多大才能尽量让请求在一个包内发完。是 的,这些很精细的东 西,等咱游戏做的差不多了再慢慢研究。先略过。 往上看,IP 层。再往上,你要考虑用TCP 还是UDP 或是二者混合。UDP 的优势是overhead 小、延迟低,典型的用例就是《天下贰》,据说是纯 UDP 。再比如《龙之谷》,据说是有 小部分是UDP 。负面的一点呢,就是它太过于简

文档评论(0)

1亿VIP精品文档

相关文档