详情咨询+企鹅:6192787 tel:199.0690.1336
从事游戏服务器开差不多两年时间,两年间参与了不少项目,学到了很多游戏服务器开技术,参与过几个不同架构的服务器开,就随便聊聊游戏服务器开需要的技术。(以下所指游戏服务器更偏向于手游,因为我对端游和页游开接触并不多)
一.聊聊服务器开有哪些东西要考虑。
高防服务器租用+企鹅:6192787 tel:199.0690.1336
1.开语言的选择:
工欲善其事,必先利其器,选择一门适合的开语对后期开有着事半功倍的作用。
服务器租用高防服务器租用+高防服务器租用+企鹅:6192787 tel:199.0690.1336
业界主要的是c/c++ + python/lua模式做游戏服务器。c/c++做网络通讯数据传输,python/lua做业务逻辑。这样既保持了网络传输的效率(c++),又提升开效率(python/lua),同时也支持热更新。
当然,也有其他服务器开语言,erlang(没用过,页游公司用的多),c#(大棒子国喜欢用,神奇的民族),java(第一次听说时我惊呆了),node.js(少量游戏用的,还有一个node.js写的引擎叫pemolo),php(做http协议通讯的游戏时php+mysql也不失为一种好选择),...
看过两个游戏服务器引擎
1.firefly(9秒社团开的一款python游戏服务器框架)
2.kbengine(作者说他按bigworld的架构来设计的,c++ + python的) h
服务器租用高防服务器租用+高防服务器租用+企鹅:6192787 tel:199.0690.1336
2.数据库
现在比较流行的两种数据库,关系型数据库mysql和非关系型数据库mongodb。这是我用的多的两个数据库。
关于两者之间的各种比较,网上有很多,当然你也可以用其他数据库,至于sql server,不怕被坑你就用吧(我向来对微软的东西没好感)。
服务器租用高防服务器租用+高防服务器租用+企鹅:6192787 tel:199.0690.1336
3.服务端架构
讲一下我用过的其中一种架构模型,也是公司按着bigworld架构设计的:
1.gate:首先要有一个gate(网关)服务器,负责客户端连接及消息转到game(游戏服),保持客户端到服务端的连接
没有任何逻辑,只做消息加密和解密,以及客户端和服务器消息的转(相当于两者之间的桥梁).
2.gameserver:gameserver是游戏进程,提供游戏逻辑功能(采用单进程(或者单线程)模型,游戏服务器的瓶颈从来不在cpu,所以只做逻辑功能的话单线程足够了,在这里没必要用多线程或多进程)。
3.dbmanager:实现数据库的读写,方便game服务器异步读写数据库的数据(有些把数据库读写放在游戏服,没有单独的服务器,那恐怕游戏服单进程就不够用了)。
4.gamemanager:负责管理所有的gameserver,gameserver之间消息转,提供广播到所有game的功能。
服务器租用高防服务器租用+高防服务器租用+企鹅:6192787 tel:199.0690.1336
4.协议
客户端与服务器之间协议通信,可以用tcp或者http。主要看游戏模型,如果是那种弱联网单机玩,用http足够了,像天天酷跑之类,只在需要的时候处理一条http请求响应。
不过tcp用的比较还是比较多的。现在的网络游戏大多数都是tcp,像mmorpg类游戏。我们现在的游戏就是同时用了http和tcp,客户端和游戏服采用http协议。只有多人战斗转向战斗服才采用tcp长链接。
udp:其实游戏是有udp的,在一些高效率的场景下比如pvp即时战斗,tcp的拥塞控制和超时重传并不适合,有些就用的udp,然后自己做丢包重,拿网络公平换游戏局部的效率。
现在参与开的游戏就同时使用了http协议和tcp协议,在游戏服是单机玩用http协议,战斗服需要长连接保存协议状态,用的tcp。
高防服务器租用+高防服务器租用+企鹅:6192787 tel:199.0690.1336
5.存盘
有数据库就肯定有数据库读写操作,主要的还是存盘(save),周期存盘还是即时存盘
服务器租高防服务器租用+高防服务器租用+企鹅:6192787 tel:199.0690.1336
即时存盘就是每一次操作数据都进行存到数据库,当然这样会导致对数据库的操作过于频繁,毕竟这是效率的瓶颈之一。
周期存盘也叫固定存盘,就是每隔固定时间存盘一次,比如10秒或者15秒,这样数据库的压力就会小很多,当然自己就要在内存中做好数据操作,防止数据污染或者存盘不上导致回档。
重回凯尔特人,小托马斯想哭!有感动,有委屈,有不甘,有彷徨!
如果对我们的产品或服务感兴趣,请联系我们,我们的经营范围服务器 网站建设 网站设计,福州金谷科技有限公司将一如既往的为你提供优质的服务。