快捷搜索:  汽车  科技

游戏服务端框架有哪些(开源精选Noark一个游戏服务器端框架)

游戏服务端框架有哪些(开源精选Noark一个游戏服务器端框架)消息控制器,主要作用就是为每个模块提供消息处理的入口.package com.company.slg; import xyz.noark.core.annotation.Configuration; @Configuration public class GameServerConfiguration {}其他实现协议映射1、Application应用启动入口package com.company.slg; import xyz.noark.game.Noark; public class GameServerApplication { public static void main(String[] args) { Noark.run(GameServerBootstrap.class args); } }2、Bootstrap启动引导入口package com.company

《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是 Noark是一个游戏服务器端框架,可快速开发出一个易维护、易扩展且稳定高能的游戏服务器,让开发者专注于业务功能的开发。

项目介绍

实现了配置注入,协议映射,模板加载,数据存储,异步事件,延迟任务,内部指令等功能模块
从而达到了松散耦合的效果,提高了系统的可重用性、可维护性以及可扩展性
精心设计过的它大大简化了网络编程和多线程编程,众多的工具类库就是为了解决开发中那些重复劳动而产生的框架

优点:

  • 使用简单,学习成本低
  • 功能强大,很容易写出性能优秀的服务
  • 十分灵活,并且可与常用技术无缝衔接
安装

implementation "xyz.noark:noark-game:3.4.3.Final"

示例:

1、Application应用启动入口

package com.company.slg; import xyz.noark.game.Noark; public class GameServerApplication { public static void main(String[] args) { Noark.run(GameServerBootstrap.class args); } }

2、Bootstrap启动引导入口

package com.company.slg; import xyz.noark.game.bootstrap.BaseServerBootstrap; public class GameServerBootstrap extends BaseServerBootstrap { @Override protected String getServerName() { return "game-server"; } }

3、Configuration配置中心

package com.company.slg; import xyz.noark.core.annotation.Configuration; @Configuration public class GameServerConfiguration {}

游戏服务端框架有哪些(开源精选Noark一个游戏服务器端框架)(1)

其他实现

协议映射

消息控制器,主要作用就是为每个模块提供消息处理的入口.

这里的消息不仅仅是协议,还有内部指令,事件等等逻辑入口,这也是为了响应线程模型作出的一种支撑,只要入口在此消息控制器内,那必然走期望的线程调度。

@Controller用于标识一个类为当前模块的消息控制器入口.

@Controller(threadGroup = ExecthreadGroup.PlayerThreadGroup) public class MailController { }

参数threadGroup标识此入口是按玩家线程组划分的,每个玩家之前的逻辑互不影响.

@Controller(threadGroup = ExecThreadGroup.ModuleThreadGroup) public class LoginController { }

这个就是以模块为单位划分的,就是说这个模块的所有逻辑都是以串型的方式在执行.

@PacketMapping注解用来标识一个封包映射到一个处理方法

@PacketMapping(opcode = 1001 state = State.CONNECTED) public void loginGame(Session session LoginGameReq request) { }

异步事件

引入异步事件主要是为了各模块的解耦,每当完成一个动作时,向系统发布一个事件,由关心的模块自己监听处理,可选择同步处理,异步处理,延迟处理。何时发布事件,当其他模块关心此动作时。比如击杀一只怪物,成就模块需要统计击杀进度,便可监听怪物死亡事件。比如获得道具时,任务系统模块要判定完成进度,BI模块需要上报等等都可以监听此事件,已达模块解耦

文档地址:http://blog.noark.xyz/article/2018/4/1/noark入门之极速体验/

猜您喜欢: