在之前,我们编写的模板类文件时,总有个子类继承模板类,来重解析父类的字符串配置奖励…
当项目功能越做越多时,这种很恶心的解析一次又一次的复制很是讨厌,多人之间写法又不完全一致,导致后期维护很头大…
来看一下Noark提供的转化器带来的新感受
比如副本通关奖励配置格式如下
道具编号:数量,道具编号:数量,道具编号:数量
在之前,我们编写的模板类文件时,总有个子类继承模板类,来重解析父类的字符串配置奖励…
当项目功能越做越多时,这种很恶心的解析一次又一次的复制很是讨厌,多人之间写法又不完全一致,导致后期维护很头大…
来看一下Noark提供的转化器带来的新感受
比如副本通关奖励配置格式如下
道具编号:数量,道具编号:数量,道具编号:数量
游戏开发中,策划就是导演,策划为了掌控游戏世界的规则,从而引入了策划配置文件.
Noark内置了CSV文件到JavaBean映射,由Excel到CSV文件请参考导表工具的实现
编码模板类文件ItemTemplate.java
@TplFile(“Item.tpl”)
public class ItemTemplate {
/** 道具编号 */
@TplAttr(name = “Id”)
内网的私服仓库安装请自行百度,这里只介绍一下Gradle发布私服仓库时的Gradle配置
build.gradle
引入插件
apply plugin: ‘maven-publish’
配置发布URL与账号密码
task sourceJar(type: Jar) {
记录一下发布Noark到Maven中央仓库过程
https://issues.sonatype.org/secure/Dashboard.jspa
第一步注册账号,创建工单,就是提个单子说明一下你要发布的信息
其中有个GroupID要注意,如果是自己买的域名,直接在描述证明一下你对这个域名的所有权,不要因为这个浪费时间
服务器正常都需要关注内存使用情况
常规获取内存使用情况可以使用Runtime或MemoryMXBean
Noark提供了一个内存监控服务,选择了Runtime实现,详情参考
xyz.noark.game.monitor.impl.MemoryMonitorService
在GameServerConfiguration类中添加如下代码
@Bean
只要是被IOC容器接管的类可以当作属性注入.
@Autowired
private VipService vipService;
新项目开始时,有时候为了调试封包协议,则会一个字节一字节的核对
有时候也会出现,服务器说你没发,客户端说我发了你没收到…
公司有高手时,则会使用一个工具来抓包分析,比如WPE,Wireshark等等
网络封包不同于Http抓包,上手还是有些难度的,所以我搞了一个配置直接开启封包日志输出
配置文件中添加如下配置
你还在为H5的前端链接头疼吗?你还在了解WebSocket的握手协议吗?WebSocket有没有粘包概念啊?
之前忘了说了,很不好意思,Noark在原来Tcp端口上实现了WebSocket协议的判定与处理,实现了Socket与WebSocket共存的效果
还记得Socket链接服务器那一串暗号吗?那之前是为Flash游戏留的安全沙箱策略文件准备的,分析了一下WebSocket判定也是可以实现的
引入异步事件主要是为了各模块的解耦,每当完成一个动作时,向系统发布一个事件,由关心的模块自己监听处理,可选择同步处理,异步处理,延迟处理。
何时发布事件,当其他模块关心此动作时
比如击杀一只怪物,成就模块需要统计击杀进度,便可监听怪物死亡事件。
比如获得道具时,任务系统模块要判定完成进度,BI模块需要上报等等都可以监听此事件,已达模块解耦
一个实现xyz.noark.core.event.Event接口的实现类
消息控制器,主要作用就是为每个模块提供消息处理的入口.
这里的消息不仅仅是协议,还有内部指令,事件等等逻辑入口,这也是为了响应线程模型作出的一种支撑,只要入口在此消息控制器内,那必然走期望的线程调度。
@Controller用于标识一个类为当前模块的消息控制器入口.
@Controller(threadGroup = ExecThreadGroup.PlayerThreadGroup)
public class MailController {