游戏框架设计与重要模块详解

1:先做好最基础的框架:

世界中心服务器:相当于一个总控制室,所有的服务都要连接器连接到中心服。各服务间通信,web的GM请求都要通过中心服。

数据服务器:游戏服与数据库(mysql或者MongoDb)之间的一个纽带。数据的中转中心,读写与存储数据,同时缓解大数据下数据库的压力

游戏服务器:主逻辑服务,包括玩家的上线,城建、运兵、战斗各种逻辑。主要的大系统一般使用C++来写,lua写各种比较杂的功能需求,尤其是活动,因为需要热更

网关服务器:起到一个转发客户端或者个服务器之间的数据,Socket

登陆服务器:其用途一般是接入SDK,验证账号密码等个人的账户数据。验证成功后断开与网关间的连接,游戏服发起上线请求

缓存(redis)服务器:数据的缓存,一般情况下游戏服直接去缓存服拿数据,如果没有可拿的数据才让缓存服去数据服装载数据

 

2:MMO场景AOI逻辑:

(1):创建一个场景,场景里面会有很多的逻辑格子(每个逻辑格子是一个对象,用map存起来,当然不可能初始化多有的格子对象,只有实体用到的时候才new一个出来),同时也有很多个大格子(俗称九宫格)。格子对象继承一个实体基类,管理格子里面的各种对象,比如玩家、怪物、职务、火球等等。

(2):九宫格管理玩家视野,玩家移动完一个格子后,更新格子的实体列表,返回一个结果。拿到结果后,先保存好玩家原来的视野,再更新玩家最新的视野。通过比对,获取到玩家新增视野实体和消失视野实体发送给客户端,客户端处理实体视野更新

 

3:SLG战斗模块设计:

(1):创建场景,地形,植被等

(2):根据大地图传入参数生成敌我实体,每个实体跑各自的AI,每个技能绑定到实体上面,由实体AI统一控制。

(3):同步机制有两种:第一状态同步(我们用的就是状态同步,状态发生改变才给客户端同步数据) 第二就是帧同步,每一帧的实体数据同步给客户端。

(4):玩家之间的碰撞引进Box2D来处理,只要设置好参数,摩擦力、体积、质量等就能很好的控制实体间的叠加问题

(5):战斗AI分为三大包含块:军团AI>部队AI>个人AI。三大AI同时运转,相互之间消息转发达到战场中最好效果

(6):战斗回放的处理:战斗中服务器把每一条指令全部存起来,等到回放的时候再依次把指令发送给客户端,让客户端来做表现,但是只会有一个问题就是保存的数据会很大,IGG公司的高级程序经理也说过这个问题,后续要多自己想想才行。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值