概述
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公司的高级程序经理也说过这个问题,后续要多自己想想才行。
最后
以上就是伶俐小蝴蝶为你收集整理的游戏框架设计与重要模块详解的全部内容,希望文章能够帮你解决游戏框架设计与重要模块详解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复