[冒险岛079版本] 诛仙专用稳定不卡服务器|专注游戏服务器

[复制链接]
查看324 | 回复0 | 2018-5-8 11:37:57 | 显示全部楼层 |阅读模式

认准王小二企鹅:企鹅 9753——38--90
TEL 199-0690+7302
聊聊诛仙专用服务器开发有哪些东西要考虑。

1.开发语言的选择:

工欲善其事,必先利其器,选择一门适合的开发语法对后期开发有着事半功倍的作用。

业界主要的是c/c++ + Python/lua模式做游戏服务器。c/c++做网络通讯数据传输,python/lua做业务逻辑。这样既保持了网络传输的效率(c++),又提升开发效率(Python/lua),同时也支持热更新。

当然,也有其他服务器开发语言,erlang(没用过,页游公司用的多),c#(大棒子国喜欢用,神奇的民族),Java(第一次听说时我惊呆了),Node.js(少量游戏用的,还有一个node.js写的引擎叫pemolo),PHP(做http协议通讯的游戏

时php+MySQL也不失为一种好选择),...
认准王小二企鹅:企鹅 9753——38--90  TEL 199-0690+7302
看过两个游戏服务器引擎

1.firefly(9秒社团开发的一款python游戏服务器框架)

2.kbengine(作者说他按bigworld的架构来设计的,c++ + python的)
认准王小二企鹅:企鹅 9753——38--90  TEL 199-0690+7302
2.数据库
现在比较流行的两种数据库,关系型数据库mysql和非关系型数据库mongodb。这是我用的最多的两个数据库。
关于两者之间的各种比较,网上有很多,当然你也可以用其他数据库,至于sql server,不怕被坑你就用吧(我向来对微软的东西没好感)。

3.服务端架构
讲一下我用过的其中一种架构模型,也是公司按着bigworld架构设计的:
1.Gate:首先要有一个Gate(网关)服务器,负责客户端连接及消息转发到Game(游戏服),保持客户端到服务端的连接
没有任何逻辑,只做消息加密和解密,以及客户端和服务器消息的转发(相当于两者之间的桥梁).
2.GameServer:GameServer是游戏进程,提供游戏逻辑功能(采用单进程(或者单线程)模型,游戏服务器的瓶颈从来不在CPU,所以只做逻辑功能的话单线程足够了,在这里没必要用多线程或多进程)。
3.DBManager:实现数据库的读写,方便Game服务器异步读写数据库的数据(有些把数据库读写放在游戏服,没有单独的服务器,那恐怕游戏服单进程就不够用了)。
4.GameManager:负责管理所有的GameServer,GameServer之间消息转发,提供广播到所有Game的功能。
认准王小二企鹅:企鹅 9753——38--90  TEL 199-0690+7302

4.协议
客户端与服务器之间协议通信,可以用tcp或者http。主要看游戏模型,如果是那种弱联网单机玩法,用http足够了,像天天酷跑之类,只在需要的时候处理一条http请求响应。

不过tcp用的比较还是比较多的。现在的网络游戏大多数都是tcp,像MMORPG类游戏。我们现在的游戏就是同时用了http和tcp,客户端和游戏服采用http协议。只有多人战斗转向战斗服才采用tcp长链接。

udp:其实游戏是有udp的,在一些高效率的场景下比如pvp即时战斗,tcp的拥塞控制和超时重传并不适合,有些就用的udp,然后自己做丢包重发,拿网络公平性换游戏局部的效率。

现在参与开发的游戏就同时使用了http协议和tcp协议,在游戏服是单机玩法用http协议,战斗服需要长连接保存协议状态,用的tcp。
认准王小二企鹅:企鹅 9753——38--90  TEL 199-0690+7302


5.存盘

有数据库就肯定有数据库读写操作,最主要的还是存盘(save),周期存盘还是即时存盘

即时存盘就是每一次操作数据都进行存到数据库,当然这样会导致对数据库的操作过于频繁,毕竟这是效率的瓶颈之一。

周期存盘也叫固定存盘,就是每隔固定时间存盘一次,比如10秒或者15秒,这样数据库的压力就会小很多,当然自己就要在内存中做好数据操作,防止数据污染或者存盘不上导致回档。
认准王小二企鹅:企鹅 9753——38--90  TEL 199-0690+7302

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则