一.聊聊服务器开发有哪些东西要考虑。
1.开发语言的选择:
工欲善其事,必先利其器,选择一门适合的开发语法对后期开发有着事半功倍的作用。
业界主要的是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的)
2.数据库
现在比较流行的两种数据库,关系型数据库mysql和非关系型数据库mongodb。这是我用的最多的两个数据库。
关于两者之间的各种比较,网上有很多,当然你也可以用其他数据库,至于sql server,不怕被坑你就用吧(我向来对微软的东西没好感)。
3.服务端架构
讲一下我用过的其中一种架构模型,也是公司按着bigworld架构设计的:
1.Gate:首先要有一个Gate(网关)服务器,负责客户端连接及消息转发到Game(游戏服),保持客户端到服务端的连接
没有任何逻辑,只做消息加密和解密,以及客户端和服务器消息的转发(相当于两者之间的桥梁).
2.GameServer:GameServer是游戏进程,提供游戏逻辑功能(采用单进程(或者单线程)模型,游戏服务器的瓶颈从来不在CPU,所以只做逻辑功能的话单线程足够了,在这里没必要用多线程或多进程)。
3.DBManager:实现数据库的读写,方便Game服务器异步读写数据库的数据(有些把数据库读写放在游戏服,没有单独的服务器,那恐怕游戏服单进程就不够用了)。
4.GameManager:负责管理所有的GameServer,GameServer之间消息转发,提供广播到所有Game的功能。