Noark入门之转化器

在之前,我们编写的模板类文件时,总有个子类继承模板类,来重解析父类的字符串配置奖励…

当项目功能越做越多时,这种很恶心的解析一次又一次的复制很是讨厌,多人之间写法又不完全一致,导致后期维护很头大…

来看一下Noark提供的转化器带来的新感受

比如副本通关奖励配置格式如下
道具编号:数量,道具编号:数量,道具编号:数量

Noark入门之策划配置

游戏开发中,策划就是导演,策划为了掌控游戏世界的规则,从而引入了策划配置文件.

Noark内置了CSV文件到JavaBean映射,由Excel到CSV文件请参考导表工具的实现

编码模板类文件ItemTemplate.java
@TplFile(“Item.tpl”)
public class ItemTemplate {
/** 道具编号 */
@TplAttr(name = “Id”)

Gradle发布私服仓库

内网的私服仓库安装请自行百度,这里只介绍一下Gradle发布私服仓库时的Gradle配置

build.gradle

引入插件
apply plugin: ‘maven-publish’

配置发布URL与账号密码
task sourceJar(type: Jar) {

发布Maven中央仓库小记

记录一下发布Noark到Maven中央仓库过程

0x00创建Jira工单

https://issues.sonatype.org/secure/Dashboard.jspa

第一步注册账号,创建工单,就是提个单子说明一下你要发布的信息

其中有个GroupID要注意,如果是自己买的域名,直接在描述证明一下你对这个域名的所有权,不要因为这个浪费时间

Noark入门之内存监控

服务器正常都需要关注内存使用情况

常规获取内存使用情况可以使用Runtime或MemoryMXBean

Noark提供了一个内存监控服务,选择了Runtime实现,详情参考
xyz.noark.game.monitor.impl.MemoryMonitorService

在GameServerConfiguration类中添加如下代码
@Bean

Noark入门之注入方式

普通类注入

只要是被IOC容器接管的类可以当作属性注入.

@Autowired
private VipService vipService;

接口注入

Noark入门之网络封包日志输出

新项目开始时,有时候为了调试封包协议,则会一个字节一字节的核对

有时候也会出现,服务器说你没发,客户端说我发了你没收到…

公司有高手时,则会使用一个工具来抓包分析,比如WPE,Wireshark等等

网络封包不同于Http抓包,上手还是有些难度的,所以我搞了一个配置直接开启封包日志输出

配置文件中添加如下配置

Noark入门之WebSocket

支持WebSocket吗?

你还在为H5的前端链接头疼吗?你还在了解WebSocket的握手协议吗?WebSocket有没有粘包概念啊?

之前忘了说了,很不好意思,Noark在原来Tcp端口上实现了WebSocket协议的判定与处理,实现了Socket与WebSocket共存的效果

还记得Socket链接服务器那一串暗号吗?那之前是为Flash游戏留的安全沙箱策略文件准备的,分析了一下WebSocket判定也是可以实现的

天生的WebSocket

Noark入门之异步事件

引入异步事件主要是为了各模块的解耦,每当完成一个动作时,向系统发布一个事件,由关心的模块自己监听处理,可选择同步处理,异步处理,延迟处理。

何时发布事件,当其他模块关心此动作时

比如击杀一只怪物,成就模块需要统计击杀进度,便可监听怪物死亡事件。
比如获得道具时,任务系统模块要判定完成进度,BI模块需要上报等等都可以监听此事件,已达模块解耦

0x00事件源

一个实现xyz.noark.core.event.Event接口的实现类

Noark入门之协议映射

0x00消息控制器

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

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

@Controller用于标识一个类为当前模块的消息控制器入口.
@Controller(threadGroup = ExecThreadGroup.PlayerThreadGroup)
public class MailController {