本系列准备重点介绍MMO游戏,之前本来打算把卡牌游戏简单介绍下,但是经历过MMO游戏开发之后,发现MMO游戏的架构可以适用于很多类型的游戏。本文先介绍支持单服支撑2万人以下的经典架构。学习不能好高骛远,当把经典的传统架构学好之后,再去思考支持百万在线的架构,很多疑惑将会迎刃而解。
这套架构是比较经典的,许多MMO游戏依旧在使用该架构。大部分MMO游戏,就是新服的时候会涌入较多的人,当旧服生态稳定后,基本上在线人数不超过一千人。本文重点介绍笔者上一个MMO游戏的架构和设计思路。
该架构是比较经典的传统MMO架构,他的优点和缺点也比较明显。先简单介绍下各个进程的作用,然后再分析下该架构下会有什么问题。
游戏数据落地存盘用的是mysql数据库,其实也可以替换成其他数据库。mysql这种关系数据库的话,其实对游戏存储来说并不友好。游戏数据一般会变化频繁,如果经常增删字段,那么势必会对数据库带来不必要的开销。所以一般的做法,就是对容易频繁变化的数据做序列化和反序列化,这样的话开发就会相对容易了,当然同时也会带来性能上的开销。
目前我们的redis集群主要是用来缓存数据。redis是内存数据库,所以在性能上是有很大的优势,能支持高频的访问。与mysql不同的是,我们的redis是全服共享的集群。目前游戏的登录就是通过redis来做的,实现了解耦,登录系统是游戏的核心系统之一,具体实现会在后面的博客展开。
GateServer:网关服务器,通常是多组,暴露给客户端的游戏入口。客户