请选择 进入手机版 | 继续访问电脑版

NoahFrame

 找回密码
 Register Now
搜索
热搜: redis mysql tutorial
查看: 1217|回复: 0

第十二章 NF分布式服务器解决方案— 上线杀怪升级

[复制链接]

30

主题

111

帖子

632

积分

Administrator

Rank: 9Rank: 9Rank: 9

积分
632
发表于 2018-1-6 04:46:29 | 显示全部楼层 |阅读模式
NF(https://github.com/ketoo/NoahGameFrame)全称为 NoahFrame/NoahGameFrame。


NF最早为客户端设计,后来随着时代的变化,而为自己又转为服务器开发,故在吸收了众多引擎的优点后(包含Ogre的插件模式&模块化管理机制,Bigworld的数据管理&配置机制,类似MYGUI的接口层次设计),经过多年演化和实践,变成了一套游戏开发J解决方案。方案中包含开源的服务器架构,网络库(站在libevent的肩膀上),和unity3d的demo源码。现在NF已经在多个公司的多个项目中使用,其中包含知名产品 《全民无双》。


关键词


NoahGameFrame/NoahFrame/NF
集群/负载均衡/分布式
网关服务器 GateServer 心跳 多线程/线程池 开源网络框架/模型
一致性hash算法/ConsistentHash
游戏开发中的设计模式/数据结构
Socket Nagle/粘包/开源游戏服务器/ Game Server



下副本打怪升级是大部分RPG类游戏的共同点,而NF比较关注的是这些公共模块的处理思路,这篇文章主要是通过讲NF如何实现副本打怪升级,从而展示NF的逻辑处理方式。

正常来说,一个比较通用的业务流程为:上线 --> 进入副本 --> 刷新怪物 --> 杀死怪物 --> 获得经验 --> 升级 --> 离开副本 --> 下线
我们把这个流程分为3部分来理解:
1: 上线 --> 进入副本 --> 刷新怪物
2:  杀死怪物 --> 获得经验 --> 升级
3: 离开副本 --> 下线

一:上线 --> 进入副本 --> 刷新怪物

       第一部分主要分析进入游戏到进入副本的整体逻辑处理流程,下面分几个步骤详细说下。

  • 登录
  • 进入proxy验证授权
  • 创建游戏角色对象
  • 加载角色数据
  • attach角色数据
  • 切图,进入城镇
  • 角色间数据同步
  • 进入副本
  • 刷新副本怪物


二:杀死怪物 --> 获得经验 --> 升级

先说下副本打怪升级的思路,主要分为以下几个步骤,

  • 关注怪物HP,对应NF逻辑 -> 增加怪物类型的HP属性回调和玩家的level属性回调注册使用技能的消息回调
  • 得知技能调用玩家使用技能--> 产生伤害直至死亡
  • 由步骤1注册的属性回调得知怪物死亡,按照死亡怪物ID,查找对应的经验值,加给玩家玩家获得经验exp
  • exp达到条件触发level变更回调 --> 升级等级
  • 升级回调中的一些额外的功能处理,例如获得升级奖励等



三:离开副本 --> 下线





NF项目为开源的分布式服务器解决方案,其中包含了网络库,actor库,以及数据驱动等新技术,能大幅提升开发效率节省开发周期以及提高程序的稳定性。
项目地址 https://github.com/ketoo/NoahGameFrame
如感觉对您有帮助,请给与star,同时也邀请广大同行参与开发和维护,作者QQ 342006,交流QQ群 341159815。
欢迎转载,转载请注明来源,本文版权归作者所有!




回复

使用道具 举报

您需要登录后才可以回帖 登录 | Register Now

本版积分规则

 

GMT+8, 2018-8-15 13:52 , Processed in 0.071347 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表