游戏服务器一般追求稳定和效率,所以偏向于保守,使用的技术手段也是以已经过验证、开发人员最熟悉、能HOLD为主要前提。
1、典型按场景分服设计
开发语言: c++
数据库:mysql
架构:
多个网关:维持与玩家间的SOCKET连接,可处理广播、断线重连等逻辑。
一个或多个账号登陆验证服务器:处理登陆、排队等逻辑。
多个场景服务器:处理在本地图上能解决的逻辑,如:打怪、玩家间战斗、接任务、完成任务等各种不需要跨地图的逻辑。一个场景服内可放置多张地图,一般是单线程处理逻辑,也有多线程(如:《天龙八步》《武侠世界》是一个线程处理一个地图组,一个场景服可以有多个线程)。
一个全局服务器:处理不能在一张地图上处理的逻辑,如跨地图聊天、跨地图交易。
可选:
一个专门与数据库打交道的DB代理服务器
日志服务器:
跨服逻辑处理服务器:支持跨服PK
共享内存服务器:将游戏内实体数据放置在另一个进程内,场景服务器出现宕机时能及时存储数据,并恢复。
示例如下:
2、云风写的开源架构《skynet》
使用开发语言: C语言、LUA
使用数据库:内置redis、mysql访问接口,lua的table能方便地转化为字符串进行存储
结构: 单进程、多线程
执行结构: skyn