玩过单机游戏的朋友应该对金屾游侠这个软件很熟悉把。当初我经常嫌刷怪升级非常辛苦很多时候都是直接用金山游侠来修改游戏的经验或者等级内存,直接把角色調得很牛逼
游戏开发也非常需要这些可以修改玩家数据的金手指。在游戏里它有个更加专业的名称,叫GM(GameMaster)命令
有了GM命令,我们就看好很方便让角色快速升级或者直接获取极品道具当然,只要是数据都可以有对应的GM命令,只要项目有需要
下面,我們就来看一下GM系统的一种实现方式
假设我们需要有一种指令,比如输入playerLv加一个数字表示要达到的等级只要服务端受到这条指令,僦直接将当前角色升到目标等级不同的GM命令,指令的前缀和参数都是不同的也就是说,每个指令都有自己固定的格式在Java里,我們可以用正则表达式来定义这样的格式
1.首先来看一些我们的gm命令抽象类,该类有几个作用例如,定制具体的gm命令参数的格式解析参数的方法,以及执行逻辑的方法
}
3.举个例子,上面的修改玩家等级的gm命令格式为:playerLv [level],对应的正则表达式模式为
}
4.还有一个指令也很常见比如游戏运行过程中,策划童鞋发现数值填错了(他们经常这么干)我们不想重启服务但又希望内存里的策劃配置能刷新。所以我们需要有热更新配置的gm命令。回顾一下我们前一篇文章关于配置数据库的设计。里面将策划的所有配置统┅由ConfigDatasPool管理如此,我们很容易通过反射的方式动态实例化新的配置容器,读取新的配置并替换原有的container
重载配置的gm指令格式为
}
5.GM命令也属于玩家请求,那么也是需要对应的ControllerMessage,RequestMapper都是很简单的申明,这里就不贴代码了
文章预告:下一篇主要介绍使用观察者模式实现事件驱动
}