在开发一个游戏插件时,有些东西是可以共用的,有些东西则是每个游戏单独有的。如何将这些内容区别开来,将共用的抽象成库,有助于提高以后的开发速度
可以共用的部分
- 一套更加完善的命令处理机制
- bukkit自带的命令处理机制并不完美,需要写很多重复的代码,比如判断命令发送者的权限,是否是玩家等等,通过写一个代理来执行可以有效降低代码量。
- 在上一步的思路上,设计一套Annotation接口,把每个命令的要求通过Annotation配置,效率可以大大提升。
- 游戏初始化的逻辑
- 玩家排队的相关逻辑,如按顺序进入游戏、延迟传送等
- 一些游戏启动,监听加载的逻辑
- 游戏状态的控制
- 一个游戏从启动到结束的生命周期是类似的,由系统托管生命周期也有助于减少工作量
不可以共用的部分
- 每个游戏的逻辑
- 虽然很多游戏有相似之处,如:跑酷类型的游戏都是又一个点跑到另一个点,但是提取这种共用逻辑的价值不大,基本上没有重复使用的价值。除非是小游戏集合,有很多相似的游戏在一个包里面。
- 这个与游戏初始化的区别是,游戏初始化时每个小游戏必须要有的,但是这部分不一定。
- 监听操作
- 虽然很多监听操作是可以共用的,但是这样无疑会导致监听代码的复杂度直线上升。每个小游戏单独有自己的监听逻辑,启动时开启监听,结束时关闭监听。不仅有助于使代码更简洁,也能有效提高程序效率。